
IDA를 통해 파일을 열어보기 전에 1.exe를 실행해 보았다.

아무런 작업을 하지 않은 상태에서 확인을 눌러 보았다.

IDA를 통해 실행한 뒤에 GetDriveTypeA의 값을 입력받는 곳에서 수정을 통해 값을 CD-ROM에 해당하는 것으로 입력하면 될 것 같다.

IDA 실행 화면이다.
GetDriveTypeA 함수를 실행한 뒤에 eax와 esi를 비교해서 둘이 같은지를 살펴본다.
둘이 같다면 Ioc_40103D로 이동해서 CD-ROM으로 인식한다.
GetDriveTypeA 함수를 찾아보았다.
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea
GetDriveTypeA function (fileapi.h) - Win32 apps
Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
docs.microsoft.com

return value를 찾아보니 5를 입력하면 CD-ROM으로 인식할 수 있을 것 같다.

GetDriveTypeA 함수의 리턴값은 EAX에 저장된다.
현재 EAX의 값은 3이기 때문에 DRIVE-FIXED로 인식된다.
해당 값을 더블클릭하여 5(CDROM의 return 값)로 수정한 뒤에 다시 실행하면 성공한다.
EAX 값은 초기값에서 dec를 2번 실행해 2 감소하고, ESI 값은 초기값(0)에서 3번 증가하여 3이 된다.
따라서 초기값이 5(CDROM)이면 cmp에서 두 수의 차이가 0이므로 ZF가 1이 되어 성공 문구가 출력된다.
