본문 바로가기
해킹/리버싱엔지니어링

실행 압축

by 맑은청이 2020. 4. 28.
728x90
반응형

실행 압축(Run-Time Packer)는 소트웨어 역공학의 단골 주제입니다. 오늘은 이에 대해 알아봅시다. 

 

1. 데이터 압축 

우리가 일상에서도 자주 쓰고있는 게 데이터 압축입니다. 어떤 형태의 파일이나 데이터라도 내부는 바이너리로 되어 있기 때문에 압축 알고리즘을 사용하여 크기를 줄일 수 있습니다. 

 

이 때 압축 본을 100% 복원 시킬 수 있다면 비손실 압축(Lossless Data Compression) 이라고 하고 복원할 수 없다면 손실압축(Loss Data Compression) 이라고 합니다. 

   -비손실 압축 : 7-zip, 빵집과 같은 압축 프로그램을 이용해서 파일을 압축시키는 경우가 비손실 압축의 예에 해당합니다. 대표적인 예로는 Run-Length,Lempel-Ziv,Huffman 등이 있습니다.

 

  -손실 압축 : 파일에 의도적인 손상을 줘서 댓가로 압축률을 높이는 목적으로 사용됩니다. 주로 멀티미디어 파일들(jpg,mp3,mp4)이 대부분 이러한 손실 압축기법을 사용합니다. 그 이유는 이러한 손실이 사람의 눈과 귀가 거의 알아차리지 못하는 수준에서 손상을 입힙니다. 예를 들면 음악에서 사람이 들을 수 없는 주파수 영역을 손상 입히는 것입니다. 

 

2. 실행 압축

말그래도 실행(PE : Poratble Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어 실행되는 순간에 메모리에서 압축을 해제 시킨 후 실행시키는 기술입니다. 

내부 안 원본 PE 파일 + decoding 루틴

 

EP코드에 decoding 루틴이 실행되면서 메모리에서 압축을 해제시킨 후 실행됩니다. 

 

다음 표는 Zip 압축과 실행 압축의 차이점 입니다. 

 

항목 일반 압축  실행 압축
대상파일 모든 파일 PE파일(exe,dll,sys)
압축 결과물 압축(zip,rar 파일) PE파일(exe,dll,sys)
압축 해제 방식 전용 압축해제 프로그램 사용 내부의 decoding 루틴
파일 실행 여부 자체 실행 불가 자체 실행 가능
장점 모든 파일에 높은 압축율로 압축 가능 별도의 프로그램 없이 바로 실행 가능
단점  전용 압축 프로그램 없이 사용 불가 실행할때 마다 decoding 루틴 실행, 실행시간 미세하게 느려짐

 

중요한 차이점은 'PE 파일의 실행이 가능하다' 라는 점 입니다. 일반 PE 파일을 실행 압축 파일로 만들어 주는 유틸리티를 패커라 부릅니다. 또한 좀 더 Anti-Reversing 기법에 특화된 패커를 프로텍터라고 합니다. 

 

패커 : 일반 PE 파일 -> 실행 압축 파일 ( 즉 내부의 decoding 루틴을 포함시키는)

 

 

 

 

-패커 (Packer)

PE 패커란 실행 파일 압축기를 말합니다. 정확한 명칭은 Run-Time 패커로 PE 파일 전문 압축기 입니다. 

 

#목적.1 

PE파일의 크기 줄이기, 네트워크 전송하기도 좋고 보관하기도 좋습니다.

 

#목적2. 

PE파일의 내부 코드와 리소스를 감추기 위한 목적, 압축된 데이터는 바이너리로 저장되기 때문에 내부 코드와 리소스를 감춰줍니다. 

 

#사용현황

DOS 시절 부터 실행 압축의 개념이 존재했습니다. 하지만 그때는 컴퓨터 속도가 빠르지 못해 이 과정이 큰 오버헤드로 작용했습니다. 하지만 이제 PC의 속도가 빨라졌기 때문에 이제 속도의 차이를 느낄 수 없게 됐습니다. 최근에 실행 압축은 유틸리티 패치 ㅍ파일, 일반 프로그램등에서 널리 사용되고 있습니다. 

 

#패커종류

순수한 의도의 패커 : UPX,ASPack 등 

불순한 의도의 패커 : UPack,PESpin, NSAnti 등 ( 악성 프로그램에서 사용됩니다.)

 

 

-프로텍터 

PE 프로텍터(Protector)란 PE 파일을 ' Reverse Code Engineering' 으로부터 보호하기 위한 유틸리티입니다. 일반적인 패커처럼 실행압축만 해주는 게 아니라 리버싱을 막기 위한 다양한 기법이 추가됩니다. 원본 PE파일보다 커지는 경향이 있습니다.  -> 디버깅 굉장히 어려움. OEP(Original Entry Point) 를 찾기가 어려움

 

#목적1

크래킹 방지

#목적2

코드 및 리소스 보호 -> 덤프를 뜨지 못하게 합니다. 

 

#사용 현황

크래킹에 민감한 프로그램에 많이 사용됩니다. 예를 들면 게임 프로그램에 자동으로 같이 설치되는 보안 프로그램들이 있습니다. 

 

#프로젝터 종류

상용 : ASProtect, Themida, SVKP

공개용 : UltraProtect, Morphine

 

 

 

 

 

 

728x90
반응형

'해킹 > 리버싱엔지니어링' 카테고리의 다른 글

함수 호출 규약  (0) 2020.11.18
Base Relocation Table  (0) 2020.05.01
EAT정리  (0) 2020.04.25
IAT 정리  (0) 2020.04.25
OllyDBG 단축키  (0) 2020.04.18