Packing은 실행 파일에 암호화, 압축, 인코딩 등의 기법을 적용하여 분석을 방해하는 기술입니다.
Unpacking은 이 보호 계층을 제거하고 원래 코드에 접근하는 과정입니다.
| 종류 | 설명 |
|---|---|
| 압축 기반 (e.g. UPX) | 원시 코드를 압축 후 로더에서 압축 해제 |
| 암호화 기반 | 본문을 암호화 후 실행 시 메모리에서 복호화 |
| VM 기반 | 코드를 가상 머신에서 실행 (VMProtect 등) |
| 다단계 패킹 | 여러 패커를 중첩 사용 |
.text 섹션에 실행 코드 없음.UPX0, .data 등 비정상 위치Virtual Size와 Raw Size가 맞지 않음도구: Detect It Easy (DIE), PEiD, Exeinfo PE
upx -d <filename>으로 자동 해제 가능PEiD, x64dbg, Detect It Easy1. PE 구조 확인 → EntryPoint 주소 확인
2. 디버거(x64dbg)로 파일 실행
3. unpack 완료되는 지점에 Breakpoint 설정 (예: `VirtualAlloc`, `GetProcAddress`)
4. 메모리에 원래 코드 로드 후 OEP에서 `dump`
5. Import Table 복원 (Scylla, Import REConstructor 사용)