작업 환경
Version | |
Host PC | Windows 7 |
Guest PC | Windows xp sp3 |
Debugging Tool | ollydbg |
Import IAT Tool | Import Restructor |
OEP 찾기
01. Unpack을 하기 위해서는 우선 OEP의 위치부터 찾아야 하는데 UPX Packing은 EP Code가 PUSHAD와 POPAD 명령어로 싸여있기 때문에 이 점을 이용하면 간단히 OEP를 확인할 수 있습니다.
<그림 1>
02. 0x0006FFA4에 Hardware Breakpoint를 걸도록 하겠습니다.
<그림 2>
03. 이제 F9를 눌러서 실행하면 정확히 POPAD에 멈추게 되며 OEP로 이동하는 JMP 구문 역시 확인할 수 있습니다.
<그림 3>
04. 이제 JMP에 Breakpoint를 걸고 실행하면 JMP 구문에서 멈추고 이대로 Step over를 사용하여 이동하면 드디어 OEP에 도착하게 됩니다.
OEP Dump
<그림 4>
01. 그렇다면 OEP == 100739D라는 것을 잘 기록해두고 <그림 4>와 같이 DUMP를 뜹니다.
단, Revuild Import는 체크 해제해야합니다.
<그림 5>
IAT Linking
01. 이제 이대로 파일을 저장하고 Import Restructor를 실행 시킵니다.
<그림 6>
02. <그림 6>과 같은 순서로 진행한 후 마지막으로 Fix Dump 를 클릭하여 <그림 5>의 Dump를 통해 생성한 파일에 덮어 씌우면 새로운 파일이 생성되고 <그림 7>과 같이 정상적으로 실행되는 것을 확인할 수 있습니다.
<그림 7>
'Security > RCE' 카테고리의 다른 글
(Manual Unpacking 02) UPack Unpacking (0) | 2013.08.18 |
---|---|
(이론 01) PE File Format (0) | 2013.08.14 |
(이론 02) EFLAGS (0) | 2013.08.13 |
(분석 01) WinSock 기초 분석 (0) | 2013.06.14 |
01 WinSock Basic (0) | 2013.06.11 |