기 타 고전게임 디셈블(?)
2012.05.09 02:40
안녕하세요 윈포럼 회원여러분
예전부터 제가 좋아하던 고전게임인 임진록을 요즘 하고 있는데요
스타 인구제한처럼 게임자체내에서 캐릭터 생산 제한을 두고 있어서
이걸 풀어보고자 알지도 못하는 디셈블 프로그램인 w32dasm 도 인터넷으로 찾아보고 해서
어떻게 어떻게 실행파일내 캐릭터를 생산할 수 없습니다 부분까지는 찾아내었습니다!
근데 제가 프로그래밍을 할줄 아는것도 아니어서
위 부분을 어떻게 수정해야 할지 질문드립니다
혹시 몰라 실행파일도 같이 올립니다
윈도우포럼 회원 여러분의 많은 관심 부탁드립니다 뿡
댓글 [5]
-
초월신 2012.05.09 07:07 -
살라똥따라삐 2012.05.09 12:13
감사합니다 구글의 힘을 더 빌려봐야겠네요
-
초월신 2012.05.09 14:59 점심먹고 나서 시간이 좀 남길래 오랜만에 생각나서 임진록 받아서 한판 해 봤네요.
찾아보니 고쳐야 할 부분은 410EF0 부터 있군요.
:00410EF0 mov ecx, offset dword_558E18
:00410EF5 cmp eax, 96h
:00410EFA mov [ecx], eax
:00410EFC jle short loc_410F04
:00410EFE mov dword ptr [ecx], 96h
:00410F04 add ecx, 4
:00410F07 cmp ecx, offset dword_558E38
:00410F0D jl short loc_410EF5
요런 코드가 나옵니다.
여기서 볼 때 :00410EF5 에서 비교하는 96h와 :00410EFE 에서 집어넣는 96h 라는게 인구제한 입니다.
캠페인 할 때는 인구제한이 700 (2BCh)인데, 임의게임(스커미쉬?)할 때는 150 (96h)으로 제한하더군요.
맵이 100x100정도로 작으면 인구수도 100 (64h)로 제한하기도 하고....
어쟀든 이 코드는 아래와 같이 바뀌어야 합니다.
:00410EF0 mov ecx, offset dword_558E18
...
(nop로 채움)
...
:00410EFE mov dword ptr [ecx], (원하는 인구 제한)h
:00410F04 add ecx, 4
:00410F07 cmp ecx, offset dword_558E38
:00410F0D jl short loc_410EF5
실행 파일에서 헥스코드로 찾으면 (인구수 700으로 늘린다 치고)
B9188E55003D9600000089017E06C70196000000
이 코드가
B9188E5500909090909090909090C701BC020000
요렇게 바뀌는거죠.
단, 이건 임의게임(대전 모드)-혼자하기 모드의 인구제한만 고쳐본 겁니다.
캠페인의 인구제한까지 없애려면 다른부분을 고쳐야 되구요,
맵크기에 따라 또 다른 부분에서 인구수를 제한할지도 모르겠군요.
멀티플레이에선 또 어떨런지도 모르겠구요....
(시간관계상 한판 밖에 안해봐서 정확히는 모르겠네요....)
------------------사족-------------------
인구수를 비교해서 에러메시지를 출력하는 부분을 먼저 찾긴 했는데,
인구수 제한과 관련된 값이 여러군데 있는듯 해서, 한군데만 고쳐서 될런지는
확인을 해보지 않으면 알 수가 없겠더군요.
그래도 일단 그 부분도 보여드리자면,
:00451993 mov eax, [esi+0Ch]
:00451996 mov edx, dword_558E18[eax*4]
:0045199D mov edi, dword_558DF8[eax*4]
:004519A4 cmp edx, edi
:004519A6 jg short loc_4519CF
:004519A8 cmp eax, dword_496F98
:004519AE jnz short loc_4519BF
:004519B0 push offset unk_581298
:004519B5 push 0
:004519B7 call (에러 문자열 가져오는 함수)
:004519BC add esp, 8
:004519A4 에서 비교하는 값 중에 EDX가 제한값이고, EDI가 현재 인구수 입니다.
따라서
:004519A6 jg short loc_4519CF
이 코드를
:004519A6 jmp short loc_4519CF
로 바꾸면 인구제한에 걸리지 않을겁니다. (무한)
하지만 여기만 고쳐서 확실히 될런지는 확인해 보지 않아서 모르겠군요.
------------------------사족 끝 ---------------------------------
오랜만에 추억을 깨워주셔서 감사드릴게용~
추억은 새록새록 솟아나는데, 조작이 너무 불편해서 (요즘 게임에 비해) 계속 하게 되지 않을듯....
-
살라똥따라삐 2012.05.09 16:25
이렇게까지 신경써주셔서 감사드립니다 덕분에 신세계를 에반게리온하네요
즐거운 오후 되시도 따뜻한 가정의 달 보내시길 기도합니다
-
따닥따닥 2012.05.09 17:39 예전에 브포 걸면서 크랙하던 생각이 나네요. ㅎㅎ;
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
29868 | 하드웨어| 윈도우부팅이안됨 z77보드 [9] | 이누노 | 2798 | 05-09 |
29867 | 윈 도 우| config.xml 가 생깁니다 [4] | 불청우 | 2256 | 05-09 |
29866 | 소프트웨어| aimp 오디오 재생기 전체곡 반복은 어디서 설정하는지요 [6] | 기러기 | 3768 | 05-09 |
29865 | 윈 도 우| IE9 주소창에서 '즐겨찾기' 검색 가능하게 설정 어떻게 하... [2] | 개초롱 | 2340 | 05-09 |
29864 | 소프트웨어| 동영상편집기 추천부탁요~ [8] | 조코조은 | 2994 | 05-09 |
29863 | 윈 도 우| 원도우 xp home 버젼입니다 | kang | 2623 | 05-09 |
29862 | 하드웨어| 본체가 이동만하면..?? [8] | 쭌쭌 | 2366 | 05-09 |
29861 | 소프트웨어| utorrent 2.2.1 의 마지막 버전? [13] | wfz | 5014 | 05-09 |
29860 | 소프트웨어| 트루이미지 복원 관련하여 질문드립니다. [1] | 칼퇴근 | 2303 | 05-09 |
29859 | 윈 도 우| GHOST.GHO 고스트 파일을 가상머신으로 설치 할수있나요 [4] | 경주신나통 | 4384 | 05-09 |
29858 | 하드웨어| 랜툴 질문 있습니다... [3] | 우주선 | 2075 | 05-09 |
29857 | 윈 도 우| 만능고스트 부팅시 딜레이 현상 [2] | 새출발새인 | 4610 | 05-09 |
29856 | 윈 도 우| AMD AHCI -> RAID로 변경 문의 [2] | Revolution | 3111 | 05-09 |
29855 | 윈 도 우| ms 자료실 [6] | 南山先生 | 2281 | 05-09 |
29854 | 하드웨어| 노트북 몇가지질문입니다. [1] | 키샤 | 1933 | 05-09 |
29853 | 하드웨어| 노트북 요렇게 축약해봤습니다. [6] | 쭌쭌 | 3453 | 05-09 |
» | 기 타| 고전게임 디셈블(?) [5] | 살라똥따라 | 2746 | 05-09 |
29851 | 윈 도 우| 노트북 팬 소음 및 스피드팬? [3] | C.Chung | 4967 | 05-09 |
29850 | 윈 도 우| 영문 xp 32bit 정품을 싸게 구할때 없나요? [2] | 아자아자쿵 | 3110 | 05-09 |
29849 | 하드웨어| 노트북 하나 구입하는데 데탑대응으로요 [8] | 쭌쭌 | 2204 | 05-08 |
아마도 이 부분은 이 메시지를 출력하는 루틴이 아니라,
실행 초기에 데이터를 로딩해 오는 부분이라 생각됩니다.
위 소스에서 보면 저 문자열은 edx+00007E20h 라는 주소에 복사됩니다.
edx는 아마도 문자열들의 주소를 담는 배열이거나, ( LPTSTR[])
문자열 데이터를 관리하는 클래스의 주소가 아닐까 싶네요.
이부분에선 고칠 부분이 없습니다.
원하시는 작업은 소스코드 분석만으로는 힘들수도 있습니다.
디버거에 올려서 메모리 브레이크 포인트 걸어서 문자열 출력 루틴을 찾는게 나은 방법입니다.