Abex crackme # 1

728x90

실행하면 다음과 같은 문구가 뜬다. "내가 HD를 CD-Rom으로 생각하게 만들어라"

 

바로 까보았다.

0x401018 주소를 보면 GetDriveTypeA라는 함수를 호출한다.

 

이 GetDriveTypeA함수의 원형은 다음과 같다

UINT GetDriveTypeA(
  [in, optional] LPCSTR lpRootPathName
);

 

즉 반환 값이 5가 되도록 만들어야 HD가 아닌 CD-Rom으로 인식을 하는거 같다.

 

Step over으로 call 함수를 건너뛰어 넘어보았을때 진행되는 로직은 다음과 같다

1. esi 1 증가

2. eax 1 감소

3. esi 1 증가

4. esi 1 증가

5. eax 1 감소

6. eax와 esi를 비교하고, 같으면 0x40103d로 이동하고 같지 않으면 에러 출력

 

그래서 나는 다음과 같이 풀었다.

1. 6번까지 이동한다(cmp eax, esi)

2. 레지스터 값을 eax와 esi가 서로 같게 수정한다

3. 실행하면 끝

 

변경 전
변경 후

또는 cmp eax, esi 부분을 cmp eax, eax로 패치해도 된다.

728x90

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

Lena's Reversing # 1  (0) 2022.01.16
Abex crackme # 5  (0) 2022.01.16
Abex crackme # 4  (0) 2022.01.16
Abex crackme # 3  (0) 2022.01.16
Abex crackme # 2  (0) 2022.01.15