데이터 압축
비손실 압축과 손실 압축이 있다
비손실 압축
파일(데이터) 크기를 줄여서 보관 및 이동에 용이하도록 하려는 목적으로 사용된다. 파일을 사용하 때는 해당 압축을 해제해서 사용(이 과정에서 데이터의 무결성이 보장되어야 함)
대표적인 비손실 압축 알고리즘은 Run-Length, Lempel-Ziv, Huffman 등이 있다
손실 압축
파일(데이터)에 의도적인 손상을 주어 압축률을 높이는 목적으로 사용된다. 주로 멀티미디어 파일들(jpg, mp3, mp4)은 대부분 손실 압축기법을 사용한다
실행 압축
- 실행 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술이다
- 실행 압축된 파일 역시 PE 파일이며 내부에 원본 PE 파일과 decoding 루틴이 존재한다
- EP 코드에 decoding 루틴이 실행되면서 메모리에서 압축을 해제시킨 후 실행된다
패커
PE 파일 전문 압축기
#1. 사용 목적
- PE 파일의 크기를 줄이고자 하는 목적
- PE 파일의 내부 코드와 리소스를 감추기 위한 목적 : PE 파일 내부의 코드와 리소스(문자열, API name string) 등을 알아보기 힘든 형태의 바이너리로 저장되어 감출 수 있기 때문
#2. 사용현황
유틸리티, 패치 파일, 일반 프로그램 등에 널리 사용되고 있다
#3. 패커 종류
- 순수한 의도의 패커(VirusTotal에서 진단 안 됨) : UPX, ASPack 등
- 불순한 의도의 패커(VirusTotal에서 진단 됨) : UPack, PESpin, NSAnti 등
파일의 패킹 여부 확인하는 법
- 프로그램이 제공하는 기능에 비해 import 항목 개수가 현저히 적은 경우
- import 하는 함수가 LoadLibrary와 GetProcAddress 밖에 없는 경우
- 디버거 또는 디스어셈블러에서 파일을 로드할 때 자동 분석으로 코드 식별이 어려운 경우
- 섹션 이름이 특정 패커를 나타내고 있는 경우
- 실행 파일이 비정상적인 섹션 크기를 가진 경우
프로텍터
- PE 파일을 리버스엔지니어링으로부터 보호하기 위한 유틸리티
- 리버싱을 막기 위한 다양한 기법이 추가되서 프로텍터들로 압축된 PE 파일들의 크기는 원본 PE 파일보다 커지는 경향이 있다
#1. 사용 목적
- 크래킹 방지
- 코드 및 리소스 보호
#2. 사용 현황
- 크래킹에 민감한 보안 프로그램들이 프로텍터를 많이 사용한다
- 일반적인 악성코드(Trojan, worm)에서 많이 사용
#3. 프로텍터 종류
- 상용 프로텍터 : ASProtect, Themida, SVKP 등
- 공개용 프로텍터 : UltraProtect, Morphine 등
참고) 원본 PE 파일의 OEP까지 가야 분석을 시작할 수 있기 때문에 패커와 프로텍터들에 대해 잘 알고 있어야 한다
'리버싱 > 리버싱핵심원리' 카테고리의 다른 글
PE File Format(EAT) (0) | 2019.12.01 |
---|---|
PE File Format(IAT) (0) | 2019.11.29 |
PE File Format(Dos Header ~ Optional Header) (0) | 2019.08.26 |
Process Explorer, 함수 호출 규약 (0) | 2019.08.25 |
3, 4장 요약(바이트 오더링, IA-32 Register) (0) | 2019.08.24 |