무민이의 반반무많이

PE 파일의 구조와 이해 ① 본문

Reversing/Basic

PE 파일의 구조와 이해 ①

M00min 2016.09.20 22:28

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)


PE 파일의 구조와 이해 ① : http://moomini.tistory.com/93

PE 파일의 구조와 이해 ② : http://moomini.tistory.com/94

PE 파일의 구조와 이해 ③ : http://moomini.tistory.com/95

PE 파일의 구조와 이해 ④ : http://moomini.tistory.com/96


■ PE Structure


■ File Offset, VA(Virtual Address), RVA(Relative Virtual Address)

  ● File Offset

   - 실제 파일 상에서의 위치

  ● VA(Virtual Address)

   - 프로세스 가상 메모리의 절대 주소

   - RVA + ImageBase = VA

  ● RVA(Relative Virtual Address)

   - 기준 위치(Image Base)에서 부터의 상대 주소

   - 프로세스가 가상 메모리상의 어느 위치에 적재될지 알 수 없어 PE내에서는 RVA 사용


■ DOS Header

typedef struct _IMAGE_DOS_HEADER {

    WORD e_magic;    // Magic Number ("MZ", 0x54AD)

    WORD e_cblp;

    WORD e_cp;

    WORD e_crlc;

    WORD e_cparhdr;

    WORD e_minalloc;

    WORD e_maxalloc;

    WORD e_ss;

    WORD e_sp;

    WORD e_csum;

    WORD e_ip;

    WORD e_cs;

    WORD e_lfarlc;

    WORD e_ovno;

    WORD e_res[4];

    WORD e_oemid;

    WORD e_oeminfo;

    WORD e_res2[10];

    WORD e_lfanew;    // Offset Address Of PE Header

}

- DOS Header의 구조체 크기는 40h

- e_magic과 e_lfanew가 중요

e_magic : DOS Signature (모든 PE 파일은 MZ로 시작)

 e_lfanew : NT Header의 Offset (해당 값이 NT Header 구조체 위치가 되어야 한다.)


■ DOS Stub

- Dos Header 밑에 있는 영역으로, 크기가 일정하지 않고, DOS Stub이 없어도 파일 실행에 문제가 없다.

0 Comments
댓글쓰기 폼