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