upx는 단순히 파일을 압축하는 프로그램이라고 볼 수 있다. 또한 분석을 더욱 어렵게 함으로서 암호화 효과를 기대할 수도 있다.
packing되기 전에 파일 섹션을 살펴보자. PEview를 사용하였다.
upx로 packing하였다.
파일 사이즈가 절반 가까이 줄은 것을 볼 수 있다.
packing 후 파일 섹션을 살펴보았다.
이전과의 차이점을 살펴보면 .text section이 UPX0, .data section이 UPX1으로 변했다.
UPX0
upx0 section에는 data가 없다. header를 살펴보았다.
Virtual Size
는 19000인데, Size of Raw Data
는 0이다. 즉, 프로그램이 실행되었을 때, size가 19000이 되지만, PE 파일 안에서는 0이라는 것이다.
실제로 프로그램을 실행하기 전 ida에서 본 UPX0 section이다. 아직 값을 할당받지 못해서 모두 ?로 나와있다.
프로그램을 실행한 후에는 압축이 해제 되어서 값이 할당된다.
UPX1
upx1은 upx0와 달리 raw data가 존재한다. upx1에는 원본 코드와 압축해제 코드가 들어있다.
upx로 unpacking은 다음과 같이 한다.
'Reversing' 카테고리의 다른 글
angr - (2) Claripy (0) | 2020.04.28 |
---|---|
angr - (1) Introduction (0) | 2020.04.27 |
IDA binary patch (0) | 2020.04.23 |
StolenByte (0) | 2020.03.21 |
OEP (0) | 2020.03.21 |