Microsoft Portable Executable and Common Object File Format — Änderungen 4102 → 4304

Zeile 1: Zeile 1:
 
{{Stub}}
 
{{Stub}}
 
== Aufbau ==
 
== Aufbau ==
−
=== MS-DOS Header ===
+
=== EXE Header ===
−
Dieser Header ist ein Kompatibilitätsheader, der unter MS-DOS ausgeführt wird und meist eine Fehlermeldung anzeigt, die besagt, dass das Programm Windows benötigt.<br>
+
Dieser Header ist der Basisheader jeder Datei im EXE-Format (auch DLL und andere abgeleitete Dateien), worauf sich das PE/COFF-Format aufbaut. Da aber PE/COFF-Dateien all ihre Informationen im PE- bzw. COFF-Header ablegen, könnte man theoretisch den EXE-Header weglassen. Leider ist dem aber nicht so, weil dieser die Offsetadresse zu unserem PE/COFF-Header enthält.
−
Für Lowlevel-Zwecke kann dieser Bereich getrost ausgelassen werden, weil
+
 
−
* Programme eines Nicht-Windowssystem brauchen keine MS-DOS-Kompatibilität
+
Die folgende Tabelle zeigt, was noch vom EXE-Header benötigt wird:
−
* Fast niemand verwendet noch MS-DOS
+
{| {{Prettytable}}
 +
!Offset||Größe||Beschreibung
 +
|-
 +
|0x00||2 Bytes||EXE-Datei Signatur ("MZ")
 +
|-
 +
|0x02||6 Bytes||<i>Unbedeutend</i>
 +
|-
 +
|0x08||2 Bytes||Größe des EXE-Header in 16-Byte-Paragraphen (Wert: 0x0004)
 +
|-
 +
|0x0A||50 Bytes||<i>Unbedeutend</i>
 +
|-
 +
|0x3C||2 Bytes||Offset des PE/COFF-Header
 +
|-
 +
|0x3E||4 Bytes||<i>Unbedeutend</i>
 +
|}
 +
 
 
=== PE Kennzeichnung ===
 
=== PE Kennzeichnung ===
 
An der Stelle 0x3c kommt das Kennzeichnen des PE-Formates. Dieser ist 4-Byte groß und sieht so aus: "PE\0\0".
 
An der Stelle 0x3c kommt das Kennzeichnen des PE-Formates. Dieser ist 4-Byte groß und sieht so aus: "PE\0\0".