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 |