abex crack me #1 문제 풀이
abexcm1.exe를 실행시켜 보면, 아래와 같이 Messagebox가 출력됩니다.
Messagebox에 있는 내용을 보면 HD를 CD-Rom으로 생각하게 만들어 보라는 내용입니다.
확인을 누르면 Error Messagebox가 출력되고, CD-ROM drive가 아니라고 출력됩니다.
그리고 확인을 누르면 프로그램이 종료됩니다.
ollydbg로 보면 아주 짧은 어셈블리 코드를 확인할 수 있습니다.
이 문제는 "OK. I really think that your HD is a CD-ROM! :p"를 출력하도록 하는 문제인 듯 합니다.
그럼 분석해 보겠습니다.
0040100E 주소의 MessageBoxA 함수를 실행하면, 메시지 팝업이 출력됩니다.
확인을 누르면 다음 구문이 실행됩니다.
00401018 주소의 GetDriveTypeA 함수를 실행시키면, EAX 값이 변경됩니다. EAX 값에 GetDriveTypeA 함수의 Return value 값이 저장되는 듯 합니다.
msdn에서 GetDriveTypeA 함수를 찾아보면 Return value 0x3이 DRIVE_FIXED이고, 0x5가 DRIVE_CDROM(우리가 찾는 설정)입니다.
그 아래 구문을 수행해보면, ESI를 증가, EAX 감소, ESI를 2번 증가, EAX를 감소시킨 후,
EAX값과 ESI 값을 비교하여, 같으면 0040103D로 점프하고, 아니면 바로 아래 구문이 수행됩니다.
지금 상태에서는 EAX 값이 0x1이고, ESI 값이 0x2라 비교하면 다른 값이기 때문에 바로 아래 구문이 수행될 것입니다.
0040103D 주소로 점프하기 위한 방법은 여러 방법이 있겠지만 JE 명령어를 바꾸어 해결해 보겠습니다.
JE 명령어를 JNZ으로 변경하고 실행시키면, 0040103D 주소로 점프하는 것을 볼 수 있습니다.
그러면 아래와 같이 성공 메시지 박스를 출력하게 됩니다.
'WarGame > crack me' 카테고리의 다른 글
simples crack me #6 문제 풀이 (0) | 2020.08.26 |
---|---|
abex crack me #5 문제 풀이 (0) | 2020.08.26 |
abex crack me #4 문제 풀이 (0) | 2020.08.25 |
abex crack me #3 문제 풀이 (0) | 2020.08.25 |
abex crack me #2 문제 풀이 (0) | 2020.08.25 |