본문 바로가기

Reversing/CodeEngn

CodeEngn Basic 01





Delphi 통합환경에서 어셈블리어로 작성한 것으로 보인다.





Entry Point.어렵지 않은 로직이다.


MessageBox 로 자신을 속여보라는 String 을 출력하고

GetDriveTypeA 를 통해 CDROM 여부를 확인 후

확인시 성공출력, 실패시 실패문 출력 정도로 해석 가능하다.





여기서 잠깐 MessageBoxA 와 GetDriveTypeA API에 대해 알아보고 가도록 하자.




int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType); 



메세지박스 출력을 위한 함수이다.


*오너 윈도우 =  메시지 상자를 소유한 윈도우를 말하며 메시지 박스는 오너 윈도우의 중앙에 나타나며 

메시지 박스가 떠 있는 동안 오너 윈도우는 사용할 수 없는 상태가 된다. 메시지 박스를 닫아야만 오너 윈도우를 사용할 수 있다. 





UINT WINAPI GetDriveType( _In_opt_ LPCTSTR lpRootPathName );



드라이브가 removable, fixed, CD-ROM, RAM disk, or network drive 인지 확인하는 함수이다.


리턴값은 다음과 같다.




필자의 노트북에는 부가적으로 연결된 드라이브가 없으므로

3이 리턴 될 것이다.






예상대로 EAX 에 3이 리턴되었다.


이때 문제가 원하는 답인 CD-ROM 으로 인식하기 위해서는 EAX 의 값을 1이 아닌 5로 바꿔주면 된다.





변경을 원하는 레지스터를 더블클릭하면 값을 바꿀 수 있다.





성공이다.


답은 5이다.






//


CodeEngn 코드엔진 1번





'Reversing > CodeEngn' 카테고리의 다른 글

CodeEngn Basic 06  (0) 2018.04.12
CodeEngn Basic 05  (0) 2018.04.01
CodeEngn Basic 04  (0) 2018.04.01
CodeEngn Basic 03  (0) 2018.04.01
CodeEngn Basic 02  (0) 2018.04.01