본문 바로가기

게임 한글화/직전신장전

직전신장전 한글 띄우기 작업 - 2

글을 쓴다 해도 누가 볼지는 모르겠지만 누군가 필요할 때 보러와주겠죠. -_-;


이건 단순히 한글 띄우기 작업 글이지, ASSEM 강좌가 아닙니다.
----------------------------------------------------------------------------------------------------------------

저번 글에서 'CREATEFONTA' 함수를 불러오는 주소를 찾아 그 위에 있는 PUSH 80 -> PUSH 81

수정하는 작업을 했지만 한글은 전혀 나오지 않았습니다.


왜 그런지는 제 머리로는 모르기 때문에 검색을 해본 결과(-_-)

전각, 반각과 관련있는 글 (제 글에서는 통칭 '위의 글')


위의 글을 찾게 됩니다.

그러니까 결국은 지금의 직전신장전은 한글을 1Byte로 쪼개서 반각으로 인식한다는 소리입니다.


그러면 작업을 위해 ollydbgekd4.exe를 열어봅시다.

그리고 Ctrl + F를 누릅니다.


'cmp eax, 9f' 로 검색해봅시다. ('cmp eax, 9f' 로 검색할 시 한번에 검색됩니다.)

Entire block를 체크할 시 맨 위에서부터 검색하고, 체크 안할 시 선택된 주소부터 검색합니다.

"저 위의 글에서는 cmp al, 9f로 되어 있는데 왜 eax로 하냐" 라는 분이 계실 것 같은데요.

직접 검색해보세요. 안 나옵니다. 그래서 eax로 검색해보니 검색돼서...



CMP EAX, 9F 로 검색하셨으면 위의 스샷과 같이 잘 찾았을겁니다.

이제 위의 글과 같이 명령어를 수정합시다.

명령어 수정 방법은 '직전신장전 한글 띄우기 작업 - 1' 에서 설명했습니다.

한번 더 설명하자면...

수정해야될 명령어는 CMP EAX, 9FCMP EAX, E0 입니다.

그럼 그 명령어를 선택하고 Space Bar 를 누릅니다. 혹은 오른쪽 마우스 -> Assemble 을 선택합니다.

그러면 창이 하나 뜨는데, 그 창에 적혀있는 Text를 수정하면 됩니다.

CMP EAX, 9F -> CMP EAX, 0C8,  CMP EAX, 0E0 -> CMP EAX, 0A1 로 수정합니다.

아, 명령어 수정하실 때 A0 ~ FF 의 숫자는 반드시 앞에 '0' 을 붙이셔야합니다.



이게 끝이 아닙니다. 하나 더 남아 있습니다.


이번엔 Ctrl + F 를 눌러 검색 창을 띄우고 'add edx, 161'
을 검색해봅시다.


뭐 이렇게 찾아갈텐데요.

ADD EDX, 0E1 -> ADD EDX, 161, ADD EDX, 161 -> ADD EDX, 0E1 로 수정해줍시다.


수정 다 한 다음에는 반드시 저장을 해줍시다.

저장 하는 방법도 역시
'직전신장전 한글 띄우기 작업 - 1' 에서 설명했습니다.

그렇기 때문에 따로 설명하지 않겠습니다.

저장 한 다음, exe 파일을 실행시키면~






그러면 이 부분도 수정해봅시다.


주소 상으로는 '13b' 입니다. '여기도 한글 테스트' 라고 적고 저장했습니다.

한번 실행해보겠습니다~



엇, 한글은 잘 나오는데 이상하게 공백은 출력이 안 되는 것 같군요...;

분명히 '한글 테스트 ' 라고 적은 곳은 공백이 잘 출력 됐는데...;

해결해야 할 문제가 또 생겼군요.... -_-;



'직전신장전 한글 띄우기 작업 - 3' 에서 뵈요~