본문으로 바로가기

패킹

category Study/reversing 2017. 10. 16. 21:57

패킹이란?


실행압축이란 뜻으로, 프로그램을 실행시키면 자동으로 압축이 풀리면서

일반적인 프로그램을 사용하는것처럼 사용이 가능하다.

실행압축파일도 PE 파일로 내부에 디코딩 코드가 들어가있다.



패킹을 하는 이유

프로그램을 함부로 디버깅 할 수 없도록 하기 위해 사용된다.

이는 데이터를 보호하여 지적재산권을 보호하고 악용을 방지하는데에 큰 도움이 된다.

또한, 데이터를 압축시켜 프로그램의 크기를 줄일 수도 있다.



비손실 압축 vs 손실 압축

비손실 압축은 손실이 없도록 패킹되어있기 때문에 사용시 압축을 해제해야 정상적으로 사용가능하다.

반면에 손실압축은 의도적으로 파일에 손상을 주어 압축률을 높이고, 실행시 그 자체로 사용이 가능하다.

손실압축은 이미지나 비디오, 음악 등에 사용된다.



일반 압축 vs 실행 압축

일반압축은 비손실압축의 종류로써 모든파일을 대상으로 압축이 가능하다.

알집과 같은 전문 프로그램으로 압축 및 해제가 가능하며 압축파일은 자체적으로 실행불가능하다.

프로그램이 없으면 해제할 수 없으나 대상이 모든 파일이며, 높은 압축률을 자랑한다.


반면에 실행압축의 경우 EXE나 DLL과 같은 PE파일을 대상으로 내부의 디코딩 루틴에 의해 해체된다.

때문에 별도의 해제 프로그램을 가지지 않지만 디코딩때문에 실행시간이 아주 약간 느려진다고 한다.



패커의 종류


순수의도로 사용되는 패커

- UPX

- ASPack


불순한 의도의 패커

- UPack

- PESpin

- NSAnti



패킹된 파일의 특징


Section Name이 일반적이지 않거나 패커의 이름을 가진다.


Code Section이 패킹 시 첫번째가 아닐 수 있다



'Study > reversing' 카테고리의 다른 글

안티 디버깅  (0) 2017.10.17
언패킹  (1) 2017.10.17
라이브러리  (0) 2017.10.16
IAT & EAT  (0) 2017.10.12
PE 헤더 구조체  (0) 2017.10.12