| DOS 2 Compatible EXE Header | DOS 2.0 Section (for DOS compatability only) |
| Unused | |
| OEM Identifier OEM Info Offset to PE Header |
|
| DOS 2.0 Stub Program & Reloc. Table | |
| Unused | |
| PE Header | Aligned on 8 byte boundary |
| Section Table | |
| Image Pages |
| 0 | SIGNATURE BYTES | CPU TYPE | SECTIONS | |||||
| 8 | TIME/DATE STAMP | RESERVED | ||||||
| 16 | RESERVED | PE/NT HDR SIZE | FLAGS | |||||
| 24 | RESEVED | LMAJOR | LMINOR | RESERVED | ||||
| 32 | RESERVED | RESERVED | ||||||
| 40 | ENTRY POINT RVA | RESERVED | ||||||
| 48 | RESERVED | IMAGE BASE | ||||||
| 56 | SECTION ALIGN | FILE ALIGN | ||||||
| 64 | OS MAJOR | OS MINOR | USER MAJOR | USER MINOR | ||||
| 72 | SUBSYS MAJOR | SUBSYS MINOR | RESERVED | |||||
| 80 | IMAGE SIZE | HEADER SIZE | ||||||
| 88 | FILE CHECKSUM | SUBSYSTEM | DLL FLAGS | |||||
| 96 | STACK RESERVE SIZE | STACK COMMIT SIZE | ||||||
| 104 | HEAP RESERVE SIZE | HEAP COMMIT SIZE | ||||||
| 112 | RESERVED | # INTERESTING RVA/SIZES | ||||||
| 120 | EXPORT TABLE RVA | TOTAL EXPORT DATA SIZE | ||||||
| 128 | IMPORT TABLE RVA | TOTAL IMPORT DATA SIZE | ||||||
| 136 | RESOURCE TABLE RVA | TOTAL RESOURCE DATA SIZE | ||||||
| 144 | EXCEPTION TABLE RVA | TOTAL EXCEPTION DATA SIZE | ||||||
| 152 | SECURITY TABLE RVA | TOTAL SECURITY DATA SIZE | ||||||
| 160 | FIXUP TABLE RVA | TOTAL FIXUP DATA SIZE | ||||||
| 168 | DEBUG TABLE RVA | TOTAL DEBUG DATA SIZE | ||||||
| 176 | IMAGE DESCRTIPTION RVA | TOTAL DECRIPTION SIZE | ||||||
| 184 | MACHINE SPECIFIC RVA | MACHINE SPECIFIC SIZE | ||||||
| 192 | THREAD LOCAL STORAGE RVA | TOTAL TLS SIZE | ||||||
| SECTION NAME | |
| VIRTUAL SIZE | RVA |
| PHYSICAL SIZE | PHYSICAL OFFSET |
| RESERVED | RESEVED |
| RESEVED | SECTION FLAGS |
| DIRECTORY TABLE |
| ADDRESS TABLE |
| NAME PTR TABLE |
| ORDINAL TABLE |
| NAME STRINGS |
| EXPORT FLAGS | |
| TIME/DATA STAMP | |
| MAJOR VERSION | MINOR VERSION |
| NAME RVA | |
| ORDINAL BASE | |
| # EAT ENTRIES | |
| # NAME PTRS | |
| ADDRESS TABLE RVA | |
| NAME PTR TABLE RVA | |
| ORDINAL TABLE RVA | |
| EXPORTED RVA |
| ASCII STRING ::: :::::::: '\0' |
| DIRECTORY TABLE |
| NULL DIR ENTRY |
| DLL1 LOOKUP TABLE |
| NULL |
| DLL2 LOOKUP TABLE |
| NULL |
| DLL3 LOOKUP TABLE |
| NULL |
| HINT-NAME TABLE |
| DLL1 ADDRESS TABLE |
| NULL |
| DLL2 ADDRESS TABLE |
| NULL |
| DLL3 ADDRESS TABLE |
| NULL |
| 0 | IMPORT FLAGS | |
| 4 | TIME/DATA STAMP | |
| 8 | MAJOR VERSION | MINOR VERSION |
| 12 | NAME RVA | |
| 16 | IMPORT LOOKUP TABLE RVA | |
| 20 | IMPORT ADDRESS TABLE RVA | |
| ORDINAL#/HINT-NAME TABLE RVA |
| HINT | ASCII STRING |
| xxxxx | '\0' PAD |
| DIRECTORY TABLE |
| TLS DATA |
| INDEX VARIABLE |
| CALLBACK ADDRESSES |
| START DATA BLOCK VA |
| END DATA BLOCK VA |
| INDEX VA |
| CALLBACK TABLE VA |
| FUNCTION1 VA |
| FUNCTION2 VA |
| NULL |
| RESOURCE DIRECTORY |
| RESOURCE DATA |
| RESOURCE FLAGS | |
| TIME/DATE STAMP | |
| MAJOR VERSION | MINOR VERSION |
| #NAME ENTRY | #ID ENTRY |
| RESOURCE DIR ENTRIES | |
| NAME RVA/INTEGER ID |
| DATA ENTRY RVA/SUBDIR RVA |
| LENGTH | UNICODE STRING |
| DATA RVA |
| SIZE |
| CODEPAGE |
| RESERVED |
| TypeId# | NameId# | Language Id | Resource Data |
|---|---|---|---|
| 00000001 | 00000001 | 0 | 00010001 |
| 00000001 | 00000001 | 1 | 10010001 |
| 00000001 | 00000002 | 0 | 00010002 |
| 00000001 | 00000003 | 0 | 00010003 |
| 00000002 | 00000001 | 0 | 00020001 |
| 00000002 | 00000002 | 0 | 00020002 |
| 00000002 | 00000003 | 0 | 00020003 |
| 00000002 | 00000004 | 0 | 00020004 |
| 00000009 | 00000001 | 0 | 00090009 |
| 00000009 | 00000001 | 0 | 00090009 |
| 00000009 | 00000001 | 1 | 10090009 |
| 00000009 | 00000001 | 2 | 20090009 |
Offset Data
0000: 00000000 00000000 00000000 00030000 (3 entries in this directory)
0010: 00000001 80000028
(TypeId #1, Subdirectory at offset 0x28)
0018: 00000002 80000050 (TypeId #2, Subdirectory at offset 0x50)
0020: 00000009 80000080 (TypeId #9, Subdirectory at offset 0x80)
0028: 00000000 00000000 00000000 00030000 (3 entries in this directory)
0038: 00000001 800000A0 (NameId #1, Subdirectory at offset 0xA0)
0040: 00000002 00000108 (NameId #2, data desc at offset 0x108)
0048: 00000003 00000118 (NameId #3, data desc at offset 0x118)
0050: 00000000 00000000 0000000000040000 (4 entries in this directory)
0060: 00000001 00000128 (NameId #1, data desc at offset 0x128)
0068: 00000002 00000138 (NameId #2, data desc at offset 0x138)
0070: 00000003 00000148 (NameId #3, data desc at offset 0x148)
0078: 00000004 00000158 (NameId #4, data desc at offset 0x158)
0080: 00000000 00000000 00000000 00020000 (2 entries in this directory)
0090: 00000001 00000168 (NameId #1, data desc at offset 0x168)
0098: 00000009 800000C0 (NameId #9, Subdirectory at offset 0xC0)
00A0: 00000000 00000000 00000000 00020000 (2 entries in this directory)
00B0: 00000000 000000E8 (Language ID 0, data desc at offset 0xE8
00B8: 00000001 000000F8 (Language ID 1, data desc at offset 0xF8
00C0: 00000000 00000000 00000000 00030000 (3 entries in this directory)
00D0: 00000001 00000178 (Language ID 0, data desc at offset 0x178
00D8: 00000001 00000188 (Language ID 1, data desc at offset 0x188
00E0: 00000001 00000198 (Language ID 2, data desc at offset 0x198
00E8: 000001A8 (At offset 0x1A8, for TypeId #1, NameId #1, Language id #0
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
00F8: 000001AC (At offset 0x1AC, for TypeId #1, NameId #1, Language id #1
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0108: 000001B0 (At offset 0x1B0, for TypeId #1, NameId #2,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0118: 000001B4 (At offset 0x1B4, for TypeId #1, NameId #3,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0128: 000001B8 (At offset 0x1B8, for TypeId #2, NameId #1,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0138: 000001BC (At offset 0x1BC, for TypeId #2, NameId #2,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved) 0
148: 000001C0 (At offset 0x1C0, for TypeId #2, NameId #3,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0158: 000001C4 (At offset 0x1C4, for TypeId #2, NameId #4,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0168: 000001C8 (At offset 0x1C8, for TypeId #9, NameId #1,
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0178: 000001CC (At offset 0x1CC, for TypeId #9, NameId #9, Language id #0
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0188: 000001D0 (At offset 0x1D0, for TypeId #9, NameId #9, Language id #1
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
0198: 000001D4 (At offset 0x1D4, for TypeId #9, NameId #9, Language id #2
00000004 (4 bytes of data)
00000000 (codepage)
00000000 (reserved)
|
01A8: 00010001 01AC: 10010001 01B0: 00010002 01B4: 00010003 01B8: 00020001 01BC: 00020002 01C0: 00020003 01C4: 00020004 01C8: 00090001 01CC: 00090009 01D0: 10090009 01D4: 20090009 |
| PAGE RVA | |
| BLOCK SIZE | |
| TYPE/OFFSET | TYPE/OFFSET |
| TYPE/OFFSET | ... |
| TYPE |
| OFFSET |
| DEBUG FLAGS | |
| TIME/DATA STAMP | |
| MAJOR VERSION | MINOR VERSION |
| DEBUG TYPE | |
| DATA SIZE | |
| DATA RVA | |
| DATA SEEK | |