Was ist das ELF-Dateiformat?
Dateien mit der .elf-Erweiterung speichern Binärdaten, die gemäß dem Executable and Linkable Format-Standard strukturiert sind - dem Standard-Ausführungs- und Objektformat für Linux, die meisten Unix-ähnlichen Systeme und viele eingebettete Plattformen. Das Format wurde mit Unix System V Release 4 von Unix System Laboratories eingeführt und später als portabler Tool Interface Standard (TIS) ratifiziert.
ELF-Dateien können folgende Inhaltstypen speichern:
- Ausführbare Dateien für Anwendungen und Werkzeuge, häufig als .bin-Datei verteilt
- Kompilierte Objektdateien, die typischerweise die
.o-Erweiterung tragen - Gemeinsam genutzte Bibliotheken - Dateien mit der .so-Erweiterung
- Core Dumps (Speicher-Snapshots nach einem Prozessabsturz)
Das Format basiert auf einer klar definierten Binärstruktur. Jede .elf-Datei beginnt mit der 4-Byte-Magic-Sequenz 7F 45 4C 46 (0x7F gefolgt von den ASCII-Buchstaben ELF) bei Offset 0, gefolgt von Header-Feldern, die die Zielarchitektur, die Wortgröße (32-Bit oder 64-Bit) und die Byte-Reihenfolge (Little-Endian oder Big-Endian) angeben. Zwei optionale Tabellen - die Programm-Header-Tabelle und die Abschnitt-Header-Tabelle - beschreiben dann, wie Segmente zur Laufzeit geladen werden sollen und wie Abschnitte für die Verlinkung organisiert sind.
Obwohl der ELF-Standard für Unix-Systeme entwickelt wurde, wurde er schnell von anderen Plattformen übernommen, darunter Spielkonsolen wie PlayStation 2 und Wii, Android und viele eingebettete Umgebungen. Der Standard-MIME-Typ ist application/x-elf. Der Inhalt einer .elf-Datei ist nicht menschenlesbar; Werkzeuge wie readelf und objdump (beide Teil von GNU Binutils) können die Header inspizieren und den Code disassemblieren, ohne ihn auszuführen.
Sicherheit
RISIKO: HIGHWie jede ausführbare Datei kann ein ELF Schadsoftware enthalten - Linux/IoT-Botnets (z. B. Mirai-Varianten) werden als ELF-Binärdateien ausgeliefert, und ein ELF läuft mit Ihren Rechten, sobald es ausgeführt wird. Führen Sie ELF-Dateien nur aus vertrauenswürdigen Quellen aus; verwenden Sie nicht 'chmod +x' und führen Sie keine zufälligen Downloads aus. Prüfen Sie unbekannte ELFs sicher mit readelf/objdump oder scannen Sie sie auf VirusTotal, bevor Sie sie starten. Konsolen-Homebrew-.elf-Dateien sind weniger riskant (sie laufen in der Sandbox eines Emulators), beziehen Sie sie aber dennoch aus seriösen Homebrew-Quellen.
Formatdetails
kurz gefasstProgramme zum Öffnen von ELF-Dateien
Technische Details
technische Spezifikation| Magic Number | `7F 45 4C 46` (0x7F gefolgt von ASCII `ELF`) bei Byte-Offset 0, in jeder gültigen ELF-Datei vorhanden |
| MIME-Typ | `application/x-elf` |
| Wortgrößen-Varianten | 32-Bit (EI_CLASS = `01`) und 64-Bit (EI_CLASS = `02`), kodiert bei Offset 4 im ELF-Header |
| Byte-Reihenfolge-Feld | EI_DATA bei Offset 5: `01` = Little-Endian, `02` = Big-Endian; bestimmt durch die Zielhardware-Architektur |
| Dateitypen (e_type) | ET_EXEC (ausführbar), ET_REL (verlagerbares Objekt), ET_DYN (gemeinsames Objekt oder PIE), ET_CORE (Core Dump) |
| Zielarchitekturen | x86, x86-64, ARM, AArch64, MIPS, RISC-V, PowerPC, SPARC und viele weitere, identifiziert durch das `e_machine`-Feld im ELF-Header |
| OS/ABI-Kennung | EI_OSABI-Byte bei Offset 7 gibt die Ziel-ABI an: 0 = System V, 3 = Linux, 9 = FreeBSD, 12 = Solaris |
| Strukturlayout | ELF-Header → optionale Programm-Header-Tabelle (Laufzeit-Lade-Segmente) → Daten → optionale Abschnitt-Header-Tabelle (Link-Zeit-Abschnitte) |
| Wichtige benannte Abschnitte | `.text` (Code), `.data` (initialisierte Daten), `.bss` (null-initialisierte Daten), `.rodata` (Konstanten), `.symtab` / `.dynsym` (Symbole), `.rel` / `.rela` (Verlagerungen) |
| Dynamisches Linken | Gemeinsame Objekte werden zur Ladezeit vom Laufzeit-Linker (`ld.so`) aufgelöst; der erforderliche Interpreter-Pfad ist im `PT_INTERP`-Programm-Header gespeichert |
| Debug-Informationen | DWARF-Debug-Daten sind in `.debug_*`-ELF-Abschnitten eingebettet und können mit dem `strip`-Befehl aus Produktions-Binärdateien entfernt werden |
| Positionsunabhängige ausführbare Dateien | PIE-Binärdateien sind vom Typ ET_DYN und unterstützen ASLR; der Linux-Kernel randomisiert bei jedem Start ihre Basis-Ladeadresse |
| Primäre Inspektionswerkzeuge | `readelf -a` (Header, Symbole, Abschnitte) und `objdump -d` (Disassemblierung), beide von GNU Binutils bereitgestellt |
| Veröffentlicht | 1989 (Unix System V Release 4); adopted as the TIS/System V ABI standard |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | refspecs.linuxfoundation.org |
ELF-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu ELF-Dateien.