실행 압축(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
'해킹 > 리버싱엔지니어링' 카테고리의 다른 글
함수 호출 규약 (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 |