2010-10-04 10 views
10

Ich habe eine Objektdatei und versuche, sie zu zerlegen. Wenn ich benutze:Verwenden von Objdump für ARM-Architektur: Zerlegen zu ARM

objdump -d example.o 

erhalte ich eine Versammlung in Code im Dateiformat von elf64-x86-64.

Ich versuche, dies in ARM zu zerlegen, wie gehe ich dabei vor?

+0

Nur um zu verdeutlichen, sagen Sie, Sie haben eine ausführbare x86_64/Objekt-Datei und möchte es als ARM-Anweisungen demontiert? – dmckee

+0

Ja, ein Professor hat mich an einem Projekt arbeiten und was ich tun möchte, ist die Objektdatei zu zerlegen, aber ich denke, es ist eine ausführbare x86. Wenn ich Arm-Linux-Objdump verwende, sollte ich in der Lage sein, in ARM zu zerlegen, oder? – Steve

+1

Für die Kompilierung sowie für die Disassemblierung müssen Sie ARM Cross Compiler Toolchain verwenden. – JagsVG

Antwort

2

Installieren Sie die ELDK und verwenden Sie Arm-Linux-Objdump. Sie versuchen, ARM-Anweisungen mit einem Programm zu zerlegen, das nur x86 kennt.

6

Kompilieren Sie binutils mit dem richtigen Ziel (s) binutils objdump binary zu bekommen, das ARM zu zerlegen weiß.

http://www.gnu.org/software/binutils/

./configure --enable-targets=all zum Beispiel.

Wählen Sie Ihre Ziele, erstellen und verwenden Sie die neue objdump Binärdatei, die Ihr Ziel ist. Weitere Informationen zum Targeting finden Sie in der Datei binutils/README.

objdump -D t3C# stock binary 
objdump: t3c: File format not recognized 

gegen

./../../binutils-2.22/binutils/objdump -D t3C# latest compiled from source with all targets 
In archive t3c: 

t3c:arm:  file format mach-o-le 


Disassembly of section .text: 

00002d94 <start>: 
    2d94: e59d0000 ldr r0, [sp] 
... 
7

Wenn Sie disassemble von ARM-Code tun wollen, sollten Sie besser einen ARM-Toolkette haben, das ist, was ich habe:

http://bb.osmocom.org/trac/wiki/toolchain

Nachdem Sie dies haben, können Sie Arm-Elf-Objdump anstelle von Objdump verwenden. Der Befehl, den ich verwenden

arm-elf-objdump -D -b binary -marm binaryfile.dat 

Wenn Sie die Manpage betrachten, werden Sie „-b“ wird gefolgt von dem Dateityp finden. Tut mir leid, ich weiß nicht, wie ich es sagen soll - Sie wollen eine .o-Datei analysieren. "-marm" sagt der CPU ist ARM.

Hoffe, das kann Ihnen helfen.

3

Sie müssen zuerst die Datei für den Arm kompilieren, indem Sie arm-linux-gnueabi-gcc verwenden. Sie verwenden nativen Objdump. Um die Armobjektdatei zu zerlegen, verwenden Sie arm-linux-gnueabi-objdump. Hoffe, das hilft