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 에서 다운로드 받을 수 있다.

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

+ Recent posts