|
| 1 | +# SPDX-FileCopyrightText: 2022 Jeremiah Orians |
| 2 | +# |
| 3 | +# SPDX-License-Identifier: GPL-3.0-or-later |
| 4 | + |
| 5 | +:PE32_base |
| 6 | +# DOS MZ header |
| 7 | +4D 5A # Signature |
| 8 | +00 00 # Number of bytes in the last page. |
| 9 | +00 00 # Number of whole/partial pages |
| 10 | +00 00 # Number of entries in the relocation table. |
| 11 | +00 00 # Header size |
| 12 | +00 00 # Minimum allocation |
| 13 | +00 00 # Maximum allocation |
| 14 | +00 00 # Relocatable segment address for SS |
| 15 | +00 00 # Initial value for SP |
| 16 | +00 00 # Checksum (I don't think is looked at) |
| 17 | +00 00 # Initial value for IP (Seems ignored) |
| 18 | +00 00 # Relocatable segment address for CS (Seems ignored) |
| 19 | +00 00 # The (absolute) offset to the relocation table. |
| 20 | +00 00 # Value used for overlay management. If zero, this is the main executable |
| 21 | +00 00 00 00 00 00 00 00 # Reserved in PE |
| 22 | +00 00 # OEM identifier |
| 23 | +00 00 # OEM info |
| 24 | +00 00 00 00 00 00 00 00 00 00 # The required reserved 20 bytes of NULLS |
| 25 | +00 00 00 00 00 00 00 00 00 00 |
| 26 | +40 00 00 00 # Starting address of the PE header |
| 27 | + |
| 28 | +# [0x40] |
| 29 | +:PE_header |
| 30 | +50 45 00 00 # Signature "PE" |
| 31 | +64 86 # Machine |
| 32 | +01 00 # number of sections |
| 33 | +00 00 00 00 # Timestamp supposedly |
| 34 | +00 00 00 00 # PointerToSymbolTable |
| 35 | +00 00 00 00 # number of symbols |
| 36 | +@OptionalHeader_end>PE_header # SizeOfOptionalHeader |
| 37 | +00 00 # 'Characteristics' |
| 38 | + |
| 39 | +# [0x58] |
| 40 | +# COFF header bits |
| 41 | +0B 02 # Magic PE32+ (64 bit) |
| 42 | +00 00 # Linker version |
| 43 | +00 00 00 00 # size of code |
| 44 | +00 00 00 00 # sizeOfInitializedData |
| 45 | +00 00 00 00 # SizeOfUninitializedData |
| 46 | +00 10 00 00 # AddressOfEntryPoint |
| 47 | +00 00 00 00 # BaseOfCode |
| 48 | +00 00 00 00 00 00 00 00 # ImageBase |
| 49 | +01 00 00 00 # SectionAlignment |
| 50 | +01 00 00 00 # FileAlignment |
| 51 | +00 00 00 00 # OperatingSystemVersion |
| 52 | +00 00 00 00 # ImageVersion |
| 53 | +00 00 00 00 # SubsystemVersion |
| 54 | +00 00 00 00 # Win32VersionValue |
| 55 | +00 00 10 00 # SizeOfImage |
| 56 | +%PE32_text>PE32_base # SizeOfHeaders |
| 57 | +00 00 00 00 # CheckSum (isn't used at all) |
| 58 | +0A 00 # Subsystem |
| 59 | +00 00 # DllCharacteristics |
| 60 | +00 00 00 00 # SizeOfStackReserve |
| 61 | +00 00 00 00 # SizeOfStackCommit |
| 62 | +00 00 00 00 # SizeOfHeapReserve |
| 63 | +00 00 00 00 # SizeOfHeapCommit |
| 64 | +00 00 00 00 # LoaderFlags |
| 65 | +00 00 00 00 # NumberOfRvaAndSizes |
| 66 | + |
| 67 | +# [0xB8] |
| 68 | +# Data directories (has to be 16 entries always 16bytes per entry) |
| 69 | +00 00 00 00 # Export Table |
| 70 | +00 00 00 00 # Size of Export Table |
| 71 | + |
| 72 | +00 00 00 00 # Import Table |
| 73 | +10 00 00 00 # Size of Import Table |
| 74 | + |
| 75 | +00 00 00 00 # Resource Table |
| 76 | +00 00 00 00 # Size of Resource Table |
| 77 | + |
| 78 | +00 00 00 00 # Exception Table |
| 79 | +00 00 00 00 # Size of Exception Table |
| 80 | + |
| 81 | +00 00 00 00 # Certificate Table |
| 82 | +00 00 00 00 # Size of Certificate Table |
| 83 | + |
| 84 | +00 00 00 00 # Base Relocation Table |
| 85 | +00 00 00 00 # Size of Base Relocation Table |
| 86 | + |
| 87 | +00 00 00 00 # Debug Table |
| 88 | +00 00 00 00 # Size of Debug Table |
| 89 | + |
| 90 | +00 00 00 00 # Architecture Data Table |
| 91 | +00 00 00 00 # Size of Architecture Data Table |
| 92 | + |
| 93 | +00 00 00 00 # Global Pointer |
| 94 | +00 00 00 00 # NULL |
| 95 | + |
| 96 | +00 00 00 00 # TLS Table |
| 97 | +00 00 00 00 # Size of TLS Table |
| 98 | + |
| 99 | +00 00 00 00 # Load Config Table |
| 100 | +00 00 00 00 # Size of Load Config Table |
| 101 | + |
| 102 | +00 00 00 00 # Bound Import Table |
| 103 | +00 00 00 00 # Size of Bound Import Table |
| 104 | + |
| 105 | +00 00 00 00 # Import Address Table |
| 106 | +00 00 00 00 # Size of Import Address Table |
| 107 | + |
| 108 | +00 00 00 00 # Delay Import Descriptor Table |
| 109 | +00 00 00 00 # Size of Delay Import Descriptor Table |
| 110 | + |
| 111 | +00 00 00 00 # CLR Runtime header table |
| 112 | +00 00 00 00 # Size of CLR Runtime Header table |
| 113 | + |
| 114 | +# [0x130] |
| 115 | +:OptionalHeader_end |
| 116 | + |
| 117 | +00 00 00 00 00 00 00 00 # MUST BE NULL |
| 118 | + |
| 119 | +# no idea what it is yet |
| 120 | +00 00 00 00 00 00 00 00 |
| 121 | +00 00 00 00 00 00 00 00 |
| 122 | + |
| 123 | +# [0x148] |
| 124 | +# Start of section headers |
| 125 | +2E 74 65 78 74 00 00 00 ; Name of the section: ".text" |
| 126 | +%ELF_end>PE32_text ; VirtualSize |
| 127 | +00 10 00 00 ; VirtualAddress |
| 128 | +%ELF_end>PE32_text ; SizeOfRawData |
| 129 | +70 01 00 00 ; PointerToRawData |
| 130 | +00 00 00 00 ; PointerToRelocations |
| 131 | +00 00 00 00 ; PointerToLinenumbers |
| 132 | +00 00 ; NumberOfRelocations |
| 133 | +00 00 ; NumberOfLinenumbers |
| 134 | +00 00 00 00 ; 'Characteristics' |
| 135 | + |
| 136 | +# [0x170] |
| 137 | +:PE32_text |
0 commit comments