본문 바로가기

쓰기

 

안녕하세요
 

이번에 아랄 트랜스 0.2를 사용하시는 유저분들께서 ATCode 란 것에 대해

 

많이들 궁금해 하실 것 같아 간략하게 나마 설명을 드리고자 합니다.

 

우선 ATCode는 아랄트랜스에서 사용하는 후커 코드라고 보시면 됩니다.

 

AGTH 로 다양한 후커 옵션을 사용해 보신 분 이라면 이해가 빨리 가시겠지만,

 

후커코드에 대해 모르셔도 상관없습니다.

 

거두절미하고 테스트 삼아 직접 ATCode를 찾아내 보도록 합시다.

 

오늘 강좌에서 마루타가 될 게임은 조심술2+라는 게임입니다.

 

제작사와 게임의 배경은 저도 잘 모릅니다.;; 아무튼 만만해서 선택했죠.

 

나는 조심술2+가 없단 말이다! 라고 불평하는 분들도 계시겠지만

 

결국 모든 게임의 atcode찾는 방법은 아래와 크게 다르지 않으니, 눈치 빠른 유저분이라면 아래 설명만 보고도 똑같이 적용하실 수 있습니다.

 

, 그럼 설명을 시작하겠습니다.

 

 

 

AT 코드 찾기

 

게임을 실행시키고 아랄 트랜스도 실행시킵시다.

 

조심술2 프로세스를 선택해서 Hook버튼을 누지릅니다.

 


위와 같이 아랄 트랜스 설정 창이 뜨면 제대로 후킹이 된 것입니다.

 

이제 플러그인을 선택합시다.

 

후킹 플러그인은 DebugingATCode , 번역 플러그인은 ezTransXP를 선택합니다.

 

그러면 아래와 같은 허접한 디버깅 창이 하나 뜰겁니다;;;

 

 


썰렁하죠-_-;;

 

! 이제 게임에서 대사를 몇 번 넘겨볼까요.

 

그랬더니.. 우옷~!! 디버깅창이 뭔가 힘겨운 듯 미친 듯이 텍스트를 출력해 댑니다.

 

(안구에 꽤나 유해한 주파수로 새로고침을 해대는군요)

 


여기서 각 항목들에 대해 간단히 설명하자면..

 

Address

함수의 주소입니다.

Score

문자열로 추정되는 인자 위치와, 문자들이 적중된 점수입니다.

Last Text (Japaness)

최근 이 함수로 전달된 일본어 문자열입니다.

Last Text (Korean)

일본어 문자열을 번역한 한국어 문자열입니다.


 

Score의 점수와 Text 내용을 종합적으로 추론하여 우리는 대사 출력 함수를 찾을 수 있죠.

 

, 그럼 찬찬히 살펴봅시다. 문자열 출력과 관련된 함수는 어떤 걸까~~~

 

.. 다행히도 꼬꼬마 친구들조차 요거요라고 찍을 수 있을 만큼 확연히 드러나네요 -_-;;

 

, 410320번지가 문자열을 출력하는 함수 주소 같군요.

 

아니, 그런데 인자가 [ESP+4] 번지와 [ESP+C] 번지가 있군요.

 

 옆에 괄호로 hit라고 된 숫자는 지금까지 GetGlyphOutLine이나 TextOut 같은 문자출력 함수를 거쳐서 나간 횟수 입니다.

 여기서 주의해야 할 점은 hit 수는 절대 410320번지 함수 호출 횟수가 아니라는 것 입니다. 문자가 일치한 수 입니다.

 

우리는 두 개의 유력한 용의자(?)를 찾았습니다.

 

어떤 녀석이 문자열 인자인지 알아보기 위해 브레이크 포인트를 걸어봅시다.

 

우리말로는 중단점이라고 하죠. 그게 그거 -_-

 

중단점을 지정하는 단축키는 F2, 중단점에 걸렸을 때 다시 진행시키는 키는 F9입니다.

 

자 그럼 마우스로 410320번지를 선택해서 F2를 눌러봅시다.

 



우옷!! 왼쪽 구석탱이에 삼각형의 브레이크 포인트 마크가 생겼네요!!

 

아아.. 정말 허접하기 그지없군요 (주소가 삼각형에 밀려서 표시되고 있네요 -_-)

 

이제 게임에서 마우스를 클릭하여 다음 대사로 넘어가 봅시다.

 

그러면 게임이 멈추고, 아랄트랜스의 디버깅 창에 현재 메모리 정보들이 출력되는 것을 보실 수 있습니다.

 


 

, 여러분은 이제 410320 함수가 호출된 순간을 보고 계십니다.

 

뭔진 잘 모르겠지만 주인공이 너희를 일생 길러 준다라는 말을 하고 싶었던 모양이군요. (전 저 주인공 녀석을 한번 길러보고 싶군요. -_-)

 

이 화면을 보니 아까 인자가 2개였던 의문이 풀리는 군요.

 

[ESP+4]에는 대사를, [ESP+C]에는 인물 이름을 넣어서 호출하는 함수 같아 보입니다.

 

* 여기서 질문 하나 *

- EAX, EDX 도 대사를 담고 있는데 왜 저 두개는 안쓰나요?

프로그램에서 함수 호출 시 인자전달은 대부분 스택을 사용합니다. Fastcall 같은 호출 규약에선 가끔 레지스터를 일부분 사용하기도 하지만, cdecl, stdcall, fastcall 등 대부분의 함수 호출 규약들이 스택에 인자를 집어 넣는 점에 있어선 모두 동일합니다.

위처럼 함수가 호출되는 순간 EAX EBX 같은 레지스터에 문자열이 있는 경우, 앞의 함수에서 무언가 처리하다가 남은 찌꺼기 값이 공교롭게도 우리가 원하는 문자열을 가리키고 있는 경우일 수 있습니다. 따라서 왠만하면 [ESP+n]같이 스택으로 넘어온 인자를 집중 공략하는 것이 가장 안정적입니다.

 

 

그럼

 

모든 수수께끼는 풀렸다!!

 

위의 함수주소와 인자 위치를 메모장에 적어 놓읍시다.

 

후킹할 주소 : 410320

번역할 인자 : [ESP+4], [ESP+C]

 

(복사, 붙여넣기 같은 고급 기능은 아직 없으니 수작업으로 적어놓습니다 -_-)

 

끄적..끄적,,

 

 

AT코드의 적용

 

!! 이제 대망의 ATCode 테스트 시간입니다.

 

아랄 트랜스 설정창에서 후킹 플러그인을 ATCode를 선택합니다.

 

그리고 옵션 버튼을 눌러봅시다.

 

 


여기서
후킹주소 추가 버튼을 누릅니다.

 

 


우리가 찾았던 함수 410320을 입력하고 확인을 누릅니다.

 

그러면 공통 탭 옆에 우리가 입력한 주소의 탭이 새로 생깁니다.

 

 


여기서
추가를 눌러 번역할 인자를 등록합시다.

 

 


[ESP+4], [ESP+C]
두 개 다 해줍시다.

 

확인을 누르고 게임을 진행 해 봅시다.

 



한글 대사가 나오네요.

 

참고로 하단의 바로가기 생성을 누르시면 현재 옵션 그대로 바로 게임을 실행시킬 수 있는 단축 아이콘을 만들 수 있습니다.

 

그러므로 게임 할 때 마다 AT코드를 입력하지 않아도, 편하게 이전 설정 그대로 게임을 즐기실 수 있습니다.

 

 


맺으며…

 

이러한 방법으로 다른 게임들도 AT Code를 찾을 수 있습니다.

 

제가 분석 해볼 수 있는 게임들은 한계가 있으므로, 실력 있는 많은 분들의 참여가 필요합니다.

 

또한 위의 디버깅 툴도 모든 함수를 정확하게 다 표시할 수 없는 경우도 있으므로, 올리 디버거 같은 전문 디버깅 툴을 능숙하게 다룰 줄 아시는 분들께는 필요 없는 플러그인 같네요. ㅎㅎ

 

궁금한 점이나 버그 신고는 언제든 환영이오니 적극적인 참여 부탁드립니다.

 

감사합니당 ^-^

 

List of Articles
번호 제목 글쓴이 날짜 최근 수정일 조회 수
공지 아랄트랜스로 게임하기 앞서 기본 셋팅 확인하기! [4] file TwoComet 2012-08-30 2014-02-26 20:12 40830
공지 아랄트랜스 - 초보자 가이드 [94] file Hide_D 2008-07-16 2015-02-27 18:02 319563
공지 모든 플러그인, 필터 안내 ('09.03.13) [20] Hide_D 2008-10-31 2009-03-13 23:48 191571
공지 아랄트랜스 0.2 - 초보자 가이드 [109] file 아랄 2008-07-16 2013-12-31 09:32 506064
» AT 코드 찾는 방법 [46] file 아랄 2008-04-21 2021-01-03 13:14 270695
215 기리기리엔진에 대해 여러가지 [3] 고토회복 2012-06-25 2015-12-06 04:09 8479
214 cs2엔진 게임에서 대사창이 안나올경우 file 별초군 2015-12-03 2015-12-03 18:52 706
213 [강좌] 올리디버거로 ATCode 코드를 찾아보자 (1) [16] file 아랄 2008-05-18 2015-12-02 16:11 98794
212 Sho&#6489lԀ &#1... AngeliaTolmer6414 2015-11-08 2015-11-08 01:28 391
211 게시물 분류작업 미래도 2015-09-14 2015-09-14 05:09 516
210 [VNR홈페이지]게임이름으로 게임정보 찾기 미래도 2015-09-13 2015-09-13 03:43 3725
209 사진이 깨진 글에서 사진순서 맞추기 file 미래도 2015-09-13 2015-09-13 03:08 453
208 게임 업데이트후 코드먹통될때(예제. FATAL ZERO ACTION) [2] file 두병더더 2012-08-27 2015-09-13 02:52 3169
207 나도 준한글화를 만들어보쟈 ' -' [15] 미히 2009-03-07 2015-08-30 11:00 35853
206 PhantOm:디버깅이 제한된 프로세스 디버깅하기 [1] 미래도 2015-08-23 2015-08-25 19:46 1470
205 SiglusEngine 복불복 막장드립 [5] file 두병더더 2012-08-12 2015-08-11 16:01 7916
204 ATCode 플러그인 - 설명서 [2] file 아랄 2008-04-25 2015-07-25 00:21 65495
203 [번역률향상]Ehnd+꿀도르 설치, 허니엔드 [2] 미래도 2015-04-28 2015-05-08 18:11 35712
202 오토보쿠2 아랄을 후커처럼 사용해보자. [3] file Ria- 2010-07-03 2015-04-23 01:06 6937
201 조금이라도 아랄트랜스를 빨리 쓰고 싶은 사람들을 위한 팁! [2] Hide_D 2009-12-06 2015-04-12 15:59 13215
200 피시의 엔진별 야메찾기 리스트 (11/117) - 120830 update [10] file TwoComet 2012-08-08 2015-02-24 03:31 6994
199 후크하면 아랄트랜스가 소리소문없이 사라지는 분은 [1] 키리아스 2011-01-17 2015-02-11 23:17 5267
198 코드를 찾아 여행하는 히치하이커를 위한 작은 팁 [1] 어린나무 2013-01-22 2014-09-26 16:06 7938