코드엔진 문제를 풀어보았다.
코드엔진에 다양한 리버싱 문제들이 많으니 풀면 엄청난 재미와 스트레스를 받을 수 있다 ^_^
문제는 위와 같고 문제 파일을 다운로드 받고 올리디버거로 연다.
근데 어디서 많이 본 문제같다.
위와 같이 이동하게 되고 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 |