알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

UPX packing 과 unpacking (1) 본문

리버싱

UPX packing 과 unpacking (1)

백곳 2018. 5. 28. 22:54

UPX packing 과 unpacking 



패킹의 목적은 실행 파일 압축와 암호화 효과를 보기 위해서 인데요 .


패커의 개념을 익히는데 도움이 되고자 windows xp 버전의 notepad 파일을 준비 했습니다. 


windows vista 부터는 ASLR 기능이 적용되어 메모리를 보는데 처음에 익히는데 직관적인  부분이 적어지기 때문입니다. 


Notepadxp.exe

일단 upx 패커 부터 다운 받어 notepadxp.exe 를 패킹 해 보겠습니다.


https://github.com/upx/upx/releases/tag/v3.94 로 가서


upx394d.zip 를 다운받았습니다.





위와 같이 실행 됩니다.


그러면 이번에는 패킹을 하기 전에 PE 파일을 보면 현재는 아래와 같은 섹션 정보 들을 가지고 있습니다.



그리고 패킹하기전에 OEP entry point 값이 어떻게 생겻는지 미리 봐두겠습니다.


혹시라도 위와 같은 주소로 들어 갔는데 모양이 조금 다르시면



모듈 분석을 눌러 주시면 어셈블러가 분석 됩니다.


이정도만 보고 packing을 해보겠습니다.




용량이 적어 지고 PE 해더를 보겠습니다.

일단 세션 부터가 다릅니다.


첫번쩨 UPX0 세션을 보면 virtSize 는 0xF0000(메모리로 사용하기 위해 할당한 사이즈 )인데 phySize (file에서 사용 하는 size) 는 0 입니다.


이것으로 알수 있는것은 어딘가 압축되어 있는 코드를 압축을 풀때 압축푼 코드를 해당 upx0 에 입력 한다는 의미로 풀이 될수 있습니다.


그리고 UPX1을 보면 phySize 가 있는것을 보면 해당 파일 세션에 압축된 이미지가 있는것을 유추 할수 있습니다.


다음 강좌에서는 이미지로 압축된 코드가 어떻게 원래 작성된 코드로 압축 해제 되어 실행되는지에 대해서 알아 보겠습니다. 




Comments