리버싱공부
Abex crackme # 1
Rasser
2022. 1. 15. 18:16

실행하면 다음과 같은 문구가 뜬다. "내가 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로 패치해도 된다.