반응형

프로그램을 받아서 Die에 넣어보았다.

32비트에 따로 패킹은 되어있지 않은듯 하다.

 

실행 해보면....

키젠 문제 같다 키를 입력하니 틀렸다고 나온다 디버거로 열어보자.

 

 

문자열로 검색하여 출력하는 듯한 어떠한 함수로 들어왔다. CTRL + A로 함수를 구분지어 주고 맨 위로 올라가본다.

 

 

 

문자열을 계속 비교하는 구문이 보인다. 첫번째로 [esp+5] 와 61(a)을 비교하는데 같지 않으면 401135주소로 점프하는데 저 주소는 incorrect를 출력하는 구문이다. 그러므로 [esp+5] 와 61(a)이 같아야한다.

 

[esp+5]에는 뭐가 들어있는지 브레이크 포인트를 걸고 확인해보자.

ESP에는 19F7EC가 들어있고 ESP+5이니 19F7F1에 있는 값은

내가 입력한 키의 2번째 값이 들어있다.

 

이런식으로 계속 아래로 가며 확인해보면,

 

 

esp+A의 주소를 갖고 오는데, esp+A는 1개의 바이트만 가질 수 있지만 아래에 주석으로 5y라는 문자열이 뜨는 이유는,

C언어의 이것을 생각하면 된다.

char *s = "foobar";

s[3] == 'b';


char *x = &s[3]

x == "bar";

esp+A부터 해당하는 주소의 문자열 끝까지 참조하겠다는 뜻이다. 그렇기 때문에 a다음 문자열 중에 5y를 포함하는가? 라고 해석할 수 있다. 그 뒤도 똑같다.

 

정리해보면,

 

  1. 내가 입력한 값의 2번째 위치에는 a가 들어가야한다.
  2. a다음에는 5y가 들어가야한다.
  3. 5y다음에는 R3versing이 들어가야한다.

까지 있다가, 마지막 쯤에

esp+5는 2번째 자리였으니 esp+4는 첫번째 자리가 되므로

 

맨 앞자리의 값과 45(E)를 비교하니 전부 합치면

 

"Ea5yR3versing"이 키가 되겠다.

 

반응형

'Reversing 문제 풀이 > Reversing.kr' 카테고리의 다른 글

Reversing.kr Music Player 4 풀이  (0) 2022.05.13
Reversing.kr Easy Unpack 3 풀이  (0) 2022.03.31
Reversing.kr Easy Keygen 2 풀이  (0) 2022.03.30