Frage

Ich habe objdump benutze in Linux ELF-Binärdateien in Assembler-Code zu suchen.

Manchmal gibt es einen indirekten Sprung über eine Sprungtabelle, die in den rodata gespeichert (Nur-Lese-Daten) -Abschnitt.

Wie kommt man objdump oder ein anderes Werkzeug mir den Inhalt dieses Datenabschnitts zu zeigen?

Ich konnte das Programm ausführen und die entsprechenden Adressen im Debugger untersuchen, aber ich möchte nicht, dass tun, weil es interaktiv getan werden.

Die ideale Antwort wird ein Tool identifizieren, die mir nicht nur den Inhalt zeigen wird, aber lassen Sie mich das Anzeigeformat steuern, so wie od der Fall ist.

War es hilfreich?

Lösung

objdump -s -j .rodata exefile

gibt ein Side-by-Side-hex / druckbaren ASCII-Dump des Inhalts des rodata Abschnitts wie:

Contents of section .rodata:
 0000 67452301 efcdab89 67452301 efcdab89  gE#.....gE#.....
 0010 64636261 68676665 64636261 68676665  dcbahgfedcbahgfe

Es sieht nicht wie es da etwas gibt, in der Formatierung zu kontrollieren, aber es ist ein Anfang. Man konnte immer die Hex undump und ihn an od, nehme ich an:)

Andere Tipps

readelf -x .rodata hello_world.o

gibt:

Hex dump of section '.rodata':
  0x00000000 48656c6c 6f20776f 726c6421 0a       Hello world!.

Sie sollten readelf bevorzugen, wenn möglich, da objdump einfach nicht einige Abschnitte wie .symtab besagt: Warum objdump nicht zeigen .bss, .shstratab, .symtab und .strtab Abschnitte?

Sie können auch das rohe Bytes mit den Techniken bei erwähnt extrahieren: wie extrahieren Sie nur den Inhalt eines ELF Abschnitt und wie erwähnt von ysdx .

Sie können die RAW bekommen (nicht HexDump-ed) ELF Abschnitt mit:

# To a file:
objcopy file /dev/null --dump-section .text=text.data
# To stdout:
objcopy file /dev/null --dump-section .text=/dev/stdout | cat

Hier bin ich mit | cat um stdout zu zwingen, ein Rohr zu sein. /dev/stdout möglicherweise unerwartet funktionieren, wenn stdout eine Datei ist. .text=- nicht an stdout, sondern an die - Datei.

objcopy und objdump einige Mängel haben (weil sie basieren auf BFD, die unterschiedliche ausführbare Formate abstrahiert).

Update: schrieb ich ein Werkzeug dies zu tun, die sich nicht auf BFD.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top