|
00 |
DWORD |
Signature |
PE Signature PE.. (50h 45h
00h 00h) |
|
04 |
WORD |
Machine |
014Ch = Intel
386, 014Dh = Intel 486, 014Eh = Intel 586, 0200h = Intel
64-bit, 0162h=MIPS |
|
06 |
WORD |
NumberOfSections |
Number Of Sections |
| 08 |
DWORD |
TimeDateStamp |
Date & time image was created by the linker |
| 0C |
DWORD |
PointerToSymbolTable |
Zero or offset of COFF symbol table in older files |
| 10 |
DWORD |
NumberOfSymbols |
Number of symbols in COFF symbol table |
| 14 |
WORD |
SizeOfOptionalHeader |
Size of optional header in bytes (224 in 32bit exe) |
| 16 |
WORD |
Characteristics |
see below |
| 18 |
********** |
START OF OPTIONAL HEADER |
************************************** |
| 18 |
WORD |
Magic |
010Bh=32-bit executable image 020Bh=64-bit executable
image
0107h=ROM image |
| 1A |
BYTE |
MajorLinkerVersion |
Major version number of the linker |
| 1B |
BYTE |
MinorLinkerVersion |
Minor version number of the linker |
|
1C |
DWORD |
SizeOfCode |
size of code section or sum if multiple code sections |
|
20 |
DWORD |
SizeOfInitializedData |
as above |
| 24 |
DWORD |
SizeOfUninitializedData |
as above |
|
28 |
DWORD |
AddressOfEntryPoint |
Start of code execution,
optional for DLLs, zero when none present |
|
2C |
DWORD |
BaseOfCode |
RVA of first byte of code
when loaded into RAM |
|
30 |
DWORD |
BaseOfData |
RVA of first byte of data
when loaded into RAM |
|
34 |
DWORD |
ImageBase |
Preferred load address |
|
38 |
DWORD |
SectionAlignment
|
Alignment of
sections when loaded in RAM |
|
3C |
DWORD |
FileAlignment
|
Alignment of
sections in file on disk |
|
40 |
WORD |
MajorOperatingSystemVersion |
Major version no. of required operating system |
|
42 |
WORD |
MinorOperatingSystemVersion |
Minor version no. of required operating system |
|
44 |
WORD |
MajorImageVersion |
Major version number of the image |
|
46 |
WORD |
MinorImageVersion |
Minor version number of the image |
|
48 |
WORD |
MajorSubsystemVersion |
Major version number of the subsystem |
| 4A |
WORD |
MinorSubsystemVersion |
Minor version number of the subsystem |
| 4C |
DWORD |
Reserved1 |
|
|
50 |
DWORD |
SizeOfImage |
Amount of
memory allocated by loader for image. Must be a
multiple of SectionAlignment |
|
54 |
DWORD |
SizeOfHeaders
|
Offset of first section,
multiple of FileAlignment |
| 58 |
DWORD |
CheckSum |
Image checksum (only required
for kernel-mode drivers and some system DLLs). |
| 5C |
WORD |
Subsystem |
0002h=Windows GUI,
0003h=console |
| 5E |
WORD |
DllCharacteristics |
0001h=per-process library initialization 0002h=per-process library termination 0003h=per-thread library
initialization 0004h=per-thread library termination
|
| 60 |
DWORD |
SizeOfStackReserve |
Number of bytes reserved for the stack |
| 64 |
DWORD |
SizeOfStackCommit |
Number of bytes actually used
for the stack |
| 68 |
DWORD |
SizeOfHeapReserve |
Number of bytes to
reserve for the local heap |
| 6C |
DWORD |
SizeOfHeapCommit |
Number of bytes actually used
for local heap |
| 70 |
DWORD |
LoaderFlags |
This member is obsolete. |
| 74 |
DWORD |
NumberOfRvaAndSizes |
Number of directory entries. |
|
78 |
********** |
START OF DATA DIRECTORY |
************************************** |
| 78 |
DWORD |
IMAGE_DATA_DIRECTORY0
|
RVA of Export Directory |
| 7C |
DWORD |
|
size of Export Directory |
|
80 |
DWORD |
IMAGE_DATA_DIRECTORY1 |
RVA of Import Directory (array of IIDs) |
|
84 |
DWORD |
|
size of Import
Directory (array of IIDs) |
| 88 |
DWORD |
IMAGE_DATA_DIRECTORY2 |
RVA of Resource Directory |
| 8C |
DWORD |
|
size of Resource Directory |
| 90 |
DWORD |
IMAGE_DATA_DIRECTORY3 |
RVA of Exception Directory |
| 94 |
DWORD |
|
size of Exception Directory |
| 98 |
DWORD |
IMAGE_DATA_DIRECTORY4 |
Raw Offset of Security Directory |
| 9C |
DWORD |
|
size of Security Directory |
| A0 |
DWORD |
IMAGE_DATA_DIRECTORY5 |
RVA of Base Relocation Directory |
| A4 |
DWORD |
|
size of Base Relocation Directory |
| A8 |
DWORD |
IMAGE_DATA_DIRECTORY6 |
RVA of Debug Directory |
| AC |
DWORD |
|
size of Debug Directory |
| B0 |
DWORD |
IMAGE_DATA_DIRECTORY7 |
RVA of Copyright Note |
| B4 |
DWORD |
|
size of Copyright Note |
| B8 |
DWORD |
IMAGE_DATA_DIRECTORY8 |
RVA to be used as Global Pointer (IA-64 only) |
| BC |
DWORD |
|
Not used |
| C0 |
DWORD |
IMAGE_DATA_DIRECTORY9 |
RVA of Thread Local Storage Directory |
| C4 |
DWORD |
|
size of Thread Local Storage Directory |
| C8 |
DWORD |
IMAGE_DATA_DIRECTORY10 |
RVA of Load Configuration Directory |
| CC |
DWORD |
|
size of Load Configuration Directory |
| D0 |
DWORD |
IMAGE_DATA_DIRECTORY11 |
RVA of Bound Import Directory |
| D4 |
DWORD |
|
size of Bound Import Directory |
| D8 |
DWORD |
IMAGE_DATA_DIRECTORY12 |
RVA of first Import Address Table |
| DC |
DWORD |
|
total
size of all Import Address Tables |
| E0 |
DWORD |
IMAGE_DATA_DIRECTORY13 |
RVA of Delay Import Directory |
| E4 |
DWORD |
|
size of Delay Import Directory |
| E8 |
DWORD |
IMAGE_DATA_DIRECTORY14 |
RVA of COM Header (top level info & metadata... |
| EC |
DWORD |
|
size of COM Header
...in .NET executables) |
| F0 |
DWORD |
ZERO (Reserved) |
Reserved |
| F4 |
DWORD |
ZERO (Reserved) |
Reserved |
|
F8 |
********** |
START OF SECTION TABLE |
*******Offsets shown from
here******** |
|
00 |
8 Bytes |
Name1 |
Name of first section header |
|
08 |
DWORD |
misc (VirtualSize) |
Actual size of data in section |
|
0C |
DWORD |
virtual address |
RVA where
section begins in memory |
|
10 |
DWORD |
SizeOfRawData
|
Size of data
on disk (multiple of FileAlignment) |
|
14 |
DWORD |
pointerToRawData |
Raw offset of
section on disk |
| 18 |
DWORD |
pointerToRelocations |
Start of relocation entries for section, zero if none |
| 1C |
DWORD |
PointerToLinenumbers |
Start of line-no. entries for section, zero if none |
| 20 |
WORD |
NumberOfRelocations |
This value is zero for executable images. |
| 22 |
WORD |
NumberOfLineNumbers |
Number of line-number entries for section. |
|
24 |
DWORD |
Characteristics |
see end of
page below |
| 00 |
8 Bytes |
Name1 |
Name of
second section header |
| |
********** |
Repeats for rest of sections |
************************************** |