Reversing/PE File Format2012. 10. 28. 22:11

PE File Format 0x01



PE(Portable Excutable) 파일은 Windows OS에서 사용되는 실행 파일 형식입니다.

PE 파일들은 PE header로 시작하며

PE header에는 파일이 실행되기 위해 필요한 모든 정보가 구조체 형식으로 들어있습니다.


0x01. PE 파일의 종류


종류

확장자

 실행 계열

 EXE, SCR

 라이브러리 계열

 DLL, OCX, CPL, DRV

 드라이버 계열

 SYS, VXD

 오브젝트 파일 계열

 OBJ


0x02. PE 파일 구조


Disk 상에 저장되어 있는 PE 파일과 memory에 mapping된 PE 파일의 구조입니다.


Dos header부터 section header까지를 PE header라고 부릅니다.

PE header 밑에 있는 section들을 PE body라고 부릅니다.

각 그림의 양쪽에는 disk 상과 memory 상에서의 주소를 표현하고 있습니다.

Disk 상에서는 offset, memory 상에서는 VA(Virtual Address)로 주소를 표현합니다.


파일이 memory에 mapping 되면 disk 상에서의 모습에 비해 section의 크기, 위치 등이 조금 달라집니다.

Section은 일반적으로 용도별로 코드 영역(.text), 데이터 영역(.data), 리소스 영역(.rsrc)으로 나뉩니다.

Section의 이름, 크기, 개수 등은 개발 도구나 compile 설정에 따라 달라집니다.

Section header에는 각 section에 대한 크기, 위치, 속성 등이 저장되어 있습니다.


실행파일을 PEview로 열어 눈으로 직접 확인해 보겠습니다.


파란 줄의 상자 속이 Dos header 입니다.

Dos signature인 "MZ"로 시작하는 것을 확인할 수 있습니다.


파란 줄의 상자 속이 NT header 입니다.

PE signature인 "PE.."으로 시작하는 것을 확인할 수 있습니다.


파란 줄의 상자 속이 Section header 입니다.

각 section들의 이름이 string으로 저장되어 있는 것을 확인할 수 있습니다.

위 그림에서는 CODE, DATA, .idata, .reloc, .rsrc 총 5개의 section이 있습니다.


'Reversing > PE File Format' 카테고리의 다른 글

PE File Format 0x06  (0) 2012.11.11
PE File Format 0x05  (0) 2012.11.07
PE File Format 0x04  (0) 2012.10.31
PE File Format 0x03  (0) 2012.10.29
PE File Format 0x02  (0) 2012.10.29
Posted by slimV