Friday, March 17, 2017

Objdump Demontage Arm Binär Optionen

Kann ich eine flache Binärdatei mit objdump auseinanderbauen. Ich bin vertraut mit der Demontage einer strukturierten binären ausführbaren Datei wie einer ELF-Datei using. But, wenn ich eine flache Binärdatei habe, die ich kenne, soll zB geladen werden, zB Adresse 0xabcd1000, kann ich Frage objdump, um es zu zerlegen Ich versuchte Versorgung Optionen wie - Start-Adresse 0xabcd1000 aber objdump nur sagt, dass es doesn t erkennt das Format. Ich habe andere Ideen über wie die Datei zu zerlegen, aber ich wollte wissen, ob objdump könnte eine einfache Solution. asked Jan 12 13 at 6 21.starblue und hlovdal beide haben Teile der kanonischen Antwort Wenn du den rohen i8086 Code zerlegen willst, wünschst du normalerweise Intel-Syntax, nicht AT T-Syntax, also use. If Dein Code ist ELF Oder oder E COFF, können Sie die Kurzform verwenden. Für 32-Bit oder 64-Bit-Code, weglassen, 8086 der ELF-Header enthält bereits diese Informationen. ndisasm wie vorgeschlagen von jameslin ist auch eine gute Wahl, aber objdump kommt in der Regel mit Das OS und kann mit allen von GN unterstützten Architekturen umgehen U binutils superset von denen, die von GCC unterstützt werden, und seine Ausgabe kann in der Regel in GNU gefüttert werden, da ndisasm s kann in der Regel in nasm gefüttert werden, obwohl. Peter Cordes schlägt vor, dass Agner Fog s objconv ist sehr nett Es setzt Etiketten auf Zweig Ziele, Machen viel einfacher, um herauszufinden, was der Code tut Es kann in NASM, YASM, MASM oder AT T GNU Syntax zerlegen. Multimedia Mike bereits herausgefunden über --adjust-vma der ndisasm Äquivalent ist die - o Option. Zu zerlegen, Sagen, sh4-Code Ich habe eine Binärdatei von Debian zu testen, verwenden Sie diese mit GNU binutils fast alle anderen Disassemblers sind auf eine Plattform beschränkt, wie x86 mit ndisasm und objconv. The - m ist die Maschine und - EL bedeutet Little Endian für Sh4eb use - EB stattdessen, die für Architekturen relevant ist, die entweder in endianness. answered vorhanden sind. De 22 15 at 20 48.objdump zeigt Informationen über eine oder mehrere Objektdateien an Die Optionen steuern, welche bestimmte Informationen zur Anzeige Diese Information ist meistens nützlich für Programmierer, die Sind wo Rking auf die Compilation-Tools, im Gegensatz zu Programmierern, die nur wollen, dass ihr Programm zu kompilieren und work. objfile sind die zu bearbeitenden Objektdateien Wenn Sie Archive angeben, zeigt objdump Informationen zu jedem der Member-Objekt-Dateien. Die langen und kurzen Formen von Optionen, die hier als Alternativen dargestellt werden, sind gleichwertig mindestens eine Option aus der Liste - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - r, - R, - s, - S, - t, - T, - V, - x muss gegeben werden - a --archive-header Wenn eine der objfile-Dateien Archive sind, zeigen Sie die Archiv-Header-Informationen in einem Format ähnlich wie ls - L Neben den Informationen, die Sie mit ar tv auflisten können, zeigt objdump - a das Objektdateiformat jedes Archivmitglieds an --adjust-vma-Offset Beim Dumping von Informationen, fügen Sie zunächst alle Abschnittsadressen einen Offset hinzu. Dies ist sinnvoll, wenn die Abschnittsadressen nicht sind Entsprechen der Symboltabelle, die beim Setzen von Abschnitten bei bestimmten Adressen auftreten kann, wenn ein Format verwendet wird, das keine Abschnittsadressen darstellen kann, z. B. - b bfdname --target bfdname Sp Dass das Objektcode-Format für die Objektdateien bfdname ist Diese Option ist eventuell nicht erforderlich objdump kann automatisch viele Formate erkennen. displays Zusammenfassungsinformationen aus den Abschnittsüberschriften - h von fu o, die explizit - m als VAX-Objektdatei identifiziert werden Das Format, das von Oasys-Compilern erstellt wird. Sie können die mit der Option - i verfügbaren Formate auflisten. Siehe Zielauswahl für weitere Informationen - C - Demandle-Stil Decode-Demangle-Low-Level-Symbolnamen in Benutzernamen-Namen Neben dem Entfernen von Anfangsunterstrichen, die vom System vorangestellt werden , Das macht C-Funktionsnamen lesbar Verschiedene Compiler haben unterschiedliche Mangling-Styles Das optionale Demangling-Style-Argument kann verwendet werden, um einen geeigneten Demangling-Style für Ihren Compiler zu wählen. Siehe c filt für weitere Informationen zum Demangling - g --debugging Display-Debugging-Informationen Dies versucht zu analysieren Debugging-Informationen in der Datei gespeichert und drucken Sie es mit einem C wie Syntax Nur bestimmte Arten von Debugging-Informationen wurden i Mplementiert Einige andere Typen werden von readself - w genehmigt - e - debugging-tags Wie - g aber die Information wird in einem Format kompatibel mit ctags-Tool - d --disassemble erzeugt. Zeigen Sie die Assembler-Mnemonik für die Maschinenbefehle von objfile an Option zerlegt nur diejenigen Abschnitte, von denen erwartet wird, dass sie Anweisungen enthalten - D-disassemble-all Like - d aber zerlegen den Inhalt aller Abschnitte, nicht nur diejenigen, die voraussichtlich Anweisungen enthalten - Prefix-Adressen Bei der Demontage, drucken Sie die komplette Adresse auf jedem Line Dies ist die ältere Demontage-Format - EB - EL --endian Geben Sie die Endianness der Objektdateien an Das betrifft nur die Demontage Dies kann nützlich sein, wenn Sie ein Dateiformat zerlegen, das keine Endianness-Informationen beschreibt, wie zB S-records - f - File-headers Anzeigen von Zusammenfassungsinformationen aus dem gesamten Header jeder der objfile-Dateien --file-start-context Geben Sie an, dass bei der Anzeige der interlisted-Quellcode-Demontage - S aus einem Fil - E, die noch nicht angezeigt wurde, erweitert den Kontext auf den Anfang der Datei - h --sektion-header --header Zeigt Zusammenfassungsinformationen aus den Abschnittsüberschriften der Objektdatei an. Dateiseile können beispielsweise in nicht standardisierte Adressen verlagert werden Indem sie die Optionen - Ttext - Tdata oder - Tbss auf ld verwenden. Jedoch können einige Objektdateiformate, wie z. B. die Startadresse der Dateisegmente nicht speichern. In diesen Situationen, obwohl ld die Abschnitte korrekt verlegt, verwenden Sie objdump - h, um die Liste aufzurufen Datei-Sektion Header können nicht die richtigen Adressen anzeigen Stattdessen zeigt es die üblichen Adressen, die implizit für das Ziel sind - H-help Drucken eine Zusammenfassung der Optionen zu objdump und exit - i --info Zeigt eine Liste mit allen Architekturen und Objekt Formate für die Spezifikation mit - b oder - m - j-Namen - Sektionsname anzeigen Informationen nur für den Abschnittsnamen anzeigen - l-line-Nummern Beschriften Sie die Anzeige mit Debugging-Informationen mit dem Dateinamen und den Quellzeilennummern, die dem Objektcode entsprechen Oder Relocs gezeigt Nur nützlich mit - d - D oder - r - m Maschine --architektur-Maschine Geben Sie die Architektur an, die beim Zerlegen von Objektdateien verwendet werden kann Dies kann nützlich sein, wenn Sie Objektdateien zerlegen, die keine Architekturinformationen beschreiben, z. B. S-Datensätze Sie Kann die vorhandenen Architekturen mit der Option - i auflisten - M Optionen --disassembler-Optionen Optionen Zielspezifische Informationen an den Disassembler übergeben Nur auf einigen Zielen unterstützt Wenn es notwendig ist, mehr als eine Disassembler-Option anzugeben, können mehrere - M Optionen verwendet werden Oder können zusammen in eine durch Kommas getrennte Liste platziert werden. Wenn das Ziel eine ARM-Architektur ist, dann kann dieser Schalter verwendet werden, um auszuwählen, welcher Registernamensatz während des Disassemblers verwendet wird. Angeben von - M reg-names-std der Standard wählt die Registernamen als aus Verwendet in ARM s Befehlssatz Dokumentation, aber mit Register 13 namens sp, Register 14 genannt lr und Register 15 genannt pc Angabe - M reg-names-apcs wählt den Namen Satz von der ARM P verwendet Rocedure Call Standard, während die Angabe - M reg-names-raw wird nur r verwenden, gefolgt von der Registernummer. Es gibt auch zwei Varianten auf der APCS-Register Namensschema aktiviert von - M reg-Namen-atpcs und - M reg-names - Special-atpcs, die den ARM Thumb Procedure Call verwenden Standard Namenskonventionen Entweder mit den normalen Registernamen oder den speziellen Registernamen. Diese Option kann auch für ARM-Architekturen verwendet werden, um den Disassembler zu zwingen, alle Anweisungen als Thumb-Anweisungen zu interpretieren, - disassembler-options force-thumb Dies kann nützlich sein, wenn man versucht, den von anderen Compilern erzeugten Daumen-Code zu zerlegen. Für die x86 können einige der Optionen doppelte Funktionen des - m Switches, aber erlauben feinere körnige Steuerung Mehrere Selektionen aus den folgenden können sein Spezifiziert als Komma getrennte Zeichenkette x86-64 i386 und i8086 wählen Sie die Demontage für die angegebene Architektur intel und att wählen zwischen Intel-Syntax-Modus und AT T Syntax-Modus addr32 addr16 data32 und data16 spec Y die Standardadresse Größe und die Operandengröße Diese vier Optionen werden überschrieben, wenn x86-64 i386 oder i8086 später in der Optionszeichenfolge angezeigt wird. Suffix, wenn im AT T-Modus, weist den Disassembler an, ein mnemonisches Suffix zu drucken, auch wenn das Suffix sein könnte Von den Operanden abgeleitet. Für PPC, booke booke32 und booke64 wählen Sie die Demontage der BookE-Anweisungen 32 und 64 wählen Sie PowerPC und PowerPC64 Demontage aus, bzw. e300 wählt die Demontage für die e300-Familie aus. Für MIPS steuert diese Option das Drucken von Befehls-Mneumonennamen und Registernamen In zerlegten Anweisungen Mehrere Selektionen aus den folgenden können als Komma getrennte Zeichenfolge angegeben werden, und ungültige Optionen werden ignoriert no-aliases Drucken Sie die rohe Anweisung mneumonic anstelle von einigen Pseudo-Anweisung mneumonic IE print daddu oder oder anstelle von move, sll anstelle von nop, Etc gpr-names ABI Drucken GPR-Allzweck-Registernamen, die für das angegebene ABI geeignet sind Standardmäßig werden GPR-Namen ausgewählt Ng zum ABI der Binärdatei zerlegt fpr-Namen ABI Drucken FPR-Gleitkomma-Registernamen für die angegebene ABI Standardmäßig werden FPR-Nummern gedruckt anstatt Namen cp0-Namen ARCH Drucken CP0 Systemsteuerung Koprozessor Koprozessor 0 Registernamen als Geeignet für die von ARCH vorgegebene CPU oder Architektur. Standardmäßig werden CP0-Registernamen entsprechend der Architektur und der CPU der Binärdatei ausgewählt, die auseinandergebaut wird. Hwr-names ARCH Print HWR-Hardware-Register, das von den rdhwr-Befehlsnamen verwendet wird, die für die CPU oder Architektur geeignet sind Spezifiziert von ARCH Standardmäßig werden die HWR-Namen entsprechend der Architektur und der CPU der Binärdateien ausgewählt, die den Reg-Namen zerlegt werden. ABI Print GPR - und FPR-Namen für die ausgewählten ABI-Reg-Namen ARCH Print CPU-spezifische Registernamen CP0-Register und HWR Namen, die für die ausgewählte CPU oder Architektur geeignet sind. Für irgendwelche der oben aufgeführten Optionen können ABI oder ARCH als numerisch angegeben werden, um die Nummern zu haben. R Ather als Namen, für die ausgewählten Registriden Sie können die verfügbaren Werte von ABI und ARCH mit der Option --help auflisten. Für VAX können Sie Funktionseintragsadressen mit - M Eintrag 0xf00ba angeben. Sie können diese mehrmals verwenden, um ordnungsgemäß zu zerlegen VAX-Binärdateien, die keine Symboltabellen wie ROM-Dumps enthalten In diesen Fällen würde die Funktionseintragsmaske ansonsten als VAX-Befehle decodiert werden, was vermutlich dazu führen würde, dass der Rest der Funktion falsch zerlegt wird - p --private-header Informationen drucken Das ist spezifisch für das Objekt-Dateiformat Die genaue Information, die gedruckt wird, hängt vom Objekt-Dateiformat ab. Für einige Objekt-Dateiformate werden keine zusätzlichen Informationen gedruckt - r --reloc Drucken der Umzugseinträge der Datei Wenn mit - d oder - D verwendet Verlagerungen werden mit der Demontage ausgedruckt - R-dynamic-reloc Drucken der dynamischen Umsiedlung Einträge der Datei Dies ist nur sinnvoll für dynamische Objekte, wie bestimmte Arten von gemeinsamen Bibliotheken - s - Vollständiger Inhalt Zeigt den vollständigen Inhalt der angeforderten Abschnitte an. Standardmäßig werden alle nicht leeren Abschnitte angezeigt. - S - Quelle Anzeige Quellcode mit Demontage gemischt, wenn möglich Impliziert - d --show-raw-insn Bei der Demontage von Anweisungen, Drucken Sie die Anweisung in Hex sowie in symbolischer Form Dies ist die Voreinstellung außer wenn --prefix-Adressen verwendet wird --no-show-raw-insn Bei der Demontage von Anweisungen, drucken Sie nicht die Befehlsbytes Dies ist die Standardeinstellung, wenn - Präfix-Adressen werden verwendet - W - Zwerg Zeigt den Inhalt der DWARF-Debug-Abschnitte in der Datei an, falls vorhanden - G - stabs Zeigt den vollständigen Inhalt der angeforderten Abschnitte an. Zeigt den Inhalt der und der Abschnitte von einer ELF an Datei Dies ist nur bei Systemen wie Solaris 2 0 sinnvoll, bei denen Debugging-Symboltabelleneinträge in einem ELF-Abschnitt getragen werden. In den meisten anderen Dateiformaten werden Debugging-Symboltabelleneinträge mit Verknüpfungssymbolen verschachtelt und in den Sysmen sichtbar Ausgabe Für weitere Informationen über Stabsymbole, siehe Stabs - Startadresse Adresse Start der Anzeige von Daten an der angegebenen Adresse Dies wirkt sich auf die Ausgabe der Optionen - d - r und - s aus - Stopp-Adresse Adresse Stoppen der Anzeige von Daten an der angegebenen Adresse Dies wirkt sich auf die Ausgabe von Die - d - r - und - s-Optionen - t-syms Drucken der Symboltabelleneinträge der Datei Dies entspricht den Informationen des nm-Programms - T --dynamic-syms. Drucken Sie die dynamischen Symboltabelleneinträge der Datei Ist nur für dynamische Objekte sinnvoll, wie z. B. bestimmte Arten von gemeinsam genutzten Bibliotheken Dies ist ähnlich wie die Informationen, die vom nm-Programm bereitgestellt werden, wenn es die Option - D --dynamische Option gegeben hat. Spezielle Symbole Bei der Darstellung von Symbolen sind diejenigen, die das Ziel berücksichtigt Besonders in irgendeiner Weise und was normalerweise nicht für den Benutzer von Interesse wäre - V --version Drucken Sie die Versionsnummer von objdump und exit - x --all-header Zeigt alle verfügbaren Header-Informationen an, einschließlich der Symboltabelle und der Umsiedlung Einträge Mit - X ist äquivalent zu spezifizieren Alle - a - f - h - p - r - t - w-wide Formatieren Sie einige Zeilen für Ausgabegeräte mit mehr als 80 Spalten Auch nicht markieren Symbolnamen, wenn sie angezeigt werden - z --disassemble-Nullen Normalerweise Der Zerlegungsausgang überspringt Blöcke von Nullen Diese Option leitet den Disassembler, um diese Blöcke zu zerlegen, genau wie jede andere data. objdump zeigt Informationen über eine oder mehrere Objektdateien an. Die Optionen steuern, welche spezielle Informationen zur Anzeige Diese Information ist für Programmierer, die sich befinden, meist nützlich Arbeiten an den Compilation-Tools, im Gegensatz zu Programmierern, die nur wollen, dass ihr Programm zu kompilieren und work. objfile sind die zu untersuchenden Objektdateien Wenn Sie Archive angeben, zeigt objdump Informationen zu den einzelnen Objektobjektdateien. Die langen und kurzen Formen von Optionen, die hier als Alternativen dargestellt werden, sind gleichwertig mindestens eine Option aus der Liste - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, - V, - x muss gegeben werden.-A --archive-header Wenn irgendwelche der objfile-Dateien archiv sind, anzeigen Die Archiv-Header-Informationen in einem Format ähnlich ls - l Neben den Informationen, die Sie mit ar tv objdump - a auflisten können, zeigt das Objekt-Dateiformat jedes Archivmitglieds an. - Anpassung-Vma-Offset Wenn Sie Informationen verschieben, fügen Sie zuerst den Offset hinzu Abschnittsadressen Dies ist sinnvoll, wenn die Abschnittsadressen nicht mit der Symboltabelle übereinstimmen, die beim Setzen von Abschnitten an bestimmten Adressen bei der Verwendung eines Formats auftreten kann, das keine Abschnittsadressen darstellen kann, wie zB.-b bfdname --target bfdname Geben Sie an, dass die Objektcode-Format für die Objektdateien ist bfdname Diese Option ist eventuell nicht erforderlich objdump kann automatisch viele Formate erkennen. displays Zusammenfassungsinformationen aus den Abschnittsüberschriften - h von fu o, die explizit identifiziert werden - m als VAX-Objektdatei im erzeugten Format Von Oasys-Compilern Sie können die mit der Option - i verfügbaren Formate auflisten. Siehe Abschnitt 15 1 Zielauswahl für weitere Informationen.-C - Widerstandsart Decode Demangle Low-Level-Symbolnamen in User-Lev El namen Neben dem Entfernen von beliebigen Unterstrichen, die vom System vorangestellt werden, macht dies C-Funktionsnamen lesbar Verschiedene Compiler haben unterschiedliche Mangling-Styles Das optionale Demangling-Style-Argument kann verwendet werden, um einen geeigneten Demangling-Style für Ihren Compiler zu wählen. Siehe Abschnitt 9 c filt für weitere Informationen Demangling.-G - Debugging Display-Debugging-Informationen Dies versucht, die in der Datei gespeicherten Debugging-Informationen zu analysieren und mit einer C-ähnlichen Syntax auszudrucken. Es wurden nur bestimmte Arten von Debugging-Informationen implementiert. - disassemble Zeigt die Assembler-Mnemonik für die Maschinenbefehle von objfile Diese Option zerlegt nur diejenigen Abschnitte, von denen erwartet wird, dass sie Anweisungen enthalten. - D --disassemble-all Wie - d, zerlegt aber den Inhalt aller Abschnitte, nicht nur die, die voraussichtlich Anweisungen enthalten. - Präfix-Adressen Bei der Demontage , Drucken Sie die komplette Adresse auf jeder Zeile Dies ist die ältere Demontage-Format .-- zerlegen-Nullen Normalerweise die Disas Sample-Ausgabe überspringt Blöcke von Nullen Diese Option leitet den Disassembler, um diese Blöcke zu zerlegen, genau wie alle anderen Daten.-EB - EL --endian Geben Sie die Endianness der Objektdateien an. Dies betrifft nur die Demontage. Dies kann bei der Demontage eines Dateiformats hilfreich sein Die keine Endianness-Informationen beschreibt, wie zB S-records.-f - file-header Anzeigen von Zusammenfassungsinformationen aus dem Gesamt-Header jeder der objfile-Dateien .-- file-start-context Geben Sie an, dass bei der Anzeige von interlisted-Quellcode-Demontage angenommen wird - S aus einer noch nicht angezeigten Datei, erweitern den Kontext auf den Anfang der Datei.-h --section-header --header Zeigt Zusammenfassungsinformationen aus den Abschnittsüberschriften der Objektdatei an. Dateisätze können verlegt werden Nicht standardmäßige Adressen, z. B. durch Verwendung der - Ttext - TData - oder - Tbss-Optionen auf ld Allerdings können einige Objektdateiformate, wie zB die Startadresse der Dateisegmente nicht speichern. In diesen Situationen, obwohl ld die Abschnitte co verlegt Rnctly, mit objdump - h, um die Datei-Section-Header aufzulisten kann nicht die richtigen Adressen anzeigen Stattdessen zeigt es die üblichen Adressen, die implizit für das Ziel sind. - Hilfe Drucken Sie eine Zusammenfassung der Optionen zu objdump und exit.-i - Info Zeigt eine Liste an, in der alle für die Spezifikation zur Verfügung stehenden Architekturen und Objektformate mit - b oder - m.-j-Namen gekennzeichnet sind. Name des Namens Zeigt nur Informationen für den Abschnitt name.-l - line-Nummern Beschriften Sie die Anzeige mit Debugging-Informationen mit dem Dateinamen Und Quellzeilennummern, die dem obigen Objektcode entsprechen, oder Relocs, die nur mit - d - D oder - r.-m-Maschine --architektur-Maschine verknüpft sind. Geben Sie die Architektur an, die bei der Demontage von Objektdateien verwendet werden soll. Dies kann bei der Demontage von Objektdateien nützlich sein, die dies nicht tun Beschreiben Sie Architekturinformationen wie S-Datensätze Sie können die verfügbaren Architekturen mit der Option - i auflisten. M Optionen - Optionen für die Optionen für die Optionen - Optionen für die Disziplin-Funktion Zielspezifische Informationen zum Disassembler Nur für einige Ziele unterstützt. Wenn das Ziel ist Ist eine ARM-Architektur, dann kann dieser Schalter verwendet werden, um auszuwählen, welche Register-Namensmenge während des Disassemblers verwendet wird. Angabe - M reg-name-std Die Voreinstellung wählt die Registernamen aus, wie sie in der ARM-Befehlssatzdokumentation verwendet werden , Register 14 genannt lr und Register 15 genannt pc Angabe - M reg-names-apcs wählt den Namenssatz aus, der vom ARM Procedure Call Standard verwendet wird, während die Angabe von - M reg-names-raw nur r verwendet wird, gefolgt von der Registernummer. Es gibt auch zwei Varianten auf dem APCS-Register Namensschema aktiviert von - M Reg-Namen-atpcs und - M Reg-Namen-Special-atpcs, die die ARM Thumb Prozedur Call Standard Namenskonventionen entweder mit dem normalen Register-Namen oder das spezielle Register verwenden Names. This Option kann auch für ARM-Architekturen verwendet werden, um den Disassembler zu zwingen, alle Anweisungen als Thumb-Anweisungen zu interpretieren, indem man den Schalter verwendet --disassembler-options force-thumb Dies kann nützlich sein, wenn man versucht, den Daumen-Code-Produc auszubauen Ed von anderen compilers. Für die x86, einige der Optionen doppelte Funktionen der - m Schalter, aber erlauben feinere körnige Kontrolle Mehrere Selektionen aus dem folgenden kann als Komma getrennte Zeichenfolge x86-64 i386 und i8086 select Demontage für die angegebene angegeben werden Architektur intel und att wählen zwischen Intel-Syntax-Modus und AT T-Syntax-Modus addr32 addr16 data32 und data16 geben die Standardadresse Größe und Operandengröße an Diese vier Optionen werden überschrieben, wenn x86-64 i386 oder i8086 später in der Optionsfolge angezeigt werden Schließlich Suffix wann Im AT-T-Modus, weist den Dissassembler an, ein mnemonisches Suffix zu drucken, auch wenn das Suffix von den Operanden abgeleitet werden könnte. Für PPC, booke booke32 und booke64 wählen Sie die Demontage der BookE-Anweisungen 32 und 64 aus, wählen Sie PowerPC und PowerPC64-Demontage aus. - private-header Druckinformationen, die für das Objektdateiformat spezifisch sind Die genaue Information, die gedruckt wird, hängt vom Objektdateiformat ab. Für einige Objektdateiformate ist kein zusätzliches Informationen werden ausgedruckt.-r --reloc Drucken der Umzugseinträge der Datei Bei Verwendung mit - d oder - D werden die Verlagerungen mit der Demontage ausgedruckt. - R --dynamisch-reloc Drucken der dynamischen Umsiedlungseinträge der Datei Dies ist Nur sinnvoll für dynamische Objekte wie bestimmte Arten von gemeinsamen Bibliotheken.-s --full-Inhalt Zeigt den vollständigen Inhalt der angeforderten Abschnitte an. - S - Quelle Anzeige Quellcode mit Demontage gemischt, wenn möglich Impliziert - d. Show-raw-insn Bei der Demontage von Anweisungen drucken Sie die Anweisung sowohl in hex als auch in symbolischer Form aus. Dies ist die Voreinstellung, außer wenn --prefix-Adressen verwendet werden. - no-show-raw-insn Bei der Demontage von Anweisungen nicht drucken Die Befehlsbytes Dies ist die Voreinstellung, wenn --prefix-Adressen verwendet werden. - G-Stabs Zeigt den vollständigen Inhalt der angeforderten Abschnitte an. Zeigt den Inhalt von und und Abschnitten aus einer ELF-Datei an. Dies ist nur bei Systemen wie Solaris nützlich 2 0, in dem Debugging-Symboltabelleneinträge durchgeführt werden In einem ELF-Abschnitt In den meisten anderen Dateiformaten werden Debugging-Symboltabelleneinträge mit Verknüpfungssymbolen verschachtelt und sind in der --Syms-Ausgabe sichtbar. Weitere Informationen zu Stabsymbolen finden Sie im Abschnitt Stabsübersicht im Stab-Debug-Format - Adresse Adresse Start der Anzeige von Daten an der angegebenen Adresse Dies wirkt sich auf die Ausgabe der Optionen - d - r und - s aus. - Stoppadresse Adresse Stoppen der Anzeige von Daten an der angegebenen Adresse Dies wirkt sich auf die Ausgabe von - d - r und - S options.-t --Symen Drucken der Symboltabelleneinträge der Datei Dies entspricht den Informationen des nm programms. - T --dynamic-syms Drucken der dynamischen Symboltabelleneinträge der Datei Dies ist nur für dynamisch sinnvoll Objekte, wie z. B. bestimmte Arten von gemeinsam genutzten Bibliotheken Dies ist ähnlich wie die Informationen, die vom nm-Programm bereitgestellt werden, wenn die Option - D --dynamische Option gegeben wird .-- Version Die Versionsnummer von objdump und exit ausgeben.-x --all-header Anzeige Alle verfügbaren Header-Informationen, einschließlich der Symboltabelle und Umzugseinträge Mit - x ist gleichbedeutend mit der Angabe aller - a - f - h - r - t.-w - wide Formatieren Sie einige Zeilen für Ausgabegeräte mit mehr als 80 Spalten Auch nicht markieren Symbolnamen, wenn sie angezeigt werden. Objdump zeigt Informationen über eine oder mehrere Objektdateien an Die Optionen steuern, welche Besonderheiten zur Anzeige Diese Information ist für Programmierer, die an den Compilation-Tools arbeiten, meistens nützlich, im Gegensatz zu Programmierern, die einfach nur wollen, dass ihr Programm kompiliert und work. objfile das Objekt ist Dateien, die geprüft werden sollen Wenn Sie Archive angeben, zeigt objdump Informationen zu den einzelnen Objektobjektdateien an. Die langen und kurzen Optionen, die hier als Alternativen dargestellt werden, sind gleichwertig. Mindestens eine Option aus der Liste - a, - d, - D , - e, - g, - G, - h, - H, - p, - P, - r, - R, - s, - S, - t, - T, - V, - x muss sein Gegeben - a --archive-header Wenn eine der objfile-Dateien Archive sind, zeigen Sie die Archiv-Header-Informationen in einem Format ähnlich wie ls - l Neben den Informationen, die Sie mit ar tv auflisten könnten, ob Jdump - a zeigt das Objektdateiformat jedes Archivmitglieds - justjust-vma-Offset Beim Dumping von Informationen zuerst einen Versatz zu allen Abschnittsadressen hinzufügen. Dies ist sinnvoll, wenn die Abschnittsadressen nicht mit der Symboltabelle übereinstimmen, die beim Setzen auftreten kann Abschnitte bei bestimmten Adressen bei Verwendung eines Formats, das keine Abschnittsadressen darstellen kann, z. B. - b bfdname --target bfdname Geben Sie an, dass das Objektcodeformat für die Objektdateien bfdname ist. Diese Option ist möglicherweise nicht erforderlich objdump kann viele Formate automatisch erkennen. Zeigt Zusammenfassungsinformationen aus den Abschnittsüberschriften - h von fu o an, die explizit identifiziert werden - m als VAX-Objektdatei im Format, das von Oasys-Compilern erzeugt wird. Sie können die mit der Option - i verfügbaren Formate auflisten Siehe Zielauswahl für weitere Informationen - C - - Entwicklung Stil Decode Demangle Low-Level-Symbol Namen in User-Level-Namen Neben dem Entfernen von beliebigen Anfangsunterstufen vorangestellt durch das System, das macht C-Funktionsnamen lesbar Verschiedene compi Lers haben unterschiedliche Manglingstile Das optionale Demangling-Style-Argument kann verwendet werden, um einen geeigneten Demangling-Style für Ihren Compiler zu wählen. Siehe c filt für weitere Informationen zum Demangling - g --debugging Display-Debugging-Informationen Dies versucht, STABS - und IEEE-Debugging-Formatinformationen zu analysieren Die Datei und drucken sie mit einer C wie Syntax aus Wenn keines dieser Formate gefunden wird, fällt diese Option auf die Option - W zurück, um alle DWARF-Informationen in der Datei zu drucken --e - debugging-tags Wie - g aber die Informationen werden generiert In einem Format, das mit dem ctags-Werkzeug kompatibel ist - d --disassemble Anzeige der Assembler-Mnemonik für die Maschinenbefehle von objfile Diese Option zerlegt nur die Abschnitte, von denen erwartet wird, dass sie Anweisungen enthalten - - disassemble-all Like - d, aber zerlegt den Inhalt von allen Abschnitte, nicht nur diejenigen, die voraussichtlich Anweisungen enthalten. Diese Option hat auch einen subtilen Effekt auf die Demontage von Anweisungen in Codeabschnitten Wenn die Option - d in effe ist Ct objdump wird davon ausgehen, dass alle Symbole, die in einem Codeabschnitt vorhanden sind, auf der Grenze zwischen den Anweisungen auftreten und es wird sich weigern, über eine solche Grenze zu zerlegen. Wenn die Option - D in Wirklichkeit ist, wird diese Annahme jedoch unterdrückt. Dies bedeutet, dass es möglich ist, die Ausgabe von - d und - D zu unterscheiden, wenn zum Beispiel Daten in Codeabschnitten gespeichert sind. Wenn das Ziel eine ARM-Architektur ist, hat dieser Schalter auch die Wirkung, den Disassembler zu zwingen, Datenstücke zu entschlüsseln, die in Codeabschnitten gefunden wurden, als wären sie Anweisungen --prefix-Adressen Bei der Demontage die gesamte Adresse auf jeder Zeile ausdrucken Dies ist das ältere Demontageformat - EB - EL --endian Geben Sie die Endianness der Objektdateien an. Dies betrifft nur die Demontage. Dies kann bei der Demontage eines Dateiformats hilfreich sein Nicht beschreiben Endianness-Informationen, wie z. B. S-records - f --file-headers Anzeigen von Zusammenfassungsinformationen aus dem gesamten Header jeder der objfile-Dateien - F - File-Offsets Bei der Demontage von Abschnitten, ifeve Ra-Symbol angezeigt wird, zeigt auch den Datei-Offset des Datenbereichs an, der im Begriff ist, entleert zu werden. Wenn Nullen übersprungen werden, dann, wenn die Demontage wieder aufgenommen wird, benachrichtigen Sie dem Benutzer, wie viele Nullen übersprungen wurden, und der Dateisatz des Ortes, von wo aus Demontage wird fortgesetzt Beim Ablegen von Abschnitten können Sie den Dateisatz des Standorts anzeigen, von wo aus der Dump beginnt --file-start-context Geben Sie an, dass bei der Anzeige der interlisted-Quellcode-Demontage - S aus einer noch nicht angezeigten Datei den Kontext auf Der Anfang der Datei - h --section-headers --header Zeigt Zusammenfassungsinformationen aus den Abschnittsüberschriften der Objektdatei an. Dateiseile können zu nicht standardisierten Adressen verlagert werden, zB indem sie die Optionen - Ttext - Tdata oder - Tbss verwenden Ld Allerdings einige Objekt-Dateiformate, wie z. B. nicht speichern die Startadresse der Datei-Segmente In diesen Situationen, obwohl ld verlegt die Abschnitte korrekt, mit objdump - h, um die Datei-Abschnitt Header können nicht sho W die richtigen Adressen Stattdessen zeigt es die üblichen Adressen, die implizit für das target. Note sind, in einigen Fällen ist es möglich, dass ein Abschnitt sowohl die READONLY - als auch die NOREAD-Attribute gesetzt hat. In solchen Fällen hat das NOREAD-Attribut Vorrang, aber Objdump wird berichten, da die genaue Einstellung der Flag-Bits wichtig sein kann - H-help Drucken Sie eine Zusammenfassung der Optionen zu objdump und exit - i --info Zeigt eine Liste an, in der alle Architekturen und Objektformate für die Spezifikation mit - b angezeigt werden Oder - m - j name --section name Zeigt nur Informationen für den Abschnittsnamen an - l-line-numbers Beschriften Sie die Anzeige mit Debugging-Informationen mit dem Dateinamen und den Quellzeilennummern, die dem obigen Objektcode entsprechen, oder Relocs, die nur mit - d - D oder - r-m-Maschine --architektur-Maschine Legen Sie die Architektur fest, die bei der Demontage von Objektdateien verwendet werden soll. Dies kann nützlich sein, wenn Sie Objektdateien zerlegen, die keine Architekturinformationen beschreiben, z. B. S-Datensätze Ailable architectures mit der Option - i. Wenn das Ziel eine ARM-Architektur ist, hat dieser Switch einen zusätzlichen Effekt. Es beschränkt die Demontage auf nur die Anweisungen, die von der von der Maschine angegebenen Maschine unterstützt werden. Wenn es notwendig ist, diesen Schalter zu verwenden, da die Eingabedatei funktioniert Keine architektonischen Informationen enthalten, aber es ist auch erwünscht, alle Anweisungen zu zerlegen - marm - M Optionen --disassembler-Optionen Optionen Zielspezifische Informationen an den Disassembler abgeben Nur auf einigen Zielen unterstützt Wenn es notwendig ist, mehr als einen Disassembler anzugeben Option, dann können mehrere - M-Optionen verwendet werden oder können in eine durch Kommas getrennte Liste platziert werden. Für ARC, dsp steuert das Drucken von DSP-Anweisungen, spfp wählt das Drucken von FPX Einzelpräzisions-FP-Anweisungen aus, dpfp wählt den Druck von FPX doppelte Präzision aus FP-Anweisungen, quarkseem wählt das Drucken von speziellen QuarkSE-EM-Anweisungen aus, fpuda wählt den Druck von doppelten Präzisionsassistenten aus Ruction, fpus wählt das Drucken von FPU Single Präzision FP Anweisungen, während fpud wählt das Drucken von FPU Souble Präzision FP Anweisungen. Wenn das Ziel eine ARM-Architektur ist, dann kann dieser Schalter verwendet werden, um zu wählen, welche Register-Namens-Set während Disassembler verwendet wird Angeben - M reg-names-std die Voreinstellung wählt die Registernamen, wie sie in der ARM s-Befehlssatzdokumentation verwendet werden, aber mit dem Register 13 mit dem Namen sp, Register 14, das lr genannt wird, und das Register 15, das p genannt wird, spezifiziert - M reg-names-apcs wählt den Namen aus Set, der von dem ARM Procedure Call Standard verwendet wird, während die Angabe von - M reg-names-raw nur r verwendet wird, gefolgt von der Registernummer. Es gibt auch zwei Varianten auf dem APCS-Register Namensschema aktiviert von - M Reg-Namen-atpcs und - M reg-names-special-atpcs, die den ARM Thumb Procedure Call verwenden Benennungskonventionen Entweder mit den normalen Registernamen oder den speziellen Registernamen. Diese Option kann auch für ARM-Architekturen verwendet werden, um den Disassembler auf interp zu zwingen Rufen Sie alle Anweisungen als Thumb-Anweisungen, indem Sie den Schalter verwenden --disassembler-options force-thumb Dies kann nützlich sein, wenn Sie versuchen, den von anderen Compilern erzeugten Daumen-Code zu zerlegen. Für die x86 sind einige der Optionen doppelte Funktionen des - m-Switches Erlauben feinere körnige Kontrolle Mehrere Selektionen aus den folgenden können als Komma getrennte Zeichenfolge angegeben werden x86-64 i386 i8086 Wählen Sie die Demontage für die angegebene Architektur intel att Wählen Sie zwischen Intel-Syntax-Modus und AT T-Syntax-Modus amd64 intel64 Wählen Sie zwischen AMD64 ISA und Intel64 ISA intel - mnemonic att-mnemonic Select between intel mnemonic mode and AT T mnemonic mode Note intel-mnemonic implies intel and att-mnemonic implies att addr64 addr32 addr16 data32 data16 Specify the default address size and operand size These four options will be overridden if x86-64 i386 or i8086 appear later in the option string suffix When in AT T mode, instructs the disassembler to print a mnemonic suffix even when the suffix could be inf erred by the operands. For PowerPC, booke controls the disassembly of BookE instructions 32 and 64 select PowerPC and PowerPC64 disassembly, respectively e300 selects disassembly for the e300 family 440 selects disassembly for the PowerPC 440 ppcps selects disassembly for the paired single instructions of the PPC750CL. For MIPS, this option controls the printing of instruction mnemonic names and register names in disassembled instructions Multiple selections from the following may be specified as a comma separated string, and invalid options are ignored no-aliases Print the raw instruction mnemonic instead of some pseudo instruction mnemonic I e print daddu or or instead of move , sll instead of nop , etc msa Disassemble MSA instructions virt Disassemble the virtualization ASE instructions xpa Disassemble the eXtended Physical Address XPA ASE instructions gpr-names ABI Print GPR general-purpose register names as appropriate for the specified ABI By default, GPR names are selected accordi ng to the ABI of the binary being disassembled fpr-names ABI Print FPR floating-point register names as appropriate for the specified ABI By default, FPR numbers are printed rather than names cp0-names ARCH Print CP0 system control coprocessor coprocessor 0 register names as appropriate for the CPU or architecture specified by ARCH By default, CP0 register names are selected according to the architecture and CPU of the binary being disassembled hwr-names ARCH Print HWR hardware register, used by the rdhwr instruction names as appropriate for the CPU or architecture specified by ARCH By default, HWR names are selected according to the architecture and CPU of the binary being disassembled reg-names ABI Print GPR and FPR names as appropriate for the selected ABI reg-names ARCH Print CPU-specific register names CP0 register and HWR names as appropriate for the selected CPU or architecture. For any of the options listed above, ABI or ARCH may be specified as numeric to have numbers printed r ather than names, for the selected types of registers You can list the available values of ABI and ARCH using the --help option. For VAX, you can specify function entry addresses with - M entry 0xf00ba You can use this multiple times to properly disassemble VAX binary files that don t contain symbol tables like ROM dumps In these cases, the function entry mask would otherwise be decoded as VAX instructions, which would probably lead the rest of the function being wrongly disassembled - p --private-headers Print information that is specific to the object file format The exact information printed depends upon the object file format For some object file formats, no additional information is printed - P options --private options Print information that is specific to the object file format The argument options is a comma separated list that depends on the format the lists of options is displayed with the help. For XCOFF, the available options are header aout sections syms relocs lineno, loader e xcept typchk traceback toc ldinfo. Not all object formats support this option In particular the ELF format does not use it - r --reloc Print the relocation entries of the file If used with - d or - D the relocations are printed interspersed with the disassembly - R --dynamic-reloc Print the dynamic relocation entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries As for - r if used with - d or - D the relocations are printed interspersed with the disassembly - s --full-contents Display the full contents of any sections requested By default all non-empty sections are displayed - S --source Display source code intermixed with disassembly, if possible Implies - d --prefix prefix Specify prefix to add to the absolute paths when used with - S --prefix-strip level Indicate how many initial directory names to strip off the hardwired absolute paths It has no effect without --prefix prefix --show-raw-insn When disassembling instructions, print the instruc tion in hex as well as in symbolic form This is the default except when --prefix-addresses is used --no-show-raw-insn When disassembling instructions, do not print the instruction bytes This is the default when --prefix-addresses is used --insn-width width Display width bytes on a single line when disassembling instructions - W lLiaprmfFsoRt --dwarf rawline, decodedline, info, abbrev, pubnames --dwarf aranges, macro, frames, frames-interp, str, loc --dwarf Ranges, pubtypes, traceinfo, traceabbrev --dwarf tracearanges, gdbindex Displays the contents of the debug sections in the file, if any are present If one of the optional letters or words follows the switch then only data found in those specific sections will be dumped. Note that there is no single letter option to display the content of trace sections or. Note the output from the info option can also be affected by the options --dwarf-depth the --dwarf-start and the --dwarf-check --dwarf-depth n Limit the dump of the section to n child ren This is only useful with --dwarf info The default is to print all DIEs the special value 0 for n will also have this effect. With a non-zero value for n DIEs at or deeper than n levels will not be printed The range for n is zero-based --dwarf-start n Print only DIEs beginning with the DIE numbered n This is only useful with --dwarf info. If specified, this option will suppress printing of any header information and all DIEs before the DIE numbered n Only siblings and children of the specified DIE will be printed. This can be used in conjunction with --dwarf-depth --dwarf-check Enable additional checks for consistency of Dwarf information - G --stabs Display the full contents of any sections requested Display the contents of the and and sections from an ELF file This is only useful on systems such as Solaris 2 0 in which debugging symbol-table entries are carried in an ELF section In most other file formats, debugging symbol-table entries are interleaved with linkage symbols, and are vi sible in the --syms output --start-address address Start displaying data at the specified address This affects the output of the - d - r and - s options --stop-address address Stop displaying data at the specified address This affects the output of the - d - r and - s options - t --syms Print the symbol table entries of the file This is similar to the information provided by the nm program, although the display format is different The format of the output depends upon the format of the file being dumped, but there are two main types One looks like this. where the number inside the square brackets is the number of the entry in the symbol table, the sec number is the section number, the fl value are the symbol s flag bits, the ty number is the symbol s type, the scl number is the symbol s storage class and the nx value is the number of auxilary entries associated with the symbol The last two fields are the symbol s value and its name. The other common output format, usually seen with ELF based fi les, looks like this. Here the first number is the symbol s value sometimes refered to as its address The next field is actually a set of characters and spaces indicating the flag bits that are set on the symbol These characters are described below Next is the section with which the symbol is associated or ABS if the section is absolute ie not connected with any section , or UND if the section is referenced in the file being dumped, but not defined there. After the section name comes another field, a number, which for common symbols is the alignment and for other symbol is the size Finally the symbol s name is displayed. The flag characters are divided into 7 groups as follows l g u The symbol is a local l , global g , unique global u , neither global nor local a space or both global and local A symbol can be neither local or global for a variety of reasons, e g because it is used for debugging, but it is probably an indication of a bug if it is ever both local and global Unique global sy mbols are a GNU extension to the standard set of ELF symbol bindings For such a symbol the dynamic linker will make sure that in the entire process there is just one symbol with this name and type in use w The symbol is weak w or strong a space C The symbol denotes a constructor C or an ordinary symbol a space W The symbol is a warning W or a normal symbol a space A warning symbol s name is a message to be displayed if the symbol following the warning symbol is ever referenced I i The symbol is an indirect reference to another symbol I , a function to be evaluated during reloc processing i or a normal symbol a space d D The symbol is a debugging symbol d or a dynamic symbol D or a normal symbol a space F f O The symbol is the name of a function F or a file f or an object O or just a normal symbol a space - T --dynamic-syms Print the dynamic symbol table entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries This is similar to the infor mation provided by the nm program when given the - D --dynamic option. The output format is similar to that produced by the --syms option, except that an extra field is inserted before the symbol s name, giving the version information associated with the symbol If the version is the default version to be used when resolving unversioned references to the symbol then it s displayed as is, otherwise it s put into parentheses --special-syms When displaying symbols include those which the target considers to be special in some way and which would not normally be of interest to the user - V --version Print the version number of objdump and exit - x --all-headers Display all available header information, including the symbol table and relocation entries Using - x is equivalent to specifying all of - a - f - h - p - r - t - w --wide Format some lines for output devices that have more than 80 columns Also do not truncate symbol names when they are displayed - z --disassemble-zeroes Normally the disassembly output will skip blocks of zeroes This option directs the disassembler to disassemble those blocks, just like any other data. or --target instead of - b - D is disassemble the contents of all sections - b bfdname or --target bfdname will force reading as specified object-code format not elf but raw binary in our case - m machine will specify the architecture to use in our file there is no header with arch info - M options are options of disassembler addr16,data16 are used to specify the default address size and operand size treat code as i8086 one in the universal x86 disasm engine osgx Nov 28 12 at 16 41.-b specifies 16-, 32- or 64-bit mode The default is 16-bit mode - o is the notional load address for the file This option causes ndisasm to get the addresses it lists down the left hand margin, and the target addresses of PC-relative jumps and calls, right - s specifies a synchronisation address, such that ndisasm will not output any machine instruction which encompasses bytes on both sides of the address Hence the instruction which starts at that address will be correctly disassembled Janus Troelsen May 6 13 at 18 49.starblue and hlovdal both have parts of the canonical answer If you want to disassemble raw i8086 code, you usually want Intel syntax, not AT T syntax, too, so use. If your code is ELF or or E COFF , you can use the short form. For 32-bit or 64-bit code, omit the ,8086 the ELF header already includes this information. ndisasm as suggested by jameslin is also a good choice, but objdump usually comes with the OS and can deal with all architectures supported by GNU binutils superset of those supported by GCC , and its output can usually be fed into GNU as ndisasm s can usually be fed into nasm though, of course. Peter Cordes suggests that Agner Fog s objconv is very nice It puts labels on branch targets, making a lot easier to figure out what the code does It can disassemble into NASM, YASM, MASM, or AT T GNU syntax. Multimedia Mike already found out about --adjus t-vma the ndisasm equivalent is the - o option. To disassemble, say, sh4 code I used one binary from Debian to test , use this with GNU binutils almost all other disassemblers are limited to one platform, such as x86 with ndisasm and objconv. The - m is the machine, and - EL means Little Endian for sh4eb use - EB instead , which is relevant for architectures that exist in either endianness. answered Dec 22 15 at 20 44.It built fine right out of the box on GNU Linux, for me But yes, it s x86 x86-64 only, unlike GNU binutils However, it has a lot of nice x86-specific hints that it adds as comments, like when an operand-size prefix can cause an LCP-stall in the decoders of an Intel CPU By all means, mention it in your answer One of the major purposes of comments is to help the poster improve their answer, not just as something that later viewers need to read, too Peter Cordes Dec 23 15 at 11 11.


No comments:

Post a Comment