히공

코드엔진 - basic 01 본문

reverse engineering/CodeEngn

코드엔진 - basic 01

heegong 2020. 9. 10. 20:32
728x90

오늘은 코드엔진 basic 1번 문제 풀어보겠습니다. 

 

 

 

 

 

 

 

MessageBox로 나오는 군요.

 

 

 

 

확인을 눌러보니 또 나왔습니다.

 

 

 

 

 

 

 

 

 

x32dbg로 확인한 모습

 

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를 반환합니다.

 

 

 

 

 

 

 

 

 

 

 

성공!!

'reverse engineering > CodeEngn' 카테고리의 다른 글

코드엔진 - basic 06  (6) 2020.09.16
코드엔진 - basic 05  (0) 2020.09.10
코드엔진 - basic 04  (0) 2020.09.10
코드엔진 - basic 03  (0) 2020.09.10
코드엔진 - basic 02  (0) 2020.09.10
Comments