본문 바로가기

쓰기

 

안녕하세요
 

이번에 아랄 트랜스 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를 찾을 수 있습니다.

 

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

 

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

 

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

 

감사합니당 ^-^

 

불타는구고마

2008.04.21
03:08:27

엄청납니다.. 달리 할말이 없네요 .. 가능하네요 이런게 ㅎㄷㄷ

미즈호

2008.04.22
22:36:50

프로그램 자체가 완전..혁명에 가까운 것이군요..ㄷㄷ
앞으로 발전하면 엄청난 물건으로 탄생하는군요..ㄷㄷ

RAY

2008.04.24
20:39:45
전 영어로 스크립트 에러 이렇게 떠야 하는데 어떻게 해야하나요? 그리고 방법자세히 알려주심점 감사합니다.

관리자

2008.04.24
22:29:06
안녕하세요 레이님
ATCode 플러그인에 대한 메뉴얼은 조만간 올리겠습니다.

음..

2008.04.28
00:03:23
디버거로 안잡히면 방법이 없나요?-_-;;;

관리자

2008.04.28
01:10:59
올리디버거로 GetGlyphOutline, TextOut 함수를 역추적하는 방법도 있습니다.
ㄷㄷㄷ..

메니저

2008.05.19
21:41:47

이렇게 쓰는거였구나...

....

2008.06.01
04:34:39
F2 누르면 추적도 될때 안될때 있고, 게임 멈췄다가 튕기네요. 어디서 실수한건가... 코드 찾는 도중에 초보자들이 실수할 만한 점을 같이 지적해 주시면...

2008.06.18
21:12:36

그거 무료 배포 하시지말고 그냥 특허내시고 파시지 ㅎㅎㅎ 장난으로 해본소리...

ㄷㄷ

2008.06.26
15:14:13

이거 먼저 특허내놓는게 어떤지..ㄷㄷ;;
대기업이 먼저 특허내놓으면 비싼 가격에 판매할텐데...ㄷㄷ

메레옹

2008.07.01
23:29:11
크허 ㅠ ㅠ 프로그램이 어떻게 돌아가는지는 GWbasic밖에 접해보지 않은 나로서는 -ㅁ-;;; 뭔말인지 하나도 모르겠네요 ㅠ ㅠ

이런거 공부하려면 뭐부터 시작해야되나요 ?

꺼마개미

2008.07.06
04:12:38

휴... 잘 배우고 갑니다...
요즘 아랄에 힘을 느낀지라 꼭 제손으로 AT코드를 찾고싶기에...
시간좀 내서 시행착오를 거친 결과... 겨우 대충 이라도 알겠네여... ㅇㅅㅇa

aaa

2008.07.09
16:39:01

F2를 누르면 게임이 멈춰버리는군요;;

Craysia

2008.07.11
00:13:11

Ver.2에서는 어떻게 하나요 똑같나요? 완전 초보라서 제가;;;

靑星夢

2008.07.24
03:26:05
방금 가입해서 신세계를 구경중  존경입니다.

푸른간지

2008.07.24
21:08:24
그저 안된다...

타파코쿠

2008.07.25
17:59:04
...정말.. 대단합니다. 대단해요.. 할 말을 잃게 만드는 프로그램이네요..

....

못하겟어요

2008.07.28
23:26:34

"비밀글입니다."

:

ㄷㄷ..

2008.07.29
23:45:14
저기요 죄송한데 햇긴햇는데 케릭들 말이 안보여요.. 전국란스에요

히뎨얌

2008.09.10
18:26:31

못하겠어요..ㅠㅠ 힘들어요

골디마그

2008.10.10
13:15:58
감사합니다

사랑이란 뭐지

2008.10.17
00:05:06
저는 대부분 안돼는군요;; 다른건 몰라도 디버깅창에 한글이 제대로 뜨질않아요;;

이베르

2008.10.18
21:10:49
그냥 대단하다 ...라는 생각밖에는 ,,

부엉군

2008.12.15
01:31:45
음욕의 성희에선
이거 디버깅에이티코드 하고 이지트랜스엑스피 두개 설정해놓고

디버깅창띄우고
대사넘겨도
디버깅창에는 아무거도안뜨는데요..
사진도 올림
첨부 :
de.JPG [File Size:107.0KB/Download832]

니맘대로튀

2008.12.25
00:29:55
것 참;; 생각없이 쓰다가 at코드를 스스로 알아내보고 싶어서 들렀는데... 가히 혁명적이군요. 위의 ㄷㄷ 님은 말씀대로 특허를 내보심이 어떠실지...

MinamiChiaki

2008.12.28
16:31:24
정말 감사합니다

ajsdp

2009.01.19
04:57:36
어.. 어렵다

그로테스크

2009.02.28
08:41:15
죄송하지만.. 계속 팅기는데요..;;;

ㅁㄴㅇㄹ

2009.08.08
01:24:40
디버깅창이 안뜨는데요.. 어케하는지좀 제발 알켜주세요

유스토마

2009.08.17
13:18:28

보인다! 나에게도 AT코드가 보여!

ㅇㄴㅇㅁ

2009.10.14
15:48:56

저기요 ...... 똑같이햇는데 안되네요 ...

난 병신인거임?

주하

2010.07.17
12:16:46

똑같이 했는데 글씨가 옆으로 뉘여서 나오고 일본어인데ㅜㅜㅜ 어떻게 해야하죠?

대갈장군

2010.11.20
22:28:02

할떄 마다 매번 주소가 바껴요 ㅜㅜ 전 바보인가바요 ㅜ
그리고 F2누르고 대사넘기면 바로 다음대사가 아래쪽메모리에 잡히네요 ㅜㅜ
이럴떈 어떻게해야되요??

신도라에몽

2011.06.26
15:03:39

잘 안되네요 ㅠㅠ (님이 시킨데로 다했음..)

한글이 맞긴 한데 저렇게 나와요 ㅠ

해결 방안좀

그리고 아까는 게임도 되더니 지금은 갑자기 꺼지네요 ㅠ

 

첨부 :
K-1.png [File Size:2.8KB/Download1,374]

밝다

2011.09.24
20:11:02

코드 찾을 왜 대사가 한글화 된게 찾아도 없는지ㅌㅌ

사카라디아

2013.07.31
23:30:51

이게 그나마 쉬워서 이걸로 해볼려고 했더니 튕기네요..ㅠㅠ 결국 올리디버거를..ㅠㅠ 

crowgod

2013.10.21
17:08:15

디버그 창에는 해석까지 다되서 나오는데 정작 적용이 안되요.

인노첸사

2013.12.28
23:06:10

신세계를 경험했습니다. 감사합니다~

신병이중대

2014.03.30
23:28:22

이미지가 반쯤 다잘려나갔읍니다

태조왕

2014.06.28
09:53:20

액박을 복구 해주시면 많은 도움이 될거 같습니다.

카이리시아

2014.06.28
23:26:27

전부 엑박이네요...

오성범

2014.07.05
17:57:10

사진이안떠서 잘 모르겠어요

코모리유이

2015.02.02
21:37:20

사진이 안보입니다.

wespone

2015.02.07
20:28:19

siglusengine은 어떻게 해야되나요?ㅜ 플러그인을 디버깅으로 바꾸고 실행하면 자꾸 튕김니다ㅜ

ghdcksgml96

2015.05.27
19:40:46

대부분 아니면 과반수의 엔진이 가능한건가요???

swh05284@gmail.com

2015.07.11
21:45:53

역시 저만 사진이 안뜨는게 아니였군요.

그리고 혹시 디버깅후 텍스트 넘기면 렉 엄청나게 걸리는데 저만 그런가요?

컴 사양은 충분하다고 생각되는데 말이죠...

List of Articles
공지 아랄트랜스로 게임하기 앞서 기본 셋팅 확인하기! 4 file
TwoComet
40728   2012-08-30 2014-02-26 20:12
공지 아랄트랜스 - 초보자 가이드 94 file
Hide_D
319498   2008-07-16 2015-02-27 18:02
공지 모든 플러그인, 필터 안내 ('09.03.13) 20
Hide_D
191519   2008-10-31 2009-03-13 23:48
공지 아랄트랜스 0.2 - 초보자 가이드 109 file
아랄
506001   2008-07-16 2013-12-31 09:32