본문 바로가기

reversing/리버싱

패커, 패킹, 언패킹

패커(Packer)에 대해 다시 한번 간단히 정리


패킹(packing)은 실행파일 포장이라는 개념으로 쉽게 이해하시면 될 것 같습니다.

아래 그림은 파일이 패킹되어 메모리에 올라가는 일괄의 과정을 표현한 것으로서 패킹된 파일은 메모리 할당시 재배치(Relocation) 과정을 하지 않기 위해 target 프로그램과 동일한 위치에 .txt 섹션을 배치 합니다. 
Uninitialized data section은 언패킹 후 메모리에 올릴 장소입니다. 

언패킹을 하기 위해서는 먼저 Packer Detection(탐지)을 통해 패커를 확인하는 작업이 선행되어야 합니다.
패커를 확인하는 가장 손쉬운 방법은 잘 알려진 패커 탐지 tool을 이용하는 것이며 탐지 tool로는 PEID, DIE, RDG, exeinfo PE 등 이 있습니다.


아래는 PEID를 통한 패킹의 확인하는 방법입니다.


일반적으로 압축을 얘기합니다만 리버싱 계열에서는 보통 압축과 함께 암호화 및 코드 재배치 등을 의미 합니다.

패킹된 프로그램은 PIED로 쉽게 확인할수 있습니다 . 안될수도 있지만요

아래그림을 보다싶이 UPX로 패킹되어있습니다.

빨간 부분이 UPX로 패킹되었다는 거~


언패킹이란 보호를 목적으로 암호화 및 압축된 실행파일을 원상태로 해제 하는 것을 의미합니다.

언패킹을 하는 이유는 대상 실행파일을 원상태의 정상적인 코드로 언패킹을 하여 프로그램을 패치 한다던가 수정을 한다던가 크랙을 한다던가 하는데 있습니다. 아래그림은 언팩된 프로그램입니다. 언팩이 안된프로그램은 수정이가능하며 만든언어가 나와있습니다.



이제 풀어 보기로 할까? 
 

참고로 도스용 프로그램이다. 

프롬포트 창으로 가서 UPX라 치면 관련 옵션이 나온다.


보이는 옵션중에서 사용할 옵션은 -d

언팩할 exe파일과 같은 폴더로 옮긴다음 upx -d *.exe 를 해주면 언팩이 된 화면을 볼수 있다.




언패킹 한 결과 델파이로 프로그램이 만들어졌다는것을 알수 있다.


낼은 언패킹한걸로 크랙하는걸 해야징~(언패킹하는법을 몰라서 하루를 날렸따;;ㅡ,.ㅡ;)


출처 : 쿨소프트2.0 [ http://coolsoft2.com], 안철수 연구소 ASEC 대응팀[http://core.ahnlab.com/136]

'reversing > 리버싱' 카테고리의 다른 글

abex CrackMe3  (0) 2010.08.14
abex CrackME2  (0) 2010.08.13
CFF CrackMe 3 4 번 -0- 쉽네.  (0) 2010.08.12
CFF CrackMe2 시리얼 문제 해봅시다~  (0) 2010.08.10
나의 첫번째 디버깅 Hello world!  (2) 2010.08.08