물마중

[Reversing] CodeEngn BasicRCE Level1 본문

Reverse Engineering/Reversing 실전

[Reversing] CodeEngn BasicRCE Level1

zweistar2 2011. 5. 30. 20:06


[문제01] HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가?

GetDriveTypeA의 리턴값을 물어보는 것으로 해당 API 함수에 대한 리턴값을 조사한 뒤 인증하면 된다.

하지만 간단히 파일을 다운받을 수 있도록 하였으니 확인해 본다.




파일을 다운받은 후 실행하면 다음과 같은 메세지 창을 차례로 띄운다.



이 메세지 창만으로는 확신할 수 없다... Ollydbg로 파일을 열어 코드를 확인한다.



코드의 끝이다. 문제가 거창하게 느껴질 정도다. MessageBoxA라는 API함수를 호출하여 처음의 메세지창을 띄운 뒤, 해당 함수의 리턴값을 비교한뒤 JE 구문을 만족할 경우 OK~~!@

이 부분으로 점프하게 된다. 해결방법은 2가지... CMP부분에서 같은 값 예를 들어 eax와 eax를 비교하게 한다거나, JE 명령을 JMP로 바꾸어 조건에 상관없이 무조건 점프하도록 조작한다.



문제가 해결됐다. 이 문제;; 출제자의 의도를 모르겠다. 그냥 구석구석 뒤져감 리턴값을 까발리기를 원하는 건지 아니면 이렇게 내가 해결한 방식대로 하길 원했던 건지...

그냥 넘어가자...