Eine minimale ausführbare ELF-Datei erfordert nur den ELF-Header und mindestens einen Programm-Header, um funktionsfähig zu sein. Wenn ich jedoch strip auf einer kurzen ausführbaren Datei ausführe, wird entschieden, die Abschnittsüberschriften-Tabelle oder den Abschnitt "Abschnittszeichenfolgen" nicht wegzuwerfen und sie beizubehalten, obwohl sie (soweit ich weiß) keinen Zweck für die Ausführung des Programms haben.
Gibt es einen Grund, warum diese nicht durch Streifen entfernt werden? Gibt es ein anderes Dienstprogramm, das alles entfernt, was für die Ausführung der ausführbaren Datei nicht erforderlich ist? Ich habe versucht, die ausführbare Code-Golf-Datei, die ich erstellt habe, manuell zu bearbeiten, um die Abschnittsüberschriften zu entfernen, und sie scheint gut zu funktionieren und viel kleiner zu sein.
quelle
Antworten:
Die Dokumentation für GNU binutils
strip
anspielt auf den Grund, ist aber nicht explizit in der Beschreibung zu erwähnen ,--only-keep-debug
dassDas heißt, sofern nicht ausdrücklich über die
-R
Optionstrip
dazu aufgefordert , werden Abschnittsüberschriften beibehalten, um anderen Programmen (einschließlichgdb
) bei ihrer Arbeit zu helfen .Die Seite Richtige Verwendung des Befehls strip (Teil von Reverse Engineering unter Verwendung des Linux-Betriebssystems ) enthält Hinweise
und zählt einige nützliche Dinge auf, die möglicherweise zurückbleiben - für die Analyse einer "gestrippten" ausführbaren Datei.
In Learning Linux Binary Analysis wird diese wiederholte, kommentiert , dass fehlt Abschnitt Header normalerweise nur dann , wenn jemand absichtlich sie entfernt, und das ohne Abschnittsüberschriften,
gdb
undobjdump
sind fast nutzlos.quelle