1. Windows PE_개요


64k 보호

STACK

HEAP

 

PE header

.text

.data

.rdate

.idata

.didat

.reloc

.rsc

.tls, .debug

...

 

DLL 및 .edata

 

64k 보호

 

상위 2G 커널 영역

 

 

 

[PE header]           

 

IMAGE_DOS_HEAD 

64 byte

DOS stub

가변

PE Signature

가변

(248±)

IMAGE_FILE_HEADER

IMAGE_OPTIONAL_HEADER

DataDirectory Array

IMAGE_SECTION_HEADER[0]

...

IMAGE_SECTION_HEADER[4]

40 byte

*섹션수

 

 


- PE ( Potable Executable )

 Win32 운영체제가 탑재 된 플렛폼이라면 어디에서라도 실행되는 EXE, DLL.

- RVA ( Relative Virtual Address, 상대적 가상 주소 )

 이미지가 메모리에 로드 되었을 때, 그 시작주소(ImageBase)와의 거리.

 NT의 경우 보통 0x04000000 번지부터 시작 됨.

  (RVA가 0x00001234라면 메모리 상의 주소는 보통 0x04001234가 된다.)

- Section

 가상주소공간에 로드된 뒤 실제 내용을 담고 있는 블록.



* 모든 정의는 WinNT.h


[section header]

코드

.text

프로그램을 실행하기 위한 코드

데이터

.data

초기화 된 전역변수들을 담고 있는 Read, Write 가능한 섹션

.rdata

문자열 표현이나 C++/COM 가상함수 테이블 등 읽기전용 섹션

.bss

초기화 되지 않은 전역변수.

VC7.0에서는 .textbss 매핑시 .data에 병합.

임포트 API정보

.idata

임포트 할 DLL과 API등에 대한 정보(IAT등), .rdata에 병합.

.didat

지연로딩 임포트 데이터

익스포트 API 정보

.edata

익스포트 할 API에 대한 정보, EXPORT 가능한 DLL, PE에만 존재

.rdata나 .text섹션에 병합되어 보이지 않음.

export list file에서 확인 가능하다.

리소스

.rsrc

다이얼로그, 아이콘, 커서 등 리소스에 관련 된 데이터

재배치 정보

.reloc

PE이미지를 원하는 기본주소에 로드하지 못하고 다른 주소에 로드했을 경우 코드 상에서의 관련 주소참조에 대한 정보를 갱신.

TLS

.tls

_declspec(thread) 지시어와 함께 선언되는 스레드 지역 저장소

C++런타임

.crt

C++ 런타임을 지원 (생성자, 소멸자, 함수포인터 등)

short

.sdata

전역 포인터에 상대적으로 주소지정 될 수 있는 읽고 쓰기 가능한 short 데이터 섹션

 

.srdata

.sdata에 들어갈 수 있는 데이터들의 읽기전용 섹션

예외정보

.pdata

IMAGE_RUNTIME_FUNCTION_ENTRY 구조체 배열을 가짐

x86 계열의 CPU만 테이블에 기본한 예외처리를 지원하지 않음

디버깅

.debug$S

OBJ파일에만 존재. 가변길이 코드뷰 포맷 심벌 레코드의 스트림

 

.debug$T

 

.debug$P

미리 컴파일 된 헤더를 사용했을 때 OBJ파일에만 존재.

Directives

.drectve

-defaultlib:LIBC

스페이스문자에 의해 구분, #pragma 구문의 경우 링커에게 소스상에서 옵션을 전달. 이 옵션은 OBJ파일 내에 .drectve 섹션에 저장되어 링커가 자신의 옵션으로 인식하여 최종 PE를 실행하게 된다.

 

 

 

'WINDOWS' 카테고리의 다른 글

윈도우 실행명령  (0) 2013.07.17
컴파일러  (0) 2012.12.24
2. Windows PE_Header - Dos Header, File Header  (0) 2012.09.09
Windows Script Host (WSH)  (0) 2012.09.07
Windows Command  (0) 2012.09.06

+ Recent posts