1. Windows PE File Structure
What is a Windows PE file?
PE structure visualization
───────────────────────────────────────────────────────────────────
00000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000 MZ.............. ─┐
00000010: b800 0000 0000 0000 4000 0000 0000 0000 ........@....... │── DOS Header
00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ │
00000030: 0000 0000 0000 0000 0000 0000 f000 0000 ................ ─┘
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
00000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468 ........!..L.!Th ─┐
00000050: 6973 2070 726f 6772 616d 2063 616e 6e6f is program canno │─ DOS Stub
00000060: 7420 6265 2072 756e 2069 6e20 444f 5320 t be run in DOS │
00000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000 mode....$....... ─┘
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
000000f0: 5045 0000 4c01 0500 b1c6 a062 0000 0000 PE..L......b.... ─┐
00000100: 0000 0000 e000 0201 0b01 0e1d 0010 0000 ................ │─ PE Header
00000110: 0016 0000 0000 0000 e613 0000 0010 0000 ................ │
00000120: 0020 0000 0000 4000 0010 0000 0002 0000 . ....@......... │
00000130: 0600 0000 0000 0000 0600 0000 0000 0000 ................ │
00000140: 0060 0000 0004 0000 0000 0000 0300 4081 .`............@. │
00000150: 0000 1000 0010 0000 0000 1000 0010 0000 ................ │
00000160: 0000 0000 1000 0000 0000 0000 0000 0000 ................ │
00000170: 8c26 0000 a000 0000 0040 0000 e001 0000 .&.......@...... │
00000180: 0000 0000 0000 0000 0000 0000 0000 0000 ................ │
00000190: 0050 0000 7401 0000 e821 0000 7000 0000 .P..t....!..p... │
000001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ │
000001b0: 0000 0000 0000 0000 5822 0000 4000 0000 ........X"..@... │
000001c0: 0000 0000 0000 0000 0020 0000 c800 0000 ......... ...... │
000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ ─┘
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
000001e0: 0000 0000 0000 0000 2e74 6578 7400 0000 .........text... ─┐
000001f0: 110e 0000 0010 0000 0010 0000 0004 0000 ................ │───── Sections
00000200: 0000 0000 0000 0000 0000 0000 2000 0060 ............ ..` │
00000210: 2e72 6461 7461 0000 340c 0000 0020 0000 .rdata..4.... .. │
00000220: 000e 0000 0014 0000 0000 0000 0000 0000 ................ │
00000230: 0000 0000 4000 0040 2e64 6174 6100 0000 ....@..@.data... │
00000240: 8803 0000 0030 0000 0002 0000 0022 0000 .....0.......".. │
00000250: 0000 0000 0000 0000 0000 0000 4000 00c0 ............@... │
00000260: 2e72 7372 6300 0000 e001 0000 0040 0000 .rsrc........@.. │
00000270: 0002 0000 0024 0000 0000 0000 0000 0000 .....$.......... │
00000280: 0000 0000 4000 0040 2e72 656c 6f63 0000 ....@..@.reloc.. │
00000290: 7401 0000 0050 0000 0002 0000 0026 0000 t....P.......&.. │
000002a0: 0000 0000 0000 0000 0000 0000 4000 0042 ............@..B │
00000400: b878 3340 00c3 cccc cccc cccc cccc cccc .x3@............ │
00000410: b870 3340 00c3 cccc cccc cccc cccc cccc .p3@............ │
00000420: 558b ec83 e4f8 5156 8b75 086a 01ff 15bc U.....QV.u.j.... │
00000430: 2040 0083 c404 8d4d 0c51 6a00 5650 e8bd @.....M.Qj.VP.. │
00000440: ffff ffff 7004 ff30 ff15 b820 4000 83c4 ....p..0... @... │
00000450: 185e 8be5 5dc3 cccc cccc cccc cccc cccc .^..]........... ─┘
──────────────────────────────────────────────────────────────────── Detailed PE structure breakdown
DOS Header
DOS Stub
PE Signature
COFF File Header
Offset
Size (Bytes)
Field Name
Description
OptionalHeader
Offset (PE32)
Offset (PE32+)
Size
Field Name
Description
Data Directory
Offset (PE32)
Offset (PE32+)
Size
Field Name
Description
Sections
Offset
Size (Bytes)
Field Name
Description
Last updated