0x0 Packer
PE 파일을 unpack 하기 전에 packer 에 대하여 먼저 알아본다.
packer은 사용 용도에 따라 크게 2가지로 나눌 수 있다.
0x01 Compression
- PE 파일의 용량을 줄이기 위한 용도로 활용
0x02 Protector
- 리버싱을 방해하기 위하여 사용
- ex) 카카오톡, 악성코드 등
0x1 Manual Unpacking
_start 함수를 따라가다 보면, 여러 반복문들을 확인할 수 있다.
처음에 kernel32.dll 을 로드하고, 0x409000 에서 0x4994ee 까지 xor 을 하여 복호화를 진행한다.
그 후 VirtualProtect 함수를 이용하여 메모리 영역에서의 실행 권한을 변경한다. 즉 0x405000 부터 0x1000 만큼 변경이 된다.
그리고 0x401000 에서 0x405000 까지 xor 을 하여 복호화를 진행한다.
마지막으로는 0x406000 에서 0x409000 까지 xor 을 하여 복호화를 진행한다.
전반적인 복호화가 끝나고, 0x401150 으로 넘어가게 되고, packing 이 풀어진 코드를 실행한다.
0x2 PEiD
PE 에 대한 정보를 보여주는 프로그램 PEiD 를 이용하여 unpacking 을 해본다.
PEiD 에서 지원하는 플러그인 중에서 Generic OEP Finder 라는 이름의 플러그인이 존재한다.
해당 플러그인을 이용하면 손쉽게 OEP 를 구할 수 있다.
플러그인 분석
PEiD 의 설치 폴더에 가보면 위와 같이 플러그인을 확인할 수 있다.
이 중에서 GenOEP.dll 라이브러리를 분석해 본다.
[추후 추가 예정]
0x3 Reference
'0x00 Reversing > 0x01 Reversing.kr' 카테고리의 다른 글
Reversing.kr :: Ransomware (0) | 2019.12.09 |
---|---|
Reversing.kr :: Easy_ELF (0) | 2019.10.05 |
Reversing.kr :: Easy_Keygen (0) | 2019.02.26 |
Reversing.kr :: Easy_Crack (0) | 2019.02.24 |