본문 바로가기

리버싱

reversing.kr (Replace.exe)

이런 바이너리가 주어진다.

WINAPI에 BreakPoint를 설치해보면 다음과 같이 나온다.

0040106C의 JMP를 따라가면 다음 코드가 나오는데, 

00401071로 다시 점프함을 알수있다.

F9으로 쭉 실행시키면 예외가 발생되는데, [eax]주소에 nop을 설치하려다 예외가 발생되어서 실행이 멈추어진것이다.

정리해보면, 00401071주소의 Jmp를 nop으로 만들어서 Correct문자열을 출력시키면 되는것이다.

 

eax의 값를 보면 다음과 같이 나왔다.

입력은 1234였고, inc명령을 통해서 + 1이 진행되는걸 알고있다. 

0을 기준으로 계산하면 어떤식으로 계산하는지 빠르게 알수있을것같다.

 

-1을 넣어야하는데, 음수를 받지않으니 16진수로 FFFFFFFF -> 4294967295를 넣는다.

+1을 진행하면 0이 나온다.

 

601605CA가 나왔다.

 

정리해보면 다음과 같다.

1234 -> 1235 -> 6016A9D
-1 -> 0 -> 601605CA

 

계산은 다음과 같이 진행되었다는걸 유추할수있다.

-1 + 1 + 601605CA 
따라서 다음 식이 나온다

 

input + 1 + 601605CA = eax

임으로, 다음과 같이 생각할수 있다.
(n = 1, m = 0x601605CA)

(x + n) + m = y
(y - n) - m = -x

 

다음 식에 0x401071을 넣는다면..

401071 - 1 - 601605CA = - (FFFFFFFFA02A0AA6)

마이너스 부호가 한번 더 들어가있음으로 FF를 지워주면 A02A0AA6가 나온다.

A02A0AA6 -> 2687109798
2687109798가 정답이다.

 

 

 

'리버싱' 카테고리의 다른 글

해킹의 방어에 대한 개인적인 생각  (1) 2020.09.02
64비트 프로세스 은닉  (3) 2020.04.09
reversing.kr (Music_Player.exe)  (0) 2020.03.27
reversing.kr (Easy_UnpackMe.exe)  (0) 2020.03.27
reversing.kr (Easy_KeygenMe.exe)  (0) 2020.03.27