1. 문제
1) 문제확인
- 실행 결과 CD-ROM Drive가 아니라고 한다.
2. 접근방법
- GetDriveTypeA()를 호출하고 eax값과 esi를 비교하여 같아야 할 듯하다.
- esi값은 어떤 값인지는 모르겠는데 eax값은 GetDriveTypeA()의 리턴 값으로 생각된다. 최종적으로 "cmp eax, esi"을 실행하기 전까지 eax는 2번 감소하게 된다.
GetDriveTypeA()는 디스크 드라이브 타입을 알아내는 함수이며 리턴 값에는 드라이브 타입을 알 수 있다.
- DRIVE_CDROM일 때 리턴 값이 5인 것을 알 수 있다.
3. 문제풀이
- GetDirveTypeA()의 인자에 C드라이브 path가 들어가며 실행 후 리턴 값으로 3이 eax에 저장되어진다.
- eax가 2번 감소되어 1이 저장되어 있고 esi에는 0x401003이 존재한다.
- 따라서, eax값을 변경하든 esi값을 변경하든 아니면 cmp를 실행하고 ZF값을 변경하든 주작하여 분기해야할 듯하다.
- 나는 걍 편하게 esi값을 1로 변경하고 실행시켰다.
??? 사실 여기서 뭐 어쩌란건지 몰랐는데 문제가 CD-ROM일 때 GetDriveTypeA()의 리턴 값을 구하라는 거였으니 그냥 5를 입력하면 된다.ㅋㅋㅋ
Uploaded by Notion2Tistory v1.1.0