upx는 단순히 파일을 압축하는 프로그램이라고 볼 수 있다. 또한 분석을 더욱 어렵게 함으로서 암호화 효과를 기대할 수도 있다.

packing되기 전에 파일 섹션을 살펴보자. PEview를 사용하였다.

image

upx로 packing하였다.

image

파일 사이즈가 절반 가까이 줄은 것을 볼 수 있다.

packing 후 파일 섹션을 살펴보았다.

image

이전과의 차이점을 살펴보면 .text section이 UPX0, .data section이 UPX1으로 변했다.

UPX0

image

upx0 section에는 data가 없다. header를 살펴보았다.

image

Virtual Size는 19000인데, Size of Raw Data 는 0이다. 즉, 프로그램이 실행되었을 때, size가 19000이 되지만, PE 파일 안에서는 0이라는 것이다.

image

실제로 프로그램을 실행하기 전 ida에서 본 UPX0 section이다. 아직 값을 할당받지 못해서 모두 ?로 나와있다.

image

프로그램을 실행한 후에는 압축이 해제 되어서 값이 할당된다.

UPX1

image

upx1은 upx0와 달리 raw data가 존재한다. upx1에는 원본 코드와 압축해제 코드가 들어있다.

upx로 unpacking은 다음과 같이 한다.

image

'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

+ Recent posts