Использование objdump для архитектуры ARM: разборка в ARM - PullRequest
12 голосов
/ 05 октября 2010

У меня есть объектный файл, и я пытаюсь разобрать его. Когда я использую:

objdump -d example.o

Я получаю сборку в коде в формате файла elf64-x86-64.

Я пытаюсь разобрать это на ARM, как мне это сделать?

Ответы [ 4 ]

8 голосов
/ 29 января 2013

Если вы хотите разобрать код ARM, вам лучше иметь цепочку инструментов ARM, вот что я получил:

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

После этого вы можете использовать arm-elf-objdump вместо objdump. Я использовал команду

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

Если вы посмотрите man-страницу, то увидите, что «-b» сопровождается типом файла. Извините, я не знаю, как сказать -b вы хотите проанализировать файл .o. "-marm" скажет процессору ARM.

Надеюсь, это поможет вам.

6 голосов
/ 17 апреля 2012

Скомпилируйте binutils с нужными целями, чтобы получить двоичный файл objdump binutils, который знает, как разобрать ARM.

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

./configure --enable-targets=all, например.

Выберите ваши цели, создайте и используйте новый двоичный файл objdump, который знает ваши цели.См. Файл binutils/README для получения дополнительной информации о таргетинге.

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

против

./../../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]
...
4 голосов
/ 23 января 2017

Вы должны сначала скомпилировать файл для arm, используя arm-linux-gnueabi-gcc. Вы используете нативный objdump. Для разборки файла объекта руки используйте arm-linux-gnueabi-objdump. Надеюсь, это поможет

3 голосов
/ 06 октября 2010

Установите ELDK и используйте arm-linux-objdump. Вы пытаетесь разобрать инструкции ARM с помощью программы, которая знает только x86.

...