먼저 abex' crackme #1를 풀고난 뒤 풀었더니 굉장히 쉽게 풀렸다.
이번에는 keyfile을 찾았다는 메세지 창이 떠야 하는 문제였다.
실행시켜 보니까 역시 keyfile을 체크해보라는 메시지 창이 한번 나오고, 그 뒤에 keyfile을 찾을 수 없다는 메시지 창이 나왔다.
코드를 바로 봐보자
코드를 보면 PUSH 값이 막 있고,EAX에 값을 넣어주고 CMP로 EAX 값을 -1과 비교하는 것을 볼 수 있다.
그 뒤에 바로 JE 명령어가 보이는데 그 주소로 가봤더니
keyfile을 찾을 수 없다는 곳이었다.
그래서 keyfile을 찾을 수 있다는 곳의 주소를 넣으면 되겠다고 생각이 들었다.
확인해보니 그 주소는 0040104B였다.
주소를 변경해 실행해보니 문제가 해결되었다!
+) 제대로 된 풀이
코드를 다시 한번 제대로 보면 여러 함수들이 나타나 있는 것을 볼 수 있다.
MessageBoxA와 CreateFileA를 확인할 수 있고
GetFileSize도 확인할 수 있다.
MessageBoxA는 일관된 것을 보니 메시지 창을 띄우는 함수인 것 같고 keyfile을 체크해보라고 했으니까 CreateFileA 함수를 이용하면 해결할 수 있을 것 같다.
구글링해보니, CreateFileA 함수는 윈도우즈 API 파일 관련 함수에 속했다.
파일을 오픈할 때 사용하는 함수라고 한다.
CreateFileA 함수만 살펴보면 Mode에 OPEN_EXISTING 이라고 쓰여져 있는 것을 보아 파일을 OPEN 할 때 쓰이는 것이 맞는 것 같고, FileName에 abex.12c 가 쓰여져 있는 것을 보아 파일 이름이 abex.12c인 파일을 여는 것 같다.
abex.12c 파일명을 가진 파일을 만들면 될 것 같은데, 아까 살펴보지 않은 함수가 하나 더 있다.
바로 GetFileSize인데, 이 함수는 말그대로 파일 사이즈를 가져오는 것 같다. 근데 CMP가 있어서 EAX가 12인지 비교하는 부분이 있다.
그래서 abex.12c 파일명을 가진 12사이즈의 파일을 만들어 보자
(여기서 12는 16진수 이므로 10진수로 18을 의미한다.)
텍스트 파일에 18자리 수를 넣어주고
다시 이름을 바꾸어주었다.
근데 자꾸 오류가 나서 왜 그러지 했더니 ...
파일명이 abex.12c가 아니라 abex.l2c 였던 것이다..........
아무튼 성공 !
'Reversing > Wargame' 카테고리의 다른 글
[CodeEngn] Basic RCE L06 (0) | 2021.02.19 |
---|---|
abex's crackme #2 (0) | 2021.02.18 |
[suninatas] REVERSING 9 (0) | 2021.02.17 |
[XCZ.kr] Prob.9 Easy Reversing (0) | 2021.02.17 |
abex' crackme #1 (0) | 2021.02.16 |
댓글