실행 압축

Wooki·2021년 8월 17일
0
post-thumbnail

데이터 압축

손실 압축과 비손실 압축

파일들은 0과 1의 바이너리로 되어 있기 때문에 적절한 압축 알고리즘을 이용하여 크기를 줄일 수 있다.

이렇게 압축된 파일을 완전히 원래대로 복원 할 수 있는 압축을 비손실 압축 이라 하고
완전히 복원하지 못하고 일부 손실이 발생하는 압축을 손실 압축 이라고 한다.

실행 압축

실행 압축이란 PE파일(실행 파일)을 압축하는 것으로, 파일 내부에 압축 해제 코드를 포함해서
실행이 되는 순간에 메모리에서 압축을 해제하고 실행하는 기술을 말한다.

EP(Entry Point)에서 디코딩이 실행되면서 메모리에 압축을 해제하고 실행한다.
아래는 일반 압축과 실행 압축을 비교해놓은 것이다.

항목일반 압축실행 압축
대상 파일모든 파일PE파일
압축 결과물압축 파일PE파일
압축 해제 방식전용 압축해제 프로그램내부의 Decoding 루틴
파일 실행 여부자체 실행 불가자체 실행 가능
장점모든 파일에 대해서 높은 압축률별동의 해제 프로그램 불필요
단점전용 압축해제 프로그램이 필요하다Decoding과정에 의해서 실행시간이 약간 느려진다

패커

PE패커(Packer)란 실행 파일을 압축시키는 툴을 말한다. Run-Time 패커가 정식 명칭이다.

왜 패커를 사용하나?

  1. PE 파일의 크기를 줄이려는 목적
  2. 내부의 코드와 리소스를 감추기 위한 목적
    -> 압축된 데이터로 악의적 공격자가 역공학을 하기 어렵게 만듬

프로텍터

PE 패커는 단순히 실행 압축을 해주는 것이고, 'Reverse Code Engineering' 즉, 리버싱으로부터 프로그램을 보호하기 위해서 다양한 기법들이 들어간 도구가 PE 프로텍터다.

이런 프로텍터로 압축된 PE 파일들은 다양한 기법들이 들어가기 떄문에 오히려 원래의 PE 파일보다 파일이 커질 수도 있다.

프로텍터 사용 이유?

  1. 크래킹 방지
    -> 보안 프로그램, 게임 보안 프로그램(핵 방지) 등에서 주로 사용된다.
  2. 코드 및 리소스 보호
  3. 악성코드에서 사용
    -> AV(안티 바이러스,백신)이 감지하는 것을 최대한 늦추기 위해서도 사용된다.

위 그림은 notepad.exe와 그것을 UPX패커로 압축시킨 notepad_upx.exe의 PE파일이다.

그림을 잘 살펴보면 압축된 notepad_upx.exe에 특징이 있는데 첫 번째 섹션 .UPX0의 크기가 0이라는 것이다.

PE View로 첫 번째 섹션 헤더를 살펴보니 Vitual Size가 10000이고 Size of Raw Data가 0인 것을 볼 수 있다. 즉 파일에선 0이다가 메모리에 올라갈 때 10000의 크기를 가진다는 것인데..

사실 압축 해제 코드와 압축되어있는 원본 코드는 두 번째 섹션에 존재하고 있다가
프로그램이 실행되면 원본 코드를 첫 번 째 섹션에 해제시키는 구조를 띄고 있다.

profile
웹 개발자

0개의 댓글