readelf aus den GNU Binutils zeigt die Struktur von ELF-Dateien an — dem Standard-Binärformat für ausführbare Programme und Bibliotheken unter Linux. Anders als objdump-Befehle disassembliert es nicht, sondern präsentiert Header, Sektionen, Symbole und Abhängigkeiten als Klartext.
Die wichtigsten Optionen
readelf -h programm # ELF-Header: Klasse, Endianness, Entry Point
readelf -S programm # Sektionen: .text, .data, .rodata, .debug_*
readelf -s programm # Symboltabelle
readelf -r programm # Relokationen
readelf -d programm # dynamische Sektion: DT_NEEDED-Abhängigkeiten
readelf -l programm # Program-Header (Segmente)
readelf -a programm # alles auf einmal
Praxis-Beispiele
readelf -h /bin/lszeigt den Dateityp (meist DYN = PIE), die Ziel-Architektur (zum Beispiel X86-64) und die Einstiegsadressereadelf -d programmlistet die benötigten Shared Libraries unterNEEDED— nützlich, um fehlende Abhängigkeiten zu erkennenreadelf -s programm | grep FUNCfindet definierte Funktionen; fehlt die Symboltabelle, ist die Datei gestrippt- Für Malware-Analyse und Reverse Engineering:
readelf -a dateiliefert den kompletten Überblick über das ELF-Format readelf -x .rodata programmgibt eine Sektion als Hexdump aus,readelf -p .rodataals Strings
Einordnung
Die Symbole, Sektionen und Relokationen, die readelf anzeigt, erzeugt der Compiler; der Linker setzt sie zu einem lauffähigen Programm zusammen. Die Symboltabelle ist dabei der Schlüssel zwischen Maschinencode und Quelltext.
Verwandte Grundlagen: perf-Befehle (Performance-Profile), ltrace-Befehle (Bibliotheksaufrufe).