NOTICE


 PECompact 2.xx --> BitSum Technologies [Overlay] *로 실행 압축된 파일의 Unpacking 방법에 대해 알아봅시다. 이론적인 설명은 배재하고 압축 해제 방법만 간단히 소개하도록 하겠습니다. 분석에 사용한 샘플 파일과 분석 도구 정보는 다음과 같습니다.


 - 샘플 파일 정보

 파일 이름

 perfctrs.dll

 파일 크기

 52,481,411 byte

 MD5

 D4399302930D2563C9F0F7AFA0997EA7


 - 분석 Tool 정보

 파일 이름

파일 이름

OllyDBG.exe

 PEiD.exe

Import REC 1.7c.exe

 



1. 실행 압축 확인

 가장 먼저 해야 할 일은 샘플 파일의 실행 압축 여부를 확인하는 것입니다. PEiD.exe를 사용해 perfctrs.dll 파일의 실행 압축을 확인해보면 [그림 1.1.]과 같습니다.


[그림 1.1.] 실행 압축 확인



2. 압축 해제하기

 perfctrs.dll은 PECompact로 실행 압축 되어 있습니다. 이것을 OllyDBG.exe로 풀어보겠습니다. 해당 샘플을 디버거에 올리면 'MOV EAX, 1001E4D7' 코드를 확인 할 수 있습니다.


[그림 2.1.] perfctrs.dll 시작 코드


 EAX에 들어가는 주소 값, 즉 0x1001E4D7로 이동해 BreakPoint를 설치하고 실행(F9)하면 해당 주소에서 멈춥니다.


[그림 2.2.] 0x1001E4D7 주소로 이동


 그리고 조금 내려가다보면 첫 번째 JUMP 문을 확인 할 수 있습니다. 이 곳까지 왔다면 F7이나 F8을 사용해 JUMP하는 주소(0x1001E3C0)로 이동합니다.


[그림 2.3.] 첫 번째 JUMP 코드 확인


 0x1001E3C0에서 조금 더 내려가다보면 [그림 2.4.]와 같은 세 번째 JUMP 코드가 나타납니다. 여기서 EAX 레지스터에 저장되어 있는 값이 OEP 주소 입니다.


[그림 2.4.] 세 번째 JUMP 코드 확인


 실제 EAX에 들어있는 주소(0x10016EF1)로 이동해보면 OEP를 확인 할 수 있습니다.


[그림 2.5.] OEP 확인 및 덤프 파일 생성 준비


 압축 해제가 완료되고 OEP를 찾았다면 Plugin을 사용해 덤프 파일을 생성합니다. 단 OllyDBG는 IAT를 완벽하게 복구하지 못하기 때문에 Rebuild Import 체크박스를 해제합니다. 


[그림 2.6.] 덤프 파일 생성


 IAT는  Import REC 1.7c.exe Tool을 사용해 복구하도록 합니다. 타깃 프로세스(압축 해제 중인 프로세스)를 선택하고 OEP를 입력한 뒤 Get Imports를 선택해 IAT 정보를 수집합니다.


[그림 2.7.] IAT 복구


 마지막으로 Fix Dump를 선택해 OllyDBG.exe로 만든 덤프 파일에 덮어쓰면 압축 해제 과정이 끝납니다.


[그림 2.8.] 파일 압축 해제 완료


 이상으로 'PECompact 2.xx --> BitSum Technologies [Overlay] *' 압축 해제 과정 포스트를 마치겠습니다.