디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[잡담] 미연시 한패에 관한 짧은 노하우

르낭(183.109) 2019.10.09 05:50:10
조회 7385 추천 24 댓글 10
														

요즘 한패 하시는 분들도 많고 하니, 앞으로 더 많은 사람들이 한패를 성공시킬 수 있도록 짧은 지식이나마 공유해 볼까함


참고로 본인은 이제 갓 30대 들어설락 말락 하는 6년차 프로그래먼데, 리버싱 쪽은 아직 시작한지 1년도 안되는 왕초보 리린이임;;

혹시나 고수님들이 보시게 되면 그냥 한패 해본적 없는 일반인 대상으로 쓴 팁 정도라 생각하고 귀엽게 봐주셨음 좋겠음



미연시 한패는 보통 2~3가지 문제만 해결하면 만들 수 있고, 화려한 3D게임 한패에 비해 추가로 요구되는 지식이 상대적으로 적음

오늘은 내가 작업하는 3단계에 대해 간단히 소개해 보겠음



1. 언팩 / 리팩


- 사실상 한패의 알파이자 오메가.


먼저 한패를 하려면 게임에서 일본어 대사나 이미지 같은 리소스를 얻어내야 하는데, 그걸 게임 파일에서 추출하는게 언팩이고 다시 게임 파일로 만드는게 리팩임


LC-ScriptEngine도 그렇지만, 제법 좀 알려졌다 싶은 미연시 엔진들은 짱개들이 이미 리버싱을 다 해놨음.. github같은 곳 찾아보면 언팩 / 리팩 소스를 올려놓는 경우가 꽤 많음.

참고로 ONE이랑 MOON 작업에서 쓰고있는 LC-ScriptEngine용 툴은 https://github.com/Inori/FuckGalEngine 여기에 있던 언팩 소스 참고해서 만든 것임


Reallive 게임을 한글화 하고 싶은 경우엔 이미 강력한 툴인 RLDev가 있으므로 이걸 사용하는걸 추천함. RLDev는 코드도 깔끔하고 매뉴얼도 잘 써져있어서 접근성이 좋은 편임

RLDev를 제대로 써보고자 하는 사람들은 쿠드와후타/리버 한패 제작자분이 자세하게 써두신 글이 있으니 아래 글을 참고 하길 바람

(https://gall.dcinside.com/mgallery/board/view/?id=visualarts&no=4067&s_type=search_all&s_keyword=rldev&page=1)


만약 아무리 검색해봐도 다른 사람이 분석해놓은 코드가 없다든지, 리소스 파일에 암호화가 걸려있는데 암호키를 구하기 힘들다든지 하는 경우는 직접 exe를 어셈블리 디버거로 트레이스해가면서 파일 읽는 과정을 리버싱 해야하는데..


이런 경우 초보자들에겐 그냥 깔끔히 포기를 추천함..


검색능력이 정말 중요한 과정인데, 개인적으로는 이 과정이 한패를 할 수 있느냐 없느냐를 가장 크게 좌우하지 않을까 생각함




2. exe 한글 출력


- 일본 게임들은 대부분 문자를 읽어들이거나 폰트를 생성해서 그릴 때, Shift-JIS 문자셋을 사용함.

그래서 대사같은 걸 아무리 한글로 작성해봤자 게임 실행해보면 반각 카타카나같은 글씨로 깨져서 나오게 됨

이런 문제를 해결하기 위한 방법은 보통 2가지 방법이 있음

하나는 dll 인젝션을 통한 API 후킹인데, 이건 exe가 로드하는 dll중 하나를 내가 만든 dll로 교체해버리는 방법임.

RLDev의 rlbabel같은게 이 방식을 이용하고 있고, 이건 exe를 굳이 뜯지 않더라도 쓸 수 있다는 점, 여러 개 dll을 플러그인마냥 붙일 수도 있다는 점에서 상당히 강력한 방법임

다만 API 후킹은 dll 참조관계나 함수호출규약 같은 걸 잘 알아야해서 아무래도 내공이 좀 많이 필요한 분야임


exe에서 한글 출력하는 정도는 굳이 이렇게까지 안해도 되므로 나는 두번째 방법을 설명하겠음

두번째 방법은 exe를 직접 리버싱해서 수정하는 건데, 생각보다 과정이 단순해서 좀 오래된 게임이다 싶으면 이 방법을 추천함 (2010년판 LC-ScriptEngine, Reallive 1.4.8.8 까진 일단 잘먹혔음)


※ 리버싱은 자칫 잘못 건드리면 수정중이던 exe가 손상되기 쉬우니 미리 원본을 백업해두는 것이 좋음


먼저 exe를 ollydbg같은 디버거로 열어서 CreateFontA 혹은 CreateFontIndirectA로 심볼 검색을 해야 함


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db27206b0c3b794622907e21a51944d19327b5c8fde30768e24


얘네들은 charset 값이 포함된 구조체 포인터를 파라미터로 받는데, 이 charset 값이 HEX로 80이면 Shift-JIS, 81이면 CP949임.

그래서 디버거 트레이스로 CreateFontA 혹은 CreateFontIndirectA를 호출하기까지의 스택들을 보다보면 특정 위치에서 80을 파라미터로 넣는 걸 볼 수 있음.

(CreateFontA의 경우 운좋으면 API 파라미터로 상수를 바로 넣는 경우도 있지만, 대부분은 스택을 조사해가면서 따라가야 하는 경우가 많음)


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db21f6ab3dce3d70571576c74d69b20543d9a0c5c76fe59b93bc1


이런 함수들의 인풋값들을 다 찾아서 숫자 80을 81로 수정한 후에 저장하면 우선 한글 지원자체는 성공한 셈인데, 아직 이걸로 끝난게 아님.


일본 애들은 Shift-JIS를 출력 처리할때 반/전각 검사를 해서 글자 출력폭을 결정하므로, 이걸 한국어에 맞게 수정해주는 작업이 필요함..

(분명 전각문자를 썼는데 글자가 반씩 겹쳐버린다면 100% 이 문제라고 봐도 됨)

해당 게임이 Shift-JIS를 사용한다면 거의 대부분 아래와 같은 x86 명령어셋이 있을 것임


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db21f6ab3dce3d70571576c74d69b7b076cc90f094e545e40ceaa


대충 코드를 설명하자면, 2byte를 읽어들인 후 상위 1바이트가 81~9F, 혹은 E0~FC 범위에 있고 하위 1바이트가 40~7E, 혹은 80~FC에 있다면 전각, 아니면 반각 처리하겠다는 의미임. (경우에 따라 여기 적힌 범위값이 조금 차이날 수 있긴 함, 근본적으론 Shift-JIS 코드 테이블에서 전각 범위를 어디로 지정하느냐에 따른 차이)


CP949같은 경우엔 81이하만 아니면 전부 전각 처리 코드로 해도 상관 없으므로 아래처럼 바로 JMP하도록 코드 수정하면 모든 한글 셋을 전각 크기로 정상 인식시킬 수 있음


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db21f6ab3dce3d70571576c74d69b27013fcd5805122164567890


물론 꼭 이렇게만 해야하는 건 아니고 저 값을 직접 편집한다든지 해도 되지만 나같은 경우는 이게 속편했음

여튼 이런 코드가 아마 한두개가 아닐테지만 거의 다 비슷하게 생겨먹었으므로 전부 찾아가서 수정하면 됨



근데 사실 이 방법은 요즘 나오는 게임일 수록 안 될 확률이 높음.. exe나 dll같은 파일을 PE 파일이라고 하는데, 최근엔 PE파일들을 다 암호화키로 패킹해버리기때문에 뜯는 것부터가 일이라고 보면 됨..

물론 그렇다 해도 최악의 경우 API 후킹을 쓰면 어떻게든 한글을 보이게 할 순 있기 때문에 1번보다는 상대적으로 해볼만한 과정이 아닐까 생각함..



3. exe 텍스트 영역 수정

- 가끔 Win32API나 AFX 형식으로 짜여진 프로그램들은 종료 버튼 같은 걸 누를때 Msgbox가 출력되는데, 이런 곳에 일본어가 박혀있을 때 유용하게 쓸 수 있는 방법임

나같은 경우엔 한패 exe 파일이 읽어들이는 파일 경로나 이름을 바꿔서, 한패 파일과 기존 리소스 파일, 세이브 파일들을 공존시키기 위한 목적으로도 씀

이건 앞서 설명한 다른 방법보다 훨씬 쉬운데, 대부분의 경우 아래처럼 exe를 UltraEdit나 HXD 같은 헥스 에디터로 열어서 string 검색 후 수정하는 걸로 바로 해결 할 수 있음


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db21f6ab3dce3d70571576c74d69b765069cb0a0a6ea1e16dc9ec


간혹 Reallive.exe처럼 2byte짜리 유니코드 영문자를 들고 있어서 string 검색이 어려운 애들이 있는데, 이런 애들은 BinText라는 프로그램을 쓰면 해당 부분의 HEX 주소값을 쉽게 얻어낼 수 있음


viewimage.php?id=3bb4c333e4de39b47aac&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feafbf5b57a2ed8eaa24c03851eafa2ec8fb0db21f6ab3dce3d70571576c74d69b25066dc80c0e64ac5b65862d


오늘은 대충 여기까지..


이 외에 필수는 아니지만 한패할 때 써먹기 좋은 지식들이라고 하면 SVN, GIT같은 형상관리나 Google Sheet를 이용한 한패 협업 방법, NSIS 인스톨러 제작 방법 정도가 있을 것 같은데 이것들은 담에 또 시간날때 한번 풀어보도록 하겠음

추천 비추천

24

고정닉 8

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2853 설문 연인과 헤어지고 뒤끝 작렬할 것 같은 스타는? 운영자 24/04/22 - -
2854 AD [원신] 신규 5성 아를레키노 등장 운영자 24/04/26 - -
29464 공지 Key 갤러리가 개설되었습니다 비주얼아츠갤갤로그로 이동합니다. 23.08.16 512 3
19684 공지 Key 작품별 공식/창작 번역 모음 [5] 넬케갤로그로 이동합니다. 21.05.08 5388 13
11 공지 KEY社 게임 한글패치/번역본 정리글 [20] 마사마못갤로그로 이동합니다. 18.07.18 35241 45
14 공지 KEY게임 DL및 구매 사이트 [12] 마사마못갤로그로 이동합니다. 18.07.18 11151 16
8770 공지 신문고 [7] 마사마못갤로그로 이동합니다. 20.03.06 2028 0
29497 잡담 이주한 KEY 갤러리로 오세요 [1] 오무스비갤로그로 이동합니다. 23.10.03 2181 10
29517 키네틱 종점의 스텔라 스팀판도 한패 됨? [2] 만지구미갤로그로 이동합니다. 03.01 171 0
29516 Key 카기나도 보는데 [1] ㅇㅇ(14.58) 03.01 78 0
29515 Key 플라네타리움 스팀판 차이 질문좀 [1] ㅇㅇ갤로그로 이동합니다. 02.27 63 0
29510 잡담 one 리메이크 파일 뜯어보는데 텍스트를 못찾겠음 [3] ㅇㅇ(218.152) 23.12.26 261 0
29508 잡담 남은 3컷 어떻게 얻음 [1] 185181(112.152) 23.11.20 315 0
29507 에어 air tva 애니메이션 자막은 딱히 없음? [3] ㅇㅇ(121.134) 23.11.04 243 0
29506 엔/샬 일본가서 앨범삼 [2] 무기상갤로그로 이동합니다. 23.11.01 246 2
29505 프리마 아이스크림 더빙 [1] いよわ갤로그로 이동합니다. 23.11.01 167 0
29503 잡담 ISLAND 게임 해본 사람 있음? [2] 185181(112.152) 23.10.29 187 0
29502 서머포 섬포 스팀판하는데 프롤로그 목소리 누구임? [2] ㅇㅇ(121.190) 23.10.23 269 0
29501 프리마 프리마돌 애니 너무 재밌게봤는데 [1] ㅇㅇ갤로그로 이동합니다. 23.10.15 180 0
29499 클라나 에프터스토리 보다보면 이런게 궁금함 [3] 올리비에갤로그로 이동합니다. 23.10.10 196 0
29498 잡담 쿠드 와후타 어디서 받음 [1] ㅇㅇ(112.150) 23.10.07 197 0
29496 서머포 섬포 샀는데 왜 한패 안되냐 ibol15(113.199) 23.10.01 140 0
29495 잡담 영상보는데 갑자기 여기서 나오시면... ㅇㅇ갤로그로 이동합니다. 23.09.29 167 0
29494 프리마 여초딩 호객행위...mp4 마나카논갤러리갤로그로 이동합니다. 23.09.26 272 0
29491 프리마 프리마돌이란거 좆망한거임...? seeu갤로그로 이동합니다. 23.09.24 196 0
29490 Key 스팀판 리틀버스터즈, 리라이트+번역은 어떻게 구해야할까요? [2] 수카마짱배꼽핥짝(106.101) 23.09.23 301 0
29489 잡담 안녕하세요 [2] 코토부키츠무기갤로그로 이동합니다. 23.09.18 324 6
29487 잡담 씹덕갤 순회 열차입니다. [1] ㅇㅇ(210.97) 23.09.10 329 0
29486 잡담 섬포하는ㄴ데 왜 찝찝하게 굴지 [1] ㅇㅇ(211.173) 23.09.10 220 0
29483 클라나 클라나드 블루레이 조금 아쉬운점 ㅇㅇ(182.230) 23.09.01 193 1
29482 서머포 섬포) 노미키와 시키랑 연결고리 있음? [3] 3y3s(61.33) 23.08.29 224 1
29481 서머포 이제 alka 들어갑니다.. [1] 응긔2잇갤로그로 이동합니다. 23.08.29 248 0
29480 에어 이전? 무슨 소리야; [7] ㄴㅅㄷ갤로그로 이동합니다. 23.08.27 379 1
29479 잡담 아쉽지만 폐쇄는 하지 말아줘 [1] DCDA갤로그로 이동합니다. 23.08.26 668 9
29478 잡담 갤 이주했습니다 key 갤러리로 [1] ㅇㅇ갤로그로 이동합니다. 23.08.22 1032 12
29477 리토바 오늘 생일인 캐릭터 열쇠중독갤로그로 이동합니다. 23.08.22 131 2
29476 서머포 혹시 섬포 성지순례 갔다온사람 있음? [5] ㅇㅇ(126.34) 23.08.21 193 0
29475 잡담 키겜 뉴빈데 게임 추천받을 수 잇나요 [4] ㅇㅇ(116.125) 23.08.19 266 0
29474 헤번레 마루야마 카나타 꼴짤 왤케 없나?? [2] ㅇㅇ(125.177) 23.08.18 240 0
29473 카논 "빚갤을 잊어 주세요." [1] ㅇㅇ(220.117) 23.08.18 769 5
29472 잡담 Key 갤러리로 [2] ㅇㅇ(211.234) 23.08.17 804 5
29471 Key 카에클 세 작품에 배경이 되는 지역이 혹시 있나? [3] SU_ST갤로그로 이동합니다. 23.08.17 231 1
29470 잡담 갤 이주했나요 [3] ㅇㅇ(221.167) 23.08.17 296 0
29469 서머포 8월 17일의 밤을 알리는 [2] 초록색양서류갤로그로 이동합니다. 23.08.17 161 2
29467 잡담 1. 시키를 들어올린다. [4] ㅇㅇ(211.177) 23.08.17 226 1
29465 잡담 나도 에어 재밌게 할 수 있을까? [5] ㅇㅇ갤로그로 이동합니다. 23.08.16 212 0
12544 Key Key 게임 소개 및 발매, 한패 정보 [14] 캐돌갤로그로 이동합니다. 20.08.13 7094 27
1561 잡담 Key 디시콘 모음 [44] 비주얼아츠마이너갤러리갤로그로 이동합니다. 19.01.30 5276 13
1166 Key 공지, 말머리 설명, 주요글 모음 [4] 비주얼아츠마이너갤러리갤로그로 이동합니다. 18.12.10 4346 10
29463 엔/샬 [번역]【코믹】여행하는 천사짱 제3화(전편) [6] 원평갤로그로 이동합니다. 23.08.16 393 11
29462 잡담 근데 념글은 어쩌고 [3] DCDA갤로그로 이동합니다. 23.08.16 273 0
29461 잡담 시원섭섭하당... 마사마못갤로그로 이동합니다. 23.08.16 164 0
29460 잡담 만약 비주얼 아츠갤이 떠난다 하더라도 인생갤로그로 이동합니다. 23.08.16 182 0
29459 서머포 섬포 진엔딩까지 끝냈다… 찐막후기 남겨봄(스포) [3] ㅇㅇ갤로그로 이동합니다. 23.08.16 188 0
29458 잡담 갤러리 이주 의견 수렴 [12] 비주얼아츠갤갤로그로 이동합니다. 23.08.16 553 0
29457 잡담 이주는 대환영인데 여기 있는 유익글들이 아쉽네 [5] ㅅㅎ갤로그로 이동합니다. 23.08.16 264 0
29456 Key Key갤 수복 ㅅㅅㅅㅅ [9] 캐돌갤로그로 이동합니다. 23.08.16 748 14
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2