Microsoft Portable Executable and Common Object File Format
Aus Lowlevel
Version vom 9. Dezember 2008, 17:24 Uhr von Be59 (Diskussion | Beiträge) (/* Plattformtypen für den COFF-Header fertig gemacht)
Inhaltsverzeichnis
Grober Aufbau
MS-DOS Header
Diese Header ist ein Kompabilitätsheader, womit im MS-DOS ausgedrückt werden kann, dass das Programm
darunter nicht läuft.
Für lowlevel kann dieser Bereich getrost ausgelassen werden, weil
- Programme eines Nicht-Windowssystem brauchen nicht unter MS-DOS zu laufen
- Fast niemand hat noch MS-DOS
PE Kennzeichnung
An der Stelle 0x3c kommt das Kennzeichnen des PE-Formates. Dieser ist 4-Byte groß und sieht so aus: "PE\0\0". (Zwei Nullbytes am Ende) Das ist wiederum ein Kennzeichen von Windows und sollte verändert(nicht weggelassen) werden.
COFF Dateiheader
Hier ist der Common Object File Format Header:
| Offset | Größe | Beschreibung |
|---|---|---|
| 0x00h | 2 Bytes | Hier wird beschrieben, für welche Plattform diese aufführbare Datei geeignet ist. |
| 0x02h | 2 Bytes | Die Anzahl der Sections. |
| 0x04h | 4 Bytes | Die ersten 32-Bytes von der Sekundenanzahl ab 1.Januar 1970 00:00, wann die Datei hergestellt wurde. |
| 0x08h | 4 Bytes | Die Dateioffset dieser COFF-Datei. Wenn Null, dann ist garkeine vorhanden. |
| 0x0Bh | 4 Bytes | Die Anzahl der Eintragungen von der Symboltabelle.(?) |
| 0x0Fh | 2 Bytes | Größe des optimalen Headers der ausführbaren Datei. Achtung, ist nicht für die Objektdatei |
| 0x12h | 2 Bytes | Flags für Eigenschaften der Datei. |
Weitergehende Informationen
Plattformtypen für den COFF-Header
In dieser Tabelle werden die Werte für die Plattformentypen des COFF-Headers erläutert.
| Wert | Plattform |
|---|---|
| 0x00h | Nicht bekannt oder auf jeder Plattform lauffähig. |
| 0x1D3h | Matsushita AM33 |
| 0x8664h | x64 |
| 0x1C0h | ARM little endian |
| 0xEBCh | EFI Bytecode |
| 0x14Ch | x86 kompatible Prozessoren |
| 0x200h | Intel Itanium Prozessorfamilie |
| 0x9041h | Mitsubishi M32R little endian |
| 0x266h | MIPS16 |
| 0x366h | MIPS mit FPU |
| 0x466h | MIPS16 mit FPU |
| 0x1f0h | Power PC little endian |
| 0xf1h | Power PC mit Floating Point Support |
| 0x166h | MIPS little endian |
| 0x1A2h | Hitachi SH3 |
| 0x1A3h | Hitachi SH3 DSP |
| 0x1A6h | Hitachi SH4 |
| 0x1A8h | Hitachi SH5 |
| 0x1C2h | Thumb |
| 0x169h | MIPS little endian WCE v2 |