2020. 1. 13. 00:02ㆍ카테고리 없음
@ 패킹 & 언패킹
1. UPX
- 운영 체제에서 사용하는 실행 파일 압축/해지 프로그램
- 대략 60% 정도의 압축율을 제공한다.
2. 'Packing_1.exe' 파일 UPX 패킹
1) upx을 이용하여 'Packing_1.exe' 파일을 'Packing_1_pack.exe'으로 패킹한다.
upx Packing_1.exe -o Packing_1_pack.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2008
UPX 3.03w Markus Oberhumer, Laszlo Molnar & John Reiser Apr 27th 2008
File size Ratio Format Name
-------------------- ------ ----------- -----------
7680 -> 5120 66.67% win32/pe Packing_1_pack.exe
Packed 1 file.
2) 'Exeinfope'를 이용하여 패킹/언패킹 유무를 확인한다.
3) 'PEview'를 이용하여 패킹/언패킹 PE 구조를 확인한다.
- 원본 파일 -> SECTION .rdata -> IAT
- 패킹 파일 -> SECTION . rsrc -> IAT (DLL/함수 전체 목록 확인 불가능)
- 원본 파일 : 섹션 5개
- 패킹 파일 : 섹션 3개
- 원본 파일 : EP는 0x1340
- 패킹 파일 : EP는 0x7910
- SECTION UPX0 : 메모리에 로드 된 우 압축 코드가 해제될 공간
- SECTION UPX1 : 압축 코드가 저장되어 있는 공간
3. 'Packing_1_pack.exe' 파일 UPX 언패킹
upx -d Packing_1_pack.exe -oPacking_1_unpack.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2008
UPX 3.03w Markus Oberhumer, Laszlo Molnar & John Reiser Apr 27th 2008
File size Ratio Format Name
-------------------- ------ ----------- -----------
7680 <- 5120 66.67% win32/pe Packing_1_unpack.exe
Unpacked 1 file.
C:\리버싱\01_실습\04_패킹&언패킹\실습-1(UPX 패킹&언패킹)>
4. 올리디버거를 이용한 'Packing_2.exe' 언패킹
1) 'Exeinfope'를 이용하여 패킹/언패킹 유무를 확인한다.
2) 'PEview'를 이용하여 패킹/언패킹 PE 구조를 확인한다.
3) 올리디버거로 확인시 'UPX' 패킹 특징
- EP 지점에 'PUSHAD' 명령어를 확인할 수 있다.
- 'PUSHAD' 명령어를 이용하여 범용 레지스터 EAX ~ EDI를 스택에 저장(백업)하는 동작이다.
- 나중에 프로그램 내부에서 언패킹할때 'POPAD' 명령어를 이용하여 스택에 저장된 레지스터 값을 복원한다.
- 'F8'를 실시하여 'PUSHAD' 명령에 의해서 레지스터 값들이 스택에 저장되는지 확인한다.
- 'POPAD' 명령어를 검색하고 해당 위치에 BP를 지정한다.
- 'Ctrl+S' -> 'POPAD' 검색 -> F2 -> 'Ctrl+L' -> 더이상 검색 X -> F9