ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Introduction of Pefile Python Library
    카테고리 없음 2010. 12. 27. 21:52
    파이선(Python)리버스 엔지니어링(Reverse Code Engineering)을 함에 있어 가장 유용한 스크립트라고 할 수 있을 것이다. 그 이유는 가장 많은 기능을 가지고 있다는 IDA Pro 에서 IDA API 를 사용할 수 있도록 IDAPython 플러그인이 나왔고 그 후 Pedram Amini 의 PyDbg 나 Ero Carrera의 pefile 이 나오면서 리버스 엔지니어링 분야에서 파이선 언어가 주료로 자리매김하 되었습니다. 이후 이뮤니티 디버거(IMMUNITY)나 BinNavi 에 이르기까지 파이선을 지원하고 있습니다. [1]

    오늘은 파이선에서 pefile 라이브러리를 사용하는 방법에 대해 간략히 알아보도록 하겠습니다.

    우선 pefile 사이트에서 관련 파일을 다운로드 받습니다. 압축을 풀고 pefile.py, pefile.pyc, peutils.py 파일을 파이선 설치 폴더 하위 Lib 폴더에 복사 합니다.

    참고로 맥으로

    pefile 을 사용해보기 위해서 간단히 테스트 해보려면 윈도우 명령어 창을 열어서 다음과 같이 입력하여 결과를 확인해봅니다.

    C:\Temp>python
    Python 2.6.6 (r266:84297, Aug 24 2010, 18:13:38) [MSC v.1500 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pefile
    >>> pe = pefile.PE('c:\\windows\\notepad.exe');
    >>> for section in pe.sections:
    ...    print (section.Name, hex(section.VirtualAddress), hex(section.Misc_VirtualSize), section.SizeOfRawData)
    ...
    ('.text\x00\x00\x00', '0x1000', '0xa770', 43008)
    ('.rdata\x00\x00', '0xc000', '0x3160', 12800)
    ('.data\x00\x00\x00', '0x10000', '0x2844', 6144)
    ('.pdata\x00\x00', '0x13000', '0x6b4', 2048)
    ('.rsrc\x00\x00\x00', '0x14000', '0x1f160', 127488)
    ('.reloc\x00\x00', '0x34000', '0xb8', 512)
    >>>

    이뮤니티 디버거에서 파이선을 사용하는 방법에 대해 자세히 설명해 놓은 문서가 있어 첨부한다. 관심있는 분들은 읽어보시길 바란다.


    간단한 예제로 아래와 같은 파이선 스크립트를 사용할 수 있다.



    [1] 리버스 엔지니어링 10년사 http://nchovy.kr/forum/2/article/555

Designed by Tistory.