반응형

PE : Program Execute 의 약자, 파일을 실행할 수 있도록 도와주고 프로그램을 열어보았을 때 확인 할 수 있다.


PE파일의 종류

종류

확장자 

종류 

확장자 

실행 

EXE, SCR

드라이버

 SYS, VXD

라이브러리

DLL, OCX,CPI 등

오브젝트

OBJ 


HxD로 열어본 메모장

이렇게 보면 아무것도 모르니 일단 기본 구조를 살펴보죠.


기본 구조

   - PE 구조

DOS HEADER

DOS STUB

.text Section Header

.data Section Header

.rsrc Section Header

### NULL PADDING ###

.text Section Body

### NULL PADDING ###

.data Section Body

### NULL PADDING ###

.rsrc Section Body

### NULL PADDING ###


이렇게 많은 Header 들과 Body들로 이루어져있는데, 하나하나 설명해볼께요.


Dos Header

- 총 40Byte

- 구조체 형태로 값을 가진다.


Dos Header :: Dos Header Structure

typedef struct _IMAGE_DOS_HEADER {

WORD    e_magic;            //Dos 시그니처

WORD    e_chip;

WORD    e_up;

WORD    e_crlc;

WORD    e_cparhdr;

...

LONG    e_lfanew;            //NT 헤더로 가기 위해 offset

} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;


Dos Header 에서는 위에서 보셨듯이 Dos signiture 가 있습니다.(* EXE파일에서 MZ라는 값을 가지죠.)

또 NT Header로 가기위해 오프셋값을 저장해놓는데, 그 오프셋쪽을 가시면 EXE파일과 DLL파일이 각각 50 45라는 16진수 값을 가지고 있을 것이고, 이건 아스키코드로 변경하면  PE라는 값이 됩니다.

'공부' 카테고리의 다른 글

[C++] Template  (0) 2015.01.02
VA & RVA (절대주소, 상대주소)  (0) 2015.01.02
MIPS 명령어  (0) 2014.11.21
새로 알게 된것  (0) 2014.11.02
RTL(Return To Libc)  (0) 2014.11.02
블로그 이미지

KuroNeko_

KuroNeko

,