카테고리 없음

패킹(Packing)에 대하여

서원근양학계정 2021. 11. 3. 15:51

패킹(Packing)이란?

패킹(Packing)은 실행압축이라는 뜻을 가지고 있습니다.

실행압축이란 말 그대로 압축을 푸는 과정 없이 바로 실행시킬 수 있는 압축방법입니다.

 

실행압축은 일반적인 압축인 ZIP, 7Z와는 다릅니다.

 

일반적인 압축은 파일의 확장자가 바뀌고 압축을 풀어야만 안에 있는 것을 실행시킬 수 있습니다.

하지만 실행압축은 파일의 확장자가 바뀌지 않고, 압축을 푸는 과정 없이 압축된 상태로 실행시킬 수 있습니다.

 

 

그 이유는 패킹된 파일은 파일 내부에 패킹 해제 코드를 가지고 있기 때문입니다.

패킹된 파일을 실행하는 순간 패킹 해제 코드를 실행시켜 프로그램 스스로 패킹을 해제하고 프로그램이 실행됩니다.

 

이렇게 파일을 패킹시키는 프로그램을 패커(Packer)라고 하고,

패커 중에서도 안티 리버싱이나 코드 난독화를 이용하여 코드 분석을 어렵게 하는 것을 프로텍터(Protector)라고 부릅니다.

 

패킹을 하는 이유

지금까지 패킹에 대해서 알아보았습니다.

그렇다면 이 패킹은 왜 하는 것일까요?

 

첫 번째로 프로그램 분석을 어렵게 할 수 있습니다.

패킹을 하면 코드를 분석하기 전에 먼저 패킹을 풀어야 하므로 코드를 분석하기가 어려워집니다.

예로 악성코드 같은 경우에는 패킹을 해서 분석하기 어렵게 해서 백신 개발이 늦어지게 됩니다.

또한 코드에 중요한 정보가 있는 경우에도 사용할 수 있습니다.

 

두 번째로 데이터를 압축해서 프로그램의 크기를 줄일 수 있습니다.

 

패킹 관련 도구

대표적으로 PEiD와 Exeinfo PE가 사용됩니다.

이 도구들은 PE 파일에 대한 다양한 정보를 제공하는 정적 분석 도구로,

프로그램이 작성된 언어를 알 수 있고 패킹, 프로텍팅 여부와 컴파일러 등을 확인할 수 있습니다.

 

둘의 차이점은 PEiD는 64비트 파일 분석을 지원하지 않고 개발과 지원이 중단되었으며,

Exeinfo PE를 통해서 얻을 수 있는 정보가 더 많습니다.

한 마디로 정리하면 Exeinfo PE가 PEiD의 상위 호환이라고 보시면 되겠습니다.

PEiD 실행 화면 https://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml

 

Exeinfo PE 실행 화면 http://exeinfo.booomhost.com/?i=1