코드엔진 - basic 01
오늘은 코드엔진 basic 1번 문제 풀어보겠습니다.
MessageBox로 나오는 군요.
확인을 눌러보니 또 나왔습니다.
x32dbg로 확인해 보았습니다.
0x401026부분이 성공, 실패로 가는 분기점 입니다.
cmp, je를 같이 해석해보자면
if (eax==esi) 라고 볼 수 있습니다.
그리고 GetDriveTypeA를 호출합니다.
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
지금은 C드라이브 이니까 3이 반환이 됩니다.
GetDriveTypeA함수는 인자로 넣은 주소의 드라이브가 무엇인지 숫자로 판명해주는 겁니다.
CD-rom으로 인식 시키라고 하였지요?
eax에 GetDriveTypeA의 반환값이 저장됩니다.
그리고 dec,inc로
eax값은 두번 내리고, esi는 3번 올리는 것을 볼 수 있습니다.
최종 eax:1, esi:3
결국 eax반환값은 5면 됩니다.
msdn에서 볼 수 있듯 CDROM 이라면 5를 반환합니다.
성공!!