본문 바로가기

쓰기

안녕하세요.

많은 분들이 어려워 하시는데 혹시 도움이 될 수 있을까 해서 적어요.

글재주가 없어서 많이는 적지 못해요.



시작하기에 앞서

 본 글은 응용편이므로, AT코드를 적어도 4-5회 이상 찾아본 사람이 읽어야 이해 할 수 있는 내용을 포함하구 있구요,

프로그램은 이뮤니티 디버거를 사용하였으나, 이것은 그냥 제 눈이 편해서 이므로 프로그램을 가리실 필요는 없어요.

 이 글에서는 미육의 향기를 샘플로 삼았구요, 이유는 콜스택 보면서 거슬러가기, 인자값 계산하기에 비교적 간단하면서 이해하기 쉬운 구조를 갖고 있기 때문이에요.


 여기서 다루는게 모든 게임에 적용되지는 않을 것이며, 혹은 제가 설명 도중 잘못 이해하거나 알 수 없는 횡설 수설을 할 수도 있겠지만 너그러이 이해해 주시길 바래요.

그럼 시작할께요.



1. 대사 선정

 대사 선정은 아무렇게나 해도 되지만, 자체 디버거로 대사열을 찾을 수 있을경우 자체 디버거에서 못찾는 대사를 골라 주는것이 더 유리해요. 그렇게 해서 찾는 코드가 완성도가 더 높거든요.


 저는 기존 미육의 향기에서 번역이 되지 않았던

早々と会長職も退き、今は悠々自適の生活。

를 샘플로 채택했어요.

HEX코드는 

9181 8158 82C6 89EF 92B7 9045 82E0 91DE 82AB 8141 8DA1 82CD 9749 8158 8EA9 934B 82CC 90B6 8A88 8142 




2. 멤브레이크 걸기

해상 대사를 찾아서 브레이크를 걸고 게임을 진행했어요.

대사 브레이크 건 지점을 메모해두면 좋아요.

나중에 브레이크 지점에서 레지스터 덤프를 보지 않더라도 대사값이 있는지 없는지를 한눈에 알 수 있게 되거든요.

(메모리 대사들을 대충 어디에 넣었는지 알게 됨으로서 레지스터 옆의 주소만 보고도 이게 내가 원하는값인지 아닌지 여부를 빨리 알 수 있게 된다는 이야기에요)


1.jpg


 다음 위치에서 브레이크가 걸렸어요.

 브레이크 지점을 보면 MOV AL, BYTE PTR DS:[EDX+EAX] 라고 되어있죠.

 컴퓨터를 전혀 모르는 사람을 위해, 수식으로 만들어 보면

 AL = EDX + EAX 가 되요.

 그러니까 EDX + EAX에 대사가 있어서 브레이크가 걸린 것이겠죠?

 일단은 여기까지만 생각해두기로 해요.


3. 콜스택 보기


alt+k를 누르면 콜스택 창이 열려요.


2.jpg


 Procedure / arguments 창은 현재 호출된곳 인자들이에요.

 이곳은 중요하지 않지만 그냥 설명하면, 첫째열의 Includes AI6WIN.00472036을 보면 해당 브레이크가 걸린곳은

 AI6WIN.00472036에 해당되는 곳이고 , 3줄 아래 보시면 Arg1이 보이는데 인자를 뜻해요.

 Arg1은 esp 0x4, Arg2는 esp 0x8...이런씩으로 달려요. 크게 중요하지는 않아요.



 콜스택을 연 이유는 메모리 브레이크가 걸린곳이 아랄트랜스를 붙이기 적당하지 않은 지점으로 판단했기 때문이에요.

 나중에 해보시면 알겠지만 첫 브레이크가 걸리는 지점은 접근 빈도가 너무 높거나,  글자를 다른곳으로 복사하는 중이거나, 모든 텍스트를 다루기 때문에 (게임 내부 커맨드라고 칭할께요) 아랄트랜스로 번역을 했을때 원하지 않는 값이 번역 될 확률이 대단히 높기 때문이에요.


 그럼 본 함수를 호출한 곳으로 가면 무엇이 좋아지느냐?

 빨간 사각형이 호출한 곳인데요, 472030을 호출한 4245D4지점으로 가볼께요.


3.jpg


 복잡하죠?

 근데 애석하게도 여기도 아랄 트랜스를 붙이기에는 적당해 보이지 않네요.
제일 윗라인을 찍어보니 Local calls from 004234E8, 0042350D가 보이실꺼에요.

 본 함수를 저 두군대에서 호출한다. 라는 뜻인데요.

 한단계 더 앞으로 가봐야 겠네요.

 콜스택 다음 라인에 있던 4234E8로 가볼께요.


4.jpg


 흠.. 이 이상 앞으로 가기는 무리겠네요.
 일단 위쪽에서 대사값을 입력하는걸로 의심되는 부분이 몇개 보이구요, 함수가 윗쪽으로 너무 길어서 귀찮네요 더이상은....

 여기까지만 올라가보기로 하구요.

 각각 지점에 브레이크를 걸어볼께요
 472036, 4245D4 , 4234E8
 그리고 대사를 한줄 넘기면서 각각 브레이크가 몇번씩 걸리는지 세보는거에요.


 결과는
 472036, 4245D4 ->천만번 (실은 세다가 걍 포기)
 4234E8 ->한번 (굿)

 일단 임시로 4234E8을 훅 지점으로 잡기로 해요.

 여기까지는 그다지 머리 쓸일이 없구요 문제는 이제부터에요.



4. 즐거운 계산하기

 문제는 이거에요

 EDX+EAX가 4234E8에서는 어떤값이 었을까? 라고 계산을 해주는거에요.

 아
 글쓰기 싫다 존나 이짓거리 또할라니까 짱나네여...


 볼드체로 되있는데는 콜 지점을 뜻해요.

00472030   MOV EDX,DWORD PTR DS:[ECX+10]                 =>[ECX+0X10]+[ECX+0XC]
00472033   MOV EAX,DWORD PTR DS:[ECX+C]                   =>EDX+[ECX+0XC]
00472036   MOV AL,BYTE PTR DS:[EDX+EAX]                     =>EDX+EAX
00472039   PUSH ESI
0047203A  MOV ESI,DWORD PTR SS:[ESP+8]
0047203E  ADD EDX,ESI
00472040   MOV DWORD PTR DS:[ECX+10],EDX
00472043   POP ESI
00472044   RETN 4

이제 요쪽은 계산끝났구요. 요걸 콜한 애쪽으로 가서 또 계산해야겠죠


00424570   PUSH ECX                                                                    =>[EDI+0X10]+[EDI+0XC]
00424571   PUSH ESI
00424572   CALL AI6WIN.0040C820
00424577   MOV ESI,DWORD PTR DS:[EAX+38]
0042457A  TEST ESI,ESI
0042457C   JE SHORT AI6WIN.004245E3
0042457E   MOV EAX,DWORD PTR DS:[ESI+50]
00424581   TEST EAX,EAX
00424583   JE SHORT AI6WIN.004245E3
00424585   MOV ECX,DWORD PTR DS:[ESI+54]
00424588   SUB ECX,EAX
0042458A  MOV EAX,66666667
0042458F   IMUL ECX
00424591   SAR EDX,4
00424594   MOV EAX,EDX
00424596   SHR EAX,1F
00424599   ADD EAX,EDX
0042459B   JE SHORT AI6WIN.004245E3
0042459D   CMP EAX,32
004245A0   JA SHORT AI6WIN.004245A7
004245A2   CALL AI6WIN.00485686
004245A7   MOV EAX,DWORD PTR DS:[ESI+50]
004245AA  MOV ECX,DWORD PTR DS:[EAX+7D8]
004245B0   SHR ECX,7
004245B3   AND CL,1
004245B6   JE SHORT AI6WIN.004245E3
004245B8   CALL AI6WIN.0040C820
004245BD  PUSH 100
004245C2   CALL AI6WIN.0040D760
004245C7   TEST AL,AL
004245C9   JE SHORT AI6WIN.004245E3
004245CB   MOV EDX,DWORD PTR DS:[EDI]
004245CD  MOV EAX,DWORD PTR DS:[EDX+4]
004245D0   PUSH 0
004245D2  MOV ECX,EDI                                                               =>[EDI+0X10]+[EDI+0XC]
004245D4   CALL EAX                                                                     =>[ECX+0X10]+[ECX+0XC]
004245D6   MOV ECX,DWORD PTR SS:[ESP+C]
004245DA  PUSH EAX
004245DB   MOV EAX,DWORD PTR DS:[ECX+3C]
004245DE  CALL AI6WIN.004227E0
004245E3   MOV EDX,DWORD PTR DS:[EDI]
004245E5  POP ESI
004245E6   ADD ESP,4
004245E9   MOV DWORD PTR SS:[ESP+4],1
004245F1   MOV ECX,EDI
004245F3   MOV EAX,DWORD PTR DS:[EDX+4]
004245F6  JMP EAX

 운이 좋았네요 여기는
 [EDI+0X10]+[EDI+0XC] 이후로 EDI를 건드리는곳이 보이질 않네요.
 하지만 이건 어디까지나 운이 좋았던 것이구요.

 빨간 볼드체로 해놓은 곳, 그리고 몇몇 점프 지점이 계산을 추가/추감 해줘야 할 케이스도 있어요.
 하지만 제 인내심이 다했으므로 그냥 앞쪽으로 또 넘어갈께요.


004234CD MOV EDI,DWORD PTR SS:[ESP+40]
004234D1  MOV ESI,EAX
004234D3  CALL AI6WIN.004598A0
004234D8 MOV ESI,DWORD PTR SS:[ESP+38]
004234DC MOV EDI,DWORD PTR SS:[ESP+1C]
004234E0  PUSH ESI
004234E1  MOV DWORD PTR SS:[ESP+9C],EAX
004234E8  CALL AI6WIN.00424570                                =>[EDI+0X10]+[EDI+0XC]


 위쪽으로 뭐가 존나 더 많았는데
 제 목표는 04234E8에서 EDX+EAX가 뭐였는지 알아내는 것이었으므로 여기까지 할께요.


 결국 아랄 트랜스를 붙일 곳으로

 0x004234E8 에 [EDI+0x10] + [EDI+0xC] 가 된거에요.



5. 마무리


코드를 넣고 안정성 테스트를 해봐요.
전 스킵 눌러놓고 딴걸 하곤 해요.

백로그, 선택지가 안나오면 추가로 코드를 찾아주고
나오는데 문제가 있으면 필터를 양념삼아 마무리를 해주시면 되요.

본 게임의 코드는 백로그가 중복 해석되어서 코필터를 추가 해주었어요.


최종코드:

ENCODEKOR,HOOK(0x004234E8,TRANS([EDI+0x10]+[EDI+0xC],SOW))

KoFilter{}



유르_리샤

2009.01.25
13:32:02
오오......

마이님 굳이내요'ㅁ'/

그나저나... 아랄 디버거에서 안잡히는 대사를 브레이크 잡는법도 있었내요;

그리고 번역율이 더 높다라...[멍]

한번쯤은 해봐야갰내요 ㅎㅎ

가르쳐주새요 마이선샌님~

유르_리샤

2009.01.25
13:54:49
헐...... 계산 저질이내요 ㅠㅠ

나는누구인감?

2009.01.25
17:19:03
선리플 후감상

이런글은 몹시 감사해야하졈.

굳.

나는누구인감?

2009.01.25
17:24:07
아 쉣

즐거운 설에 이런 머리터지는 글을 보게 될줄이야.

보기 전엔 몹시 캄사했지만 읽고나니 히밤이네염.

위풍당당그녀석

2009.01.25
17:30:11
무슨말인지 모를뿐이고 데헤헤헤헤 @ㅠ@

astral

2009.01.25
22:25:19
우왕ㅋ굳ㅋ 실제로 이렇게 할 수 있을지는 모르겠지만, 뭔가 새로운 경험을 쌓아 레벨업한 기분입니다!!

ATlove

2009.01.26
00:48:24
아하, 대충 콜스택으로 다른 위치 잡는건 알았는데, 저따위로 계산해서 하는거군요.
음, 율님의 레벨업과, 다른 분들의 능력을 기대해봅니다. 전 귀찮아서 .. 5 분내로 안 나오면 ㅈㅈ 치겠네여.
참, 그리고 보잉 다 받았는데, 어케해드릴까여?

my vagina

2009.01.26
18:44:25

 저도 받았는데

 시발 크로스넷........

 한글자씩 나오네여

미공망

2009.01.26
02:48:29
흠냐.. 아직 저에게는 꽤나 머나멀게 보이는 군요....

마이아크

2009.01.26
14:46:07
하하하하.

제복보다 무지 좋아했다 글 다 읽고 죽겄군요.

그래도 감사합니다.

북극

2009.01.26
19:48:29
항가 시발 계산 ..

Rynie

2009.01.26
23:29:02
계산이 시발인듯. ㄱ-....

Ria-

2009.01.27
04:05:35
계산보고 난 이런짓 하지않아야지 하고생각했습니다.(수고하셨어요..)

월희

2009.01.27
04:21:13
이건 뭐 .... 연구를 해야겠네염 ..  지금 이 글만봐선 머리에 안들어오네염 ...

언재 필받을때 한번 공부를 해야지 ....

astral

2009.01.29
10:51:45
근데... 멤서치가 안돼는 겜은 어케 해야하죠?;

my vagina

2009.01.29
16:58:56

한글자씩 뽑음 (제일 높은확률)

마우스 클릭하면 그제사 뽑아옴 (그런 경우 거의 없음)

유니코드 (희박하지만 있긴있음)

저도 모름(이거도 있음)

이럴때는 출력 함수에 브렉 걸고 지켜보세용

astral

2009.02.01
14:34:52
슬슬 AT코드 찾기 -심화편- 나올때가...? 저 애독자임... 냠

마이아크

2009.02.04
23:33:44
심화편.............ㄷㄷㄷ

아그나스

2009.02.02
23:09:07
마이님 화이팅요.

히나리

2009.02.07
14:18:00
헐퀴...
경시편까지는만들지말아줏메<..

야미데스

2009.02.08
01:39:37
말은 않했지만 자네.............
                                              지금  
재능이 아깝지 않은가?
나야 고맙<--(퍽)

오베루

2009.03.26
05:24:20
난이도가 장난이 아니군요;
열심히 연구 해봐야겠습니다 ' -'
List of Articles
번호 제목 글쓴이 날짜 최근 수정일 조회 수
공지 아랄트랜스로 게임하기 앞서 기본 셋팅 확인하기! [4] file TwoComet 2012-08-30 2014-02-26 20:12 40442
공지 아랄트랜스 - 초보자 가이드 [94] file Hide_D 2008-07-16 2015-02-27 18:02 319275
공지 모든 플러그인, 필터 안내 ('09.03.13) [20] Hide_D 2008-10-31 2009-03-13 23:48 191320
공지 아랄트랜스 0.2 - 초보자 가이드 [109] file 아랄 2008-07-16 2013-12-31 09:32 505778
57 읽으면 더 헤맬지도 모를 프군의 코드 범죄강좌 (4) [2] file 프군 2009-03-23 2009-03-23 22:04 27248
56 techarts社게임들을 수월하게 까는방법이라고나할까요... [7] file 막장트리 2009-03-22 2009-03-22 19:23 40336
55 대악사 대사가 밀리는 듯한 증상의 해결법. [2] 쌀밥줘 2009-03-19 2009-03-19 01:49 29326
54 필터 강의 - Deny Word [12] file Hide_D 2009-03-18 2009-03-25 22:56 41093
53 읽으면 더 헤맬지도 모를 프군의 코드 범죄강좌 (3) [9] file 프군 2009-03-18 2009-03-22 15:55 64464
52 필터 강의 - 필터의 작동 방식 [11] file Hide_D 2009-03-13 2009-04-02 23:37 30871
51 비스타 AralContext 먹이기 .. [2] 북극 2009-03-01 2009-03-19 14:45 22709
50 ATData 의 대단함. [5] 류제로 2009-02-28 2009-03-07 02:24 23786
49 기리기리 스트립트 수정방법 [2] file 류제로 2009-02-24 2009-02-24 23:33 23490
48 필터 순서 [8] Hide_D 2009-02-22 2009-02-23 10:12 23891
47 花と蛇 설치 대머리소년친구 2009-02-16 2009-02-16 18:49 17777
46 게시판에 그림및 사진 첨부방법[초보들 위한] [5] file Neru 2009-02-15 2009-02-17 23:29 24183
45 프리즘 아크 ARAL로 안되시던분 로렌츠 2009-02-10 2009-02-10 01:54 17829
44 무스메이커 안되시는 비스타 여러분들을 위해~ [4] 헌화 2009-02-05 2009-02-11 03:27 24178
» AT코드 찾기 -응용편- [22] file my vagina 2009-01-25 2009-03-26 05:24 48521
42 바로가기로 시작했을때 로딩이 너무 오래걸리는 게임들 [3] my vagina 2009-01-19 2009-01-24 22:34 23878
41 ALICESOFT 사의 System4.0 코드 찾기 [16] file 유르_리샤 2009-01-16 2009-02-17 15:45 28034
40 [팁]진 연희무쌍∼튕기는 분들을 위한 작은 팁.(그 외 적용 可?) [1] 天娥雪蘭 2009-01-16 2009-01-21 15:35 24225
39 息子の友達に犯されて(아들의 친구에게 범해져) 코드 적용하는 법 [2] file 암흑마제 2009-01-15 2009-01-15 15:03 42223
38 랴겜 설치시 안되는 게임 꼼수로 설치하기 .. [4] file 월희 2009-01-12 2009-04-23 23:30 24131