| Zeile 2: | Zeile 2: | ||
== Aufbau == | == Aufbau == | ||
=== EXE Header === | === EXE Header === | ||
| − | Dieser Header ist der Basisheader jeder Datei im EXE-Format (auch DLL und andere abgeleitete Dateien), worauf sich der PE/COFF-Header aufbaut. Da aber die Informationen für solche Dateien nicht mehr im EXE | + | Dieser Header ist der Basisheader jeder Datei im EXE-Format (auch DLL und andere abgeleitete Dateien), worauf sich der PE/COFF-Header aufbaut. Da aber die Informationen für solche Dateien nicht mehr im EXE-Header abgelegt werden, 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. |
Die folgende Tabelle zeigt, was noch vom EXE-Header benötigt wird: | Die folgende Tabelle zeigt, was noch vom EXE-Header benötigt wird: | ||
| Zeile 37: | Zeile 37: | ||
| 0x02 || 2 Bytes || Die Anzahl der Sektoren | | 0x02 || 2 Bytes || Die Anzahl der Sektoren | ||
|- | |- | ||
| − | | 0x04 || 4 Bytes || Die ersten | + | | 0x04 || 4 Bytes || Die ersten 32 Bits der Sekundenanzahl vom 1. Januar 1970 00:00 bis zur Erstellung der Datei |
|- | |- | ||
| 0x08 || 4 Bytes || Der Dateioffset dieser COFF-Datei. Wenn Null, dann ist keiner vorhanden | | 0x08 || 4 Bytes || Der Dateioffset dieser COFF-Datei. Wenn Null, dann ist keiner vorhanden | ||
| Zeile 106: | Zeile 106: | ||
| 5 || Obsolet. Sollte Null sein | | 5 || Obsolet. Sollte Null sein | ||
|- | |- | ||
| − | | 6 || Das Programm kann mit mehr als 2GB umgehen. In naher Zukunft wird dieser Eintrag | + | | 6 || Das Programm kann mit mehr als 2GB umgehen. In naher Zukunft wird dieser Eintrag obsolet sein |
|- | |- | ||
| 7 || Reserviert | | 7 || Reserviert | ||
| Zeile 180: | Zeile 180: | ||
Bei Objektdateien darf dieser länger sein, bei ausführbaren Dateien ist dies verboten. | Bei Objektdateien darf dieser länger sein, bei ausführbaren Dateien ist dies verboten. | ||
|- | |- | ||
| − | | 8 || 4 || Die | + | | 8 || 4 || Die endgültige Größe eines Sektors, wenn es geladen wird. Bei Objektdateien ist dieser Abschnitt voller Nullen. |
|- | |- | ||
| 12 || 4 || Für ausführbare Dateien die Adresse des ersten Bytes der Sektion relativ zum Image Basis(?). | | 12 || 4 || Für ausführbare Dateien die Adresse des ersten Bytes der Sektion relativ zum Image Basis(?). | ||
Bei Objektdateien ist die Adresse des ersten angelegten Bytes, bevor die Verlagerung abgeschlossen ist. | Bei Objektdateien ist die Adresse des ersten angelegten Bytes, bevor die Verlagerung abgeschlossen ist. | ||
|- | |- | ||
| − | | 16 || 4 || Dies Feld ist gerundet. Entweder die Größe des Sektors(Objektdateien) oder die Größe des initialisierten Daten auf der Festplatte(Bei Imagedateien) Ist dieser Teil kleiner als das Offset 8, dann sind der Rest der Sektorentabelle Nullen. Wenn diese Sektion nur | + | | 16 || 4 || Dies Feld ist gerundet. Entweder die Größe des Sektors(Objektdateien) oder die Größe des initialisierten Daten auf der Festplatte(Bei Imagedateien) Ist dieser Teil kleiner als das Offset 8, dann sind der Rest der Sektorentabelle Nullen. Wenn diese Sektion nur uninitialisierte Daten enthält, dann ist dieser Teil Null. |
|- | |- | ||
| − | | 20 || 4 || Der Dateipointer zur ersten Sektion innerhalb des COFF-Headers. Für Objektdateien sollte dieser Teil an einer 4-Byte-Grenze ausgerichtet sein. Enthält die Sektion nur | + | | 20 || 4 || Der Dateipointer zur ersten Sektion innerhalb des COFF-Headers. Für Objektdateien sollte dieser Teil an einer 4-Byte-Grenze ausgerichtet sein. Enthält die Sektion nur uninitialisierte Daten, dann ist dieser Teil Null. |
|} | |} | ||
Wird noch erweitert | Wird noch erweitert | ||