계속 해서 세번째 글을 올립니다.
이전글은 아래 link를 이용하세요
원래는 짧게 설명 될듯 생각 했는데 - 글을 작성하다 보니 의외로 길어 졌습니다.
그냥 patch data만 올려도 되겠지만, 나름의 뒷구멍 파시는 분에게 혹시나 참고 자료가 될듯 하여 자세히 기술하다보니 많이 길어 졌습니다.
지난글에서 해결한 사항은 아래와 같습니다.
나머지 해결해야 할 문제: GPS 인식 직후 화면 먹통 문제
오늘은 마지막으로 "GPS 인식 직후 제대로 보이기" 입니다.
이미 지난글에 언급했듯이 GPS 인식 후 문제도 결국 두번째글에서 해결한 사항과 동일합니다.
맵피는 하나의 window에 대해서 지도도 보이고 dialog box도 보입니다 그런데 어떤 상황에서 이 공용 window의 크기가 뒤틀려 버리고, 이후로는 지도를 영영 볼수가 없는게 문제의 핵심이었습니다.
그럼 이미 지난 글에서 해결책으로 사용한 MoveWindow 관련 동작이 문제의 핵심이라 생각 할 수 있습니다.
무작정 MoveWindow를 검색 해 봅니다. IDA에서 MoveWindow 호출 부분에서 'X' 키를 누르면 모든 MoveWindow 호출 위치가 짠~ 하고 나타 납니다.
다행이 모두 6곳만이 있습니다. 전체 code에서 단지 6개면 시도 해 볼만한 게임입니다!
그 중에 한곳(맨 먼저 등장)은 이미 지난글에서 패치한 그 부분 입니다.
그래서 후보군은 5개로 좁혀 집니다.
쭉 정리하면 아래와 같습니다. [MoveWindow 호출 부분 6곳]
이미 MoveWindow 기능은 이전글에서 파악 했기에, 쭉 나열하고 부차적으로 설명 하겠습니다.
실은 아래 내용은 제가 삽질 하면서 기록한 내용을 거의 그대로 가져 왔습니다.
이런 일에는 모든 작업을 기록을 해 두어야 좀 쉽습니다.(머리가 나빠 하루 지나면 까먹는다는 ㅎㅎ)
자~ 마직막을 달려 가고 있습니다.
[1]은 이미 이전글에 패치를 하여 GPS정보 dialog를 제대로 보이게끔 완성 했습니다.
나머지 MoveWindow를 모조리 없애 버리고 확인 하면 좋겠지만... 무언가 삑사리가 발생하겠죠.
그래서 아래와 같이 패치를 종류별로 나열 했습니다.
당연 [1]번 패치 까지 설정한 상태에서 아래의 2가지 조합을 먼저 처리해서 test 해 봅니다.
1. [2]번 패치 적용
실행 했습니다. GPS 인식도 해 보았습니다.
넵! 아무런 문제가 없이 동작 완료 했습니다. 끝을 봤다고 할까요
2. [3]번 피치 적용
실행 했습니다. 그런데 320x240 화면이 세로로 중앙에 표시가 되더군요 ㅋㅋㅋ
넵! 실행에는 문제가 없습니다. 그런데 Title / Softkey가 아래에 있는 app.의 것이 보이기 때문에 조작 실수가 발생 할 듯 하여 - 이 버전을 사용 안하는게 좋을 듯 합니다.
그리고~ 나머지 [4], [5], [6]은 셋트 메뉴이므로 [2][4][5][6] 과 [3][4][5][6] 두개를 비교 해 보았습니다.
바꾼것은 Intro 화면이 가로가 아닌 세로로 나오더군요 ㅋㅋㅋ
넵 그래서 최종적으로 [2]번 사항만 적용 하면 된다는 것이 결론입니다.
그런데 이 [2] 패치 하면서 맵피 동작을 살펴 봤는데 - GPS 인식 직후에 화면이 1dot 정도 구성이 달라 지더군요 - 각족 button이 1pixel인가 위로 올라 갑니다. 즉 화면에 대해서 이상한 짓을 한다는 것이 제 눈에 보였고 - 결국 MoveWindow가 그 단서라는 것은 이 현상을 보고서도 확인이 된 것이죠.
자 이제 끝입니다... 최종 정리 하겠습니다.
글이 길어서 어떻게 패치 하라는 것인지 헷갈릴 듯 하여... 최종 종합 정리 입니다.
320x240 강제 설정 패치 부분
1 0x038684
[ F9 9C 07 EB ] --> [ 05 0D A0 E3 ]
2 0x038694
[ F5 9C 07 EB ] --> [ F0 00 A0 E3 ]
3 0xC97E0
[ A2 58 05 EB ] --> [ 05 0D A0 E3 ]
4 0xC97F0
[ 9E 58 05 EB ] --> [ F0 00 A0 E3 ]
5 0xCA8C4
[ 69 54 05 EB ] --> [ 05 0D A0 E3 ]
6 0xCA8D4
[ 65 54 05 EB ] --> [ F0 00 A0 E3 ]
GPS정보 dialog 제대로 보이게 패치
[ A7 23 08 EB 01 10 A0 E3 ] ---> [ 00 00 80 E3 01 10 A0 E3 ]
GPS 인식 직후 화면 제대로 보이게 패치
[ CA 96 07 EB 28 D0 8D E2 70 80 BD E8 ] ---> [ 00 10 81 E3 28 D0 8D E2 70 80 BD E8 ]
** 반드시 RealVGA 혹은 ForceHires 유틸리티를 사용 하셔서 96 dpi 모드로 실행 하셔야 합니다.
** 그리고 그냥은 GPS연결이 제대로 안됩니다.
꼭 GpsGate등의 유틸리티로 새로운 포트를 할당하고, Mappy는 그 포트를 이용 하도록 하셔야 합니다.
이 부분은 맵피의 버그라고 봅니다. 예전 M4300 사용 때에도 부팅 직후 GPS연결하면 먹통이 되었습니다.
** 상황에 따라 맵피가 먹통 됩니다.(아주 간혹 발생) 이 경우 다시 부팅하고서 실행 해야 하더군요.
역시 맵피 자체의 문제로 인식이 됩니다.
실행화면 캡쳐 내용입니다.
.
이전글은 아래 link를 이용하세요
원래는 짧게 설명 될듯 생각 했는데 - 글을 작성하다 보니 의외로 길어 졌습니다.
그냥 patch data만 올려도 되겠지만, 나름의 뒷구멍 파시는 분에게 혹시나 참고 자료가 될듯 하여 자세히 기술하다보니 많이 길어 졌습니다.
지난글에서 해결한 사항은 아래와 같습니다.
첫번째글: Mappy 실행 후 첫 지도 화면 보이기
두번째글: GPS정보 화면 제대로 보이기
두번째글: GPS정보 화면 제대로 보이기
나머지 해결해야 할 문제: GPS 인식 직후 화면 먹통 문제
오늘은 마지막으로 "GPS 인식 직후 제대로 보이기" 입니다.
이미 지난글에 언급했듯이 GPS 인식 후 문제도 결국 두번째글에서 해결한 사항과 동일합니다.
맵피는 하나의 window에 대해서 지도도 보이고 dialog box도 보입니다 그런데 어떤 상황에서 이 공용 window의 크기가 뒤틀려 버리고, 이후로는 지도를 영영 볼수가 없는게 문제의 핵심이었습니다.
그럼 이미 지난 글에서 해결책으로 사용한 MoveWindow 관련 동작이 문제의 핵심이라 생각 할 수 있습니다.
무작정 MoveWindow를 검색 해 봅니다. IDA에서 MoveWindow 호출 부분에서 'X' 키를 누르면 모든 MoveWindow 호출 위치가 짠~ 하고 나타 납니다.
다행이 모두 6곳만이 있습니다. 전체 code에서 단지 6개면 시도 해 볼만한 게임입니다!
그 중에 한곳(맨 먼저 등장)은 이미 지난글에서 패치한 그 부분 입니다.
그래서 후보군은 5개로 좁혀 집니다.
쭉 정리하면 아래와 같습니다. [MoveWindow 호출 부분 6곳]
이미 MoveWindow 기능은 이전글에서 파악 했기에, 쭉 나열하고 부차적으로 설명 하겠습니다.
실은 아래 내용은 제가 삽질 하면서 기록한 내용을 거의 그대로 가져 왔습니다.
이런 일에는 모든 작업을 기록을 해 두어야 좀 쉽습니다.(머리가 나빠 하루 지나면 까먹는다는 ㅎㅎ)
MoveWindow는 단지 6개 부분에서 호출 됨
[1] MAIN_DIALOG_GPS_INFORMATION:loc_277A8 --> 완료!: GPS정보 - Dialog box 부분 참조
BL MoveWindow --> 이미 수정한 부분
아래 3개는 동일 함수내에 즉 같은 의미의 MoveWindow 호출 (3 case에 따른 중복 호출)
----> 원본 code를 똑똑하지 않게 작성 했다는 의미입니다. ['도배' 했다는 거죠 ㅋㅋ]
패치 하지 말것 - 최초 Intro 화면에 대한 가로/세로 변환임 - 그냥 두어야 가로로 인트로가 나옴!
-----> ORR R0, R0, #0 00 00 80 E3
[4] sub_1F9810+184 : Main Frame window title text 등을 설정 하는 듯 - 이넘에 관심 가지자!
[5] sub_1F9810+1EC :
[6] sub_1F9810+248 :
[1] MAIN_DIALOG_GPS_INFORMATION:loc_277A8 --> 완료!: GPS정보 - Dialog box 부분 참조
BL MoveWindow --> 이미 수정한 부분
원본: A7 23 08 EB 01 10 A0 E3
수정: 00 00 80 E3 01 10 A0 E3
수정: 00 00 80 E3 01 10 A0 E3
[2] sub_4AAC8+54 : 무언가 중요해 보임 - 이 함수 호출 후 / Update window 부르는 함수확인
.text:0004AB1C BL MoveWindow 부분을 NOP 처리 해 보자
ORRR1, R1, #0 00 10 81 E3 로 설정 하기
원본: CA 96 07 EB 28 D0 8D E2 70 80 BD E8
수정: 00 10 81 E3 28 D0 8D E2 70 80 BD E8
수정: 00 10 81 E3 28 D0 8D E2 70 80 BD E8
[3] sub_DA550+44 : 이넘도 뭔가 수상함 - GetTickCount 부분에서도 호출 됨
특히 EualRect 등으로 확인 후 이 함수를 호출하고 있음.
특히 EualRect 등으로 확인 후 이 함수를 호출하고 있음.
ORRR1, R1, #0 00 10 81 E3 로 설정 하기
원본: 2C 58 05 EB 08 D0 8D E2 10 80 BD E8
수정: 00 10 81 E3 08 D0 8D E2 10 80 BD E8
수정: 00 10 81 E3 08 D0 8D E2 10 80 BD E8
아래 3개는 동일 함수내에 즉 같은 의미의 MoveWindow 호출 (3 case에 따른 중복 호출)
----> 원본 code를 똑똑하지 않게 작성 했다는 의미입니다. ['도배' 했다는 거죠 ㅋㅋ]
패치 하지 말것 - 최초 Intro 화면에 대한 가로/세로 변환임 - 그냥 두어야 가로로 인트로가 나옴!
-----> ORR R0, R0, #0 00 00 80 E3
[4] sub_1F9810+184 : Main Frame window title text 등을 설정 하는 듯 - 이넘에 관심 가지자!
BL MoveWindow
원본: 2C DB 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
원본: 2C DB 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
[5] sub_1F9810+1EC :
BL MoveWindow
원본: 12 DB 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
원본: 12 DB 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
[6] sub_1F9810+248 :
BL MoveWindow
원본: FB DA 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
원본: FB DA 00 EB 00 00 96 E5
수정: 00 00 80 E3 00 00 96 E5
자~ 마직막을 달려 가고 있습니다.
[1]은 이미 이전글에 패치를 하여 GPS정보 dialog를 제대로 보이게끔 완성 했습니다.
나머지 MoveWindow를 모조리 없애 버리고 확인 하면 좋겠지만... 무언가 삑사리가 발생하겠죠.
그래서 아래와 같이 패치를 종류별로 나열 했습니다.
당연 [1]번 패치 까지 설정한 상태에서 아래의 2가지 조합을 먼저 처리해서 test 해 봅니다.
1. [2]번 패치 적용
실행 했습니다. GPS 인식도 해 보았습니다.
넵! 아무런 문제가 없이 동작 완료 했습니다. 끝을 봤다고 할까요
2. [3]번 피치 적용
실행 했습니다. 그런데 320x240 화면이 세로로 중앙에 표시가 되더군요 ㅋㅋㅋ
넵! 실행에는 문제가 없습니다. 그런데 Title / Softkey가 아래에 있는 app.의 것이 보이기 때문에 조작 실수가 발생 할 듯 하여 - 이 버전을 사용 안하는게 좋을 듯 합니다.
그리고~ 나머지 [4], [5], [6]은 셋트 메뉴이므로 [2][4][5][6] 과 [3][4][5][6] 두개를 비교 해 보았습니다.
바꾼것은 Intro 화면이 가로가 아닌 세로로 나오더군요 ㅋㅋㅋ
넵 그래서 최종적으로 [2]번 사항만 적용 하면 된다는 것이 결론입니다.
그런데 이 [2] 패치 하면서 맵피 동작을 살펴 봤는데 - GPS 인식 직후에 화면이 1dot 정도 구성이 달라 지더군요 - 각족 button이 1pixel인가 위로 올라 갑니다. 즉 화면에 대해서 이상한 짓을 한다는 것이 제 눈에 보였고 - 결국 MoveWindow가 그 단서라는 것은 이 현상을 보고서도 확인이 된 것이죠.
자 이제 끝입니다... 최종 정리 하겠습니다.
글이 길어서 어떻게 패치 하라는 것인지 헷갈릴 듯 하여... 최종 종합 정리 입니다.
"차례" "파일offset"
[ 원본 hex code ] --> [ 수정 hex code ]
[ 원본 hex code ] --> [ 수정 hex code ]
1 0x038684
[ F9 9C 07 EB ] --> [ 05 0D A0 E3 ]
2 0x038694
[ F5 9C 07 EB ] --> [ F0 00 A0 E3 ]
3 0xC97E0
[ A2 58 05 EB ] --> [ 05 0D A0 E3 ]
4 0xC97F0
[ 9E 58 05 EB ] --> [ F0 00 A0 E3 ]
5 0xCA8C4
[ 69 54 05 EB ] --> [ 05 0D A0 E3 ]
6 0xCA8D4
[ 65 54 05 EB ] --> [ F0 00 A0 E3 ]
[ A7 23 08 EB 01 10 A0 E3 ] ---> [ 00 00 80 E3 01 10 A0 E3 ]
[ CA 96 07 EB 28 D0 8D E2 70 80 BD E8 ] ---> [ 00 10 81 E3 28 D0 8D E2 70 80 BD E8 ]
[안내]
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여 M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
이 파일을 이용해서 맵피를 사용 하기 위해서는 반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.
여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.
Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.
아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.
패치요약 파일:
위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.
*당연히 Mappy 5.5.1 버전 원본이 있어야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
VPATCHPROMPT.EXE (patchfile) (sourcefile) (outputfile)
아래 제공되는 파일은 맵피 PDA 라이센스를 소유 하고 있으나 M&Soft 에서 이해할 수 없는 정책을 주장하여 M480, M4800 에서는 사용 할 수 없는 호환성을 해결하고자 개인적으로 만든 파일 입니다.
관련 법을 준수하시기 바랍니다.
컴퓨터프로그램 보호법 - 역분석 관련 법
제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
[본조신설 2001·1·16][[시행일 2001·7·17]]
제12조의2 (프로그램코드역분석)
①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다.
②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다.
1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우
2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우
[본조신설 2001·1·16][[시행일 2001·7·17]]
이 파일을 이용해서 맵피를 사용 하기 위해서는 반드시 맵피 PDA 라이센스를 소유 하고 있으며, 또한 Mappy 전체 이미지를 정상적으로 download하신 분 만이 사용이 가능 합니다.
여기서 안내드리는 내용은 직접 patch를 할 수 있는 정보와 patch용 요약자료만 공유 합니다.
패치 프로그램과 Mappy라이센스, Mappy 인스톨 파일은 개인 소유의 것을 이용하셔야 합니다.
Patch 파일은 Free software인 VPatch 를 사용 했습니다. Google 등의 검색엔진을 이용하셔서 개인이 구하셔야 합니다.
이 프로그래과 제공하는 data를 이용하여 발생하는 법적인 문제에 대해서는 사용하는 당사자들의 책임임을 밝혀 둡니다.
아래 파일에 대해서는 그 어떠한 질문에 대해서도 답변을 드리지 않습니다.
패치요약 파일:
위 파일은 VPatch 라는 프로그램을 설치하고난 뒤에 전용 프로그램을 이용하시면 됩니다.
*당연히 Mappy 5.5.1 버전 원본이 있어야 합니다.
*Patch 실행 법은 VPatch 설명서를 참고 하세요.
VPATCHPROMPT.EXE (patchfile) (sourcefile) (outputfile)
** 그리고 그냥은 GPS연결이 제대로 안됩니다.
꼭 GpsGate등의 유틸리티로 새로운 포트를 할당하고, Mappy는 그 포트를 이용 하도록 하셔야 합니다.
이 부분은 맵피의 버그라고 봅니다. 예전 M4300 사용 때에도 부팅 직후 GPS연결하면 먹통이 되었습니다.
** 상황에 따라 맵피가 먹통 됩니다.(아주 간혹 발생) 이 경우 다시 부팅하고서 실행 해야 하더군요.
역시 맵피 자체의 문제로 인식이 됩니다.
.
'소프트웨어 > 역공 [리버스엔지니어링]' 카테고리의 다른 글
[역공] 맵피(Mappy)를 M480,M4800 에서 사용가능 하게 분석, 패치 [5.7.1 버전 기준] (35) | 2009.08.07 |
---|---|
[역공] 맵피(Mappy)를 M480,M4800 에서 사용가능 하게 분석, 패치 [090604 5.7.0 patch 버전 기준] (17) | 2009.06.07 |
[역공] 맵피(Mappy)를 M480,M4800 에서 사용가능 하게 분석, 패치 [5.7.0 버전 기준] (12) | 2009.06.02 |
[역공] 맵피(Mappy)를 M480,M4800 에서 사용가능 하게 분석, 패치 - 두번째 이야기 (2) | 2009.05.13 |
[역공] 맵피(Mappy)를 M480,M4800 에서 사용가능 하게 분석, 패치 (9) | 2009.05.12 |