본문 바로가기

쓰기

음.. 여기다 물어보면 누군가는 대답을 해줄꺼라고 믿고 올려봅니다.

제가 대사가영 잘안잡혀서 포인터로 넣을려고 원래있는곳을 수정하여 콜을넣고

원래는 그콜지점이 nop 였습니다.그기다가 대사를 불런온후 push를 먹여서 스텍에 저장하고 nop로 한번 쉬고 pop로 다시 한후 점프로 원래지점으로 돌려놨습니다.

그레더니 어머나 세상에 게임이 실행이 안되네여.. 그냥 에러가 뜨는게 아니고. 실행중에서 그냥 계속 실행중이었습니다.

 

여기서 질문 하고싶은거는

애초에 저렇게 개조했으면 안되는건가요?

또 무조건 콜로 했으면 끝날떄는 jmp가 아닌 리턴을 했었야 하나요?

제가 개조한걸 예로 들자면

 

 

 

    (개조전)           →       (개조후) 

 

1 mov eax,ecx                 CALL  11

2 LEA XXX                    LEA XXX  

3 LEA XXX                    LEA XXX

 

 

 

 

 

11 NOP                          MOV EAX,ECX  

12 NOP                          PUSH EAX

13 NOP                          NOP (여기다 후킹걸려고했음)

14 NOP                          POP EAX

15NOP                           JMP 2

조회 수 :
392
등록일 :
2013.03.21
16:40:23
엮인글 :
https://arallab.hided.net/79274/622/trackback
게시글 주소 :
https://arallab.hided.net/board_qna/79274

TwoComet

2013.03.21
17:08:45

크게 틀리셨습니다.

문제점이 너무 많아 대표적인것만 태클을 건다면

1. CALL과 그 내부내용으로 하여금 ESP 스택의 -0x8 범위의 내용이 변조되었다.

2. 아랄이 후킹하는 방식중 신형을 제외한 일반 기본 후킹은 후킹지점의 끝단이 RETN으로 끝나 있어야한다.

3. CALL로 들어갔다면 JMP가 아닌 RETN으로 나와라 ( 점프로 나오려면 SUB ESP,4 를 점프 위에 추가하여야한다)

4. 만약 2번을 해결한 상태였다 할지언정 후킹할 범위가 너무 적다.(아랄도 CALL로 후킹하기 때문에 적어도 NOP가 5줄은 있어야한다)

5. 만약 3번 방식을 취했다면 ATCode의 후킹방식은 신형방식으로 밖에 할수없다.

6. 위 1~5 문제점은 고사하고 메모리 덮어쓰기인 EAX 참조를 PUSH로 임시적으로 넣고 포인터를 바꾼후 POP 했으므로

결과적으로는 EAX 포인터 바꿔치기랑 동일하다.

(EAX의 주소를 아랄 주소로 아예 변경해버렸기 때문에 원래 EAX의 전후 내용이 없으므로 아랄 주소 전후를 참조할경우 당연히 에러가 날것이다. 즉, '1 mov eax,아랄버퍼포인터주소' 로 한줄만 수정한거나 다름없습니다.)


정리하면, 완전히 접근부터 끝까지 잘못되었다고 밖에 할말이 없습니다( _ _ )


일단 튕긴이유의 첫번째는 1번탓인데

2번과 3번 둘중의 방식을 취하지 않은 기법으로 ESP가 전체적으로 -0x4가 되었기 때문에

그 밑단 어딘가에서 100% 튕기게 됩니다.

그리고 그 2,3번을 해결했다고 할지언정 4번과 5번에 의해서 또 튕길것이고

4,5번을 해결했다고 하여도

이미 전제조건인 6번에 의해서

메모리 교체를 무식하게 (EAX 주소값을 그냥 아랄버퍼로 교체) 한것과 같으므로

(헷갈리실까봐 한번 더 강조. 즉, '1 mov eax,아랄버퍼포인터주소' 로 한줄만 수정한거나 다름없습니다.)


하위나 상단에서 복구해서 게임내에 변화가 없거나 더 다른 실행에러가 발생할 것입니다.


되도록 EAX의 내용을 어딘가에 복사하거나 복사해온 곳의 위치를 찾는곳이 타당하다고 말씀드리고 싶습니다.

(혹은, 특정 함수를 지나치기전에 수정하면 반영되고, 지나친 후에 수정했을때 반영되지 않는 그런 장소라면 아랄트랜스에 추후 추가할 코드복구+메모리 덮어쓰기 버퍼복구 기능이 추가된다면 암시적으로 해결할 수 있습니다.)

다크짱

2013.03.21
17:45:23

오호 공부가됩니다.

여기서 질문두개만 더해볼꼐영.. 양해해주세요

그러면 위조건을 맟춰는데 실행파일에 개조할곳이 없을경우 그게임이 참조하는 모듈을 개조하여서 사용해도 가능은 하는건지 알고싶스니다.

또하나 아랄도 콜을 후킹하는거라고 하셔는데 그러면 개조시에 최소 후킹할지점은 5바이트는 확보를 해야한다는건가요?

TwoComet

2013.03.21
18:47:25

A1. 정확히 어떤 형태를 말씀하시는지 몰라서 답변하기 어렵군요. 개조할 곳이 없는데 다른 dll 같은 외부에서 참조한다는 소리이신가요? 그러면 dll 주소가 가변이기 때문에 최초에 로드해서 베이스 주소를 LoadLibrary 같은 함수로 딴 후에 사용해야 합니다. 이 부분에 대해서는 dll 기초 어셈블리어 인젝션 지식이 없으면 이야기가 더 이상 진행되지 않습니다.


A2. 5바이트를 확보하시는게 더 좋다는 이야기가 됩니다. 개조를 하다보면 점프문을 연발하게 되는데 이때, 아랄이 후킹해서 5바이트를 꿀꺽한 지점이 점프문이 껴있거나 점프해서 오는 장소가 될경우 라인해석 오류로 인해 튕기게 됩니다.

따라서, 개조를 한다면 가급적 5바이트를 확보하고 혹시 더 필요하다면 CALL 로 후킹지역을 별개로 두시는걸 추천하는 바입니다.

ex.

-----------------------

개조지역 

      100 | call ADR 1100  ;아랄이 후킹하기 위한 지역으로 일시적 이동

개조지역
-----------------------
     1100| nop    ; 후킹지점

     1101| nop

     1102| nop

     1103| nop

     1104| nop

     1105| retn

굴러가는시간

2013.03.21
22:16:28

수정후

F8 또는 F7로

어떻게 바뀌나 직접 확인

List of Articles
주제 최종 글sort 댓글 조회 수
공지 아랄트랜스가 정상 동작하지 않는다면 꼭 읽어주세요. by Hide_D file 2020-05-14 14:28 ppqq 177 291587
혹시 네코파라 3판은 번역할 방법이 없는건가요? by 니카이도아야 2017-11-09 07:59 twocomet 1 1004
지금 당장 오빠에게 여동생이라고 말하고 싶어 오류입니다... by Kysterion file 2017-11-04 22:34 smartpower 5 874
아랄트랜스로 번역을하고 게임을 실행하고 스타트 누르는데 글자나와야하는 타이밍에서 작동이 중지되었습니다 오류뜹니다 도와주세요 ㅠㅠ by 츠치도아이 2017-11-05 09:01 how 4 1373
커스텀 스크립트 사용 방법..ㅠ by 군인 2017-09-19 23:13 군인 2 987
윈10 미만경4 아랄트랜스 적용시 오류가 뜹니다. by qwewqdas file 2017-09-16 00:55 Beancandy 2 1722
神装聖姫エレメンティア 실행 문제 질문합니다 by 이유가뭐야 file 2017-09-11 12:50 귀차니즘=_= 2 1107
노라네코 아랄 사용시 팅김 문제... by 꺄오오옥 2017-08-21 07:07 DetectiveConan 1 1161
긴 하이픈(ー) 이 나올때마다 팅기는 문제 by 다나 file 2017-08-19 14:18 코리아산푸우 11 773
[WAFFLE] 善悪 디버깅에서는 한글이 나오는데 게임에 적용이 안되네요 by FALLERE556 file 2017-08-17 18:00 DetectiveConan 3 1737
선택지 번역하는법 알려주세요! by burruh 2017-08-16 12:08 DetectiveConan 1 1266
올리디버거 오류 질문 by 금금금 file 2017-08-16 12:03 DetectiveConan 1 948
h코드와 at코드 차이점이 뭔가요? by 베르나 2017-08-13 17:57 burruh 1 2334
미만경 4 1.0.1 패치 by dnalcwa file 2017-08-10 08:12 DetectiveConan 1 2453
다운받는 사이트 추천좀 by 난공불락 2017-08-07 09:12 DetectiveConan 1 883
번역문장이 부자연스러운건 어떻게하나요 ? (노라와 황녀와 길고양이 하트 필터+아랄코드 by 샤치쨩 file 2017-08-06 05:09 DetectiveConan 1 1335
연희몽상 폰트오류 by korer 2017-08-03 21:05 브리스 1 478
at 필터 사용법좀 알려주세요 by blashslayer 2017-08-01 12:19 싼불 1 508
ITHVNR H코드 입력 어디에 하는것인가요? by 코크링코 file 2017-07-30 14:18 K P 1 7164
미소녀 만화경 1 세이브가 안돼요 ㅠㅠ by 신부찾을수잇나 2017-07-29 14:26 행인09 2 2332
タラレバ(타라레바)라는 게임아시는분있으신가요?? by Tjems file 2017-07-28 18:50 싼불 1 293