반응형
프로그램을 받아서 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를 포함하는가? 라고 해석할 수 있다. 그 뒤도 똑같다.
정리해보면,
- 내가 입력한 값의 2번째 위치에는 a가 들어가야한다.
- a다음에는 5y가 들어가야한다.
- 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 |
최근댓글