study/보안

UPX 언패킹 실습

lucykorea414 2024. 1. 31. 20:45
728x90

 

MessageBoxW라는 함수 하나만 들어가 있고 실행하면 다음과 같은 화면이 나온다.

기엽다...

 

실행을 하면 Release에 이렇게 exe 실행파일이 생성된 걸 볼 수 있는데 여기서 upx 패킹/언패킹을 한번 해보자!!

(지금 저 경로 안에 upx.exe가 이미 있음. upx가 다른 경로에 있을 경우 환경변수 설정이 필요함!!)

 

윈도우7 폴더에서 cmd창 바로 여는 꿀팁...
그냥 우클릭하면 안되고
shift+우클릭을 해야 "Open command window here" 이라고 뜬다!!!
난 맥북 써서 몰랐다.....

 

 

여기서 이제 upx를 쳐보면

 

이렇게 뜨는데 압축을 하고 싶으면 upx MsgBox.exe -o MsgBox_upx.exe 라고 하면 바로 압축되는걸 볼 수 있다!

(아까 실습파일에 이미 있어서 지우고 다시 패킹해줬다)

 

 

이때, upx 패킹 된 MsgBox_upx.exe 를 실행해보면 그냥 MsgBox.exe 와 동일하게 실행된다!!

 

 

 

이제 두 실행파일의 PEview를 한번 보겠습니다

 

 

 

 

upx 패킹된 버전의 .rsrc의 IMPORT Address Table

-> 라이브러리를 불러오고(LoadLibraryA) 가상 메모리를 할당(VirtualAlloc)하는 부분

 

 

 

이에 반해 실제 프로그램(패킹 안된 실행파일)을 살펴보면

 

엄청 내용이 많다!! 규모 자체가 다르다

그리고 가상 메모리를 할당하는 부분도 없음.

 

 

 

 

이제 압축을 한번 풀어봅시다

압축을 푸는 명령어는 upx -d MsgBox_upx.exe -o MsgBox_unpack.exe 라고 하면 됨!

 

이걸 PEview로 내용을 보면

 

처음 만든 실행파일 MsgBox.exe와 구조가 똑같은 걸 알 수 있다!!

 

 

이걸 PE scan을 하면

 

이렇게 pack되지 않았다고 뜨는 걸 볼 수 있다! (그리고 C++로 작성했다고도..)

 

728x90

'study > 보안' 카테고리의 다른 글

C언어로 다운로더 만들기  (0) 2024.02.04
수동 언패킹 실습  (0) 2024.02.02
IDA 단축키 모음  (0) 2023.09.15
x86 어셈블리 언어 - 주요 명령어 정리 (2)  (0) 2023.09.08
x86 어셈블리 명령어(1) 리뷰 퀴즈  (0) 2023.09.08