본문 바로가기
Reversing

패킹&UPX 패킹(디버거로 tool 없이 언패킹)

by 몰라몰라개복치 2020. 11. 3.

패킹

실행 압축이라고 표현할 수 있다.

실행 파일 내부에 있는 코드를 압축하여 평소에는 코드를 압축한 상태로 저장하고 있다가 파일을 실행하면 메모리에서 압축을 해제 시킨 후 파일을 실행시키는 기술.

 

 

 

 

장점

1. 파일의 크기를 줄일 수 있다.(전 후 3~4배의 차이가 있다)

2. 크래커의 리버싱으로부터 보호할 수 있다.

 

 

 

 

 

 

upx 패킹 실습

 

1. upx 툴 다운로드

 

 

 

2. 패킹하기

 

 

upx -o 패킹 후 만들어질 파일 이름 패킹할 파일 => notepad(after).exe 파일을 생성해 줬다.

 

 

 

원본 파일과 패킹 후 파일에 용량 크기 차이가 있는 것을 확인

 

 

패킹 전과 후 구조에도 차이를 보인다.

 

 

 

 

 

 

 

 

 

x32dbg로 패킹 후의 파일을 열어보자

=> ctrl+f8을 누르면 자동으로 step over 트레이싱이 일어난다. 이때 반복되는 LOOP 아래 코드를 찾을 수 있다.

메모리의 변화가 있는 것을 알 수 있었고 이를 통해 무언가 압축을 해제하여 데이터를 쓰고 있다는것을 알 수 있었다.

 

 

 

 

 

 

 

루프 밑 코드를 보면 pop esi 를 찾을 수 있고 다른 곳에서 분기를 받아오는 부분이란 것을 파악했다. 이곳에만 브레이크 포인트를 걸고 f9를 누르면 압축 해제가 된다.

 

 

 

 

 

 

메모리에 압축을 풀고 계속해서 f8로 실행하다가 다음 루프를 만나게 된다.

 

 

 

 

 

 

CMP 명령어로 계속 비교하는 것을 보니까 무결성 체크로 보인다. 이 루프 또한 탈출한다

=> 위에 중단점을 해제한 뒤 이곳에만 브레이크 포인터를 넣고 F9를 눌렀다.

 

 

 

 

 

다시 F8로 트레이스하다가 IAT 테이블을 만드는 작업을 하는 루프를 찾았다. 이 루프 또한 탈출한다 

 

 

 

 

oep로 가는 가는 jmp 명령어는 nopad 명령어 바로 뒤에 나타나는 특징을 가진다.

이를 통해 스택을 정리하고 upx에서 사용하던 스택 정보를 원래대로 돌리게 된다. 

 

 

 

점프 후 확인해 본 결과 패킹하기 전과 동일한 결과가 나온 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

참고:

idlecomputer.tistory.com/189?category=764694

 

UPX packing 과 unpacking (1)

UPX packing 과 unpacking 패킹의 목적은 실행 파일 압축와 암호화 효과를 보기 위해서 인데요 . 패커의 개념을 익히는데 도움이 되고자 windows xp 버전의 notepad 파일을 준비 했습니다. windows vista 부터는

idlecomputer.tistory.com