코드엔진 문제를 풀어보았다.

코드엔진에 다양한 리버싱 문제들이 많으니 풀면 엄청난 재미와 스트레스를 받을 수 있다 ^_^


문제는 위와 같고 문제 파일을 다운로드 받고 올리디버거로 연다.

근데 어디서 많이 본 문제같다.



위와 같이 이동하게 되고 401000이 기본 시작주소다.. 보통은 말이지.

주소에 빨갛게 칠해진 곳은 내가 풀면서 미리 걸어 둔 곳이다.



역시 베이직 1번답게 매우 쉽다.

우선 진행하면서 본결과 메시지를 먼저 띄우는데

HDD를 CD롬으로 인식하게 만들라고 했다.


그리고 바로 밑에 GetDriveTypeA라는 함수가 있는데...

이 함수에 대해서 찾아보았다.


CDROM으로 인식하게하려면 5로 값이 리턴이 되야한다.

그렇다면 정상적이라면 저 함수는 C드라이브를 하드로 인식하고 3을 리턴할 것이다.


여기까지 F8로 넘어오고 EAX가 3이 리턴 된 것을 알 수 있다.

자.. 이제 중요한것은 바로 밑에서 설명하겠다!!



여기를 보면 EAX를 2번 감소시키고 ESI를 3번 증가 시킨후 검사를 하는 부분(401026)이 있다.

이 JE SHORT 0040103D는 위의 CMP함수 결과에서 받은 값들이 서로 같다면 40103D주소로 이동하라는 뜻이다.

저 주소로 가면 성공메시지를 띄우는 부분이 존재하는 것을 육안으로 확인 할 수 있다.


그렇다면 저 비교하는 구문 전에 EAX를 답으로 바꿔주면 될 것이다.

계산하는 것은 여러분에게 맡기겠다.


결과는 성공.


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

CodeEngn Basic RCE 06 풀이  (0) 2016.10.13
CodeEngn Basic RCE 05 풀이  (0) 2016.10.13
CodeEngn Basic RCE 04 풀이  (0) 2016.10.13
CodeEngn Basic RCE 03 풀이  (0) 2016.10.11
CodeEngn Basic RCE 02 풀이  (0) 2016.10.11

+ Recent posts