본문 바로가기
Wargame Write-Up/Reversing.kr

[Reversing.kr] (Reversing) Replace 풀이

by snwo 2020. 3. 19.

압축파일을풀고 실행하면, 숫자만 입력할 수 있다.

근데 입력하면 종료된다.


EXE32이니까 올리로 분석해보자


입력값 갖고와서 4084D0 에 넣는다.

그리고 0x40466F 호출후 0x404690 으로점프


[ 0x40466F ]

 

0x40467A 호출, 4084D0 += 0x601605C7

0x404689 호출, 4084D0 + 1

RETN, 408xD0 + 2


[ 0x40467A ]

 

4084D0 + 3, RETN 후 다시 4084D0 + 4


[ 0x404690 ]

 

4084D0 ( 0x601605C7 + 4 + 입력값 )eax 에 옮기고,

0x404689 호출 ( 4084D0 + 1 )

그리고 0x40466F 함수에 C39000C6 덮어씀

함수가 변했다. eax 값에 90 ( NOP ) 을 넣어버리고 리턴.

0x40466F 함수 호출 후, EAX +1 , 다시호출.

6E8 을다시넣어서 함수복구,

0x401071 로 점프

하지만, 임의의 주소에 NOP 을 쓰니 오류가 발생하는 것 같다.


[ 0x401071 ]

 

0x401084 로 점프한다. (EndDialog)


함수분석을 통해,  0x601605C7 + 4 + X , 0x601605C7 + 5 + X 에 

각각 90 (NOP) 을 쓸 수 있다는 것을 알았다.

401071 에 EB 11 (JMP SHORT 00401084) 을 90 90 으로 만들면

JMP 문 밑에있는 Correct 세팅함수가 실행될것이다.


0x601605C7 + 4 + X = 0x401071 이 되어야한다.

X=0x401071 - 4 - 0x601605C7

X 의 값이다. 주소값은 8byte 이기때문에

A02A0AA6 만 있으면 된다.

10진수로 변환 ->  2687109798

한번 입력해보자


정상적으로 NOP 으로 패치되어, Correct 로 세팅이 된다.

Auth 에 2687109798 을 입력하면되겠다.