본문 바로가기

Security/RCE

(Manual Unpacking 01) UPX Unpacking

작업 환경



Version
Host PCWindows 7
Guest PCWindows xp sp3
Debugging Toolollydbg
Import IAT ToolImport 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