Использование objdump для архитектуры ARM: Разборка в ARM

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

objdump -d example.o

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

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

Ответ 1

Если вы хотите разобрать 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.

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

Ответ 2

Скомпилируйте binutils с правой целью (ами), чтобы получить binutils objdump двоичный файл, который знает, как разобрать 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]
...

Ответ 3

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

Ответ 4

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