| 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 |
************************************** |