반응형
데이터 압축
어떤 형태의 파일이든 내부는 바이너리로 되어 있음 -> 압축 알고리즘을 사용해 크기를 줄일 수 있음
비손실 압축 | 압축 파일 100% 복원 가능 보관 및 이동에 용이하도록 하려는 목적으로 사용 7-zip, 빵집과 같은 프로그램 이용 Run-Length, Lempel-Ziv, Huffman 알고리즘 |
손실 압축 | 압축 파일 100% 복원 불가 압축률을 높이는 목적 멀티미디어 파일들(jpg, mp3, mp4)에서 대부분 사용 |
실행 압축
- 실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술
- 실행 압축된 파일도 PE파일, 내부에 원본 PE파일과 decoding루틴 존재. EP코드에 decoding루틴이 실행되며 메모리에서 압축을 해제시킨 후 실행
항목 | 일반 압축 | 실행 압축 |
대상파일 | 모든 파일 | PE파일 |
압축 결과물 | 압축 파일 | PE파일 |
압축해제 방식 | 전용 압축해제 프로그램 사용 | 내부의 decoding 루틴 |
파일 실행 여부 | 자체 실행 불가 | 자체 실행 가능 |
장점 | 모든 파일에 대해 높은 압축물로 압축 가능 | 별도의 해제 프로그램 없이 바로 실행 가능 |
단점 | 전용 압축해제 프로그램이 없으면 해당압축 파일 사용 불가 | 실행할 때마다 decoding 루틴이 호출되기 때문에 실행시간이 아주 미세하게 느려짐 |
패커
PE Packer란 실행 파일 압축기
사용 목적
PE 파일의 크기를 줄이고자 하는 목적
PE 파일의 내부 코드와 리소스를 감추기 위한 목적
종류
순수한 의도의 패커 | VirusTotal에서 진단 안 됨 UPX, ASPack 등 |
불순한 의도의 패커 | VirusTotal에서 진단됨 UPack, PESpin, NSAnti 등 |
프로텍터데이터 압축
어떤 형태의 파일이든 내부는 바이너리로 되어 있음 -> 압축 알고리즘을 사용해 크기를 줄일 수 있음
비손실 압축 | 압축 파일 100% 복원 가능 보관 및 이동에 용이하도록 하려는 목적으로 사용 7-zip, 빵집과 같은 프로그램 이용 Run-Length, Lempel-Ziv, Huffman 알고리즘 |
손실 압축 | 압축 파일 100% 복원 불가 압축률을 높이는 목적 멀티미디어 파일들(jpg, mp3, mp4)에서 대부분 사용 |
실행 압축
실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술
실행 압축된 파일도 PE파일, 내부에 원본 PE파일과 decoding루틴 존재. EP코드에 decoding루틴이 실행되며 메모리에서 압축을 해제시킨 후 실행
항목 | 일반 압축 | 실행 압축 |
대상파일 | 모든 파일 | PE파일 |
압축 결과물 | 압축 파일 | PE파일 |
압축해제 방식 | 전용 압축해제 프로그램 사용 | 내부의 decoding 루틴 |
파일 실행 여부 | 자체 실행 불가 | 자체 실행 가능 |
장점 | 모든 파일에 대해 높은 압축물로 압축 가능 | 별도의 해제 프로그램 없이 바로 실행 가능 |
단점 | 전용 압축해제 프로그램이 없으면 해당압축 파일 사용 불가 | 실행할 때마다 decoding 루틴이 호출되기 때문에 실행시간이 아주 미세하게 느려짐 |
패커
PE Packer란 실행 파일 압축기
사용 목적
PE 파일의 크기를 줄이고자 하는 목적
PE 파일의 내부 코드와 리소스를 감추기 위한 목적
종류
순수한 의도의 패커 | VirusTotal에서 진단 안 됨 UPX, ASPack 등 |
불순한 의도의 패커 | VirusTotal에서 진단됨 UPack, PESpin, NSAnti 등 |
프로텍터
PE 파일을 'Reverse Code Engineering'으로부터 보호하기 위한 유틸리티
사용목적
크래킹 방지
코드 및 리소스 보호
종류
사용 프로텍터 | ASProtect, Themida, SVKP 등 |
공개용 프로텍터 | UltraProtect, Morphine 등 |
notepad.exe vs notepad_upx.exe
- PE header의 크기는 동일
- 섹션 이름 변경
- 첫 번째 섹션의 RawDataSize = 0(파일에서의 크기는 0)
- EP(Entry Point)는 두 번째 섹션에 위치
- 리소스 섹션(.rsrc)의 크기는 거의 변하지 않았음
반응형
'공부해요 > 리버싱_핵심원리' 카테고리의 다른 글
16. Base Relcoation Table (4) | 2024.10.09 |
---|---|
15. UPX 실행 압축된 notepad 디버깅 (0) | 2024.10.09 |
13. PE File Format (1) | 2024.10.02 |
11장. Lena's Reversing for Newbies (0) | 2024.09.24 |
10장. 함수 호출 규약 (0) | 2024.09.22 |