У меня есть объектный файл, и я пытаюсь его разобрать. Когда я использую:
objdump -d example.o
Я получаю сборку в коде в формате файла elf64-x86-64
.
Я пытаюсь разобрать это в ARM, как я могу это сделать?
У меня есть объектный файл, и я пытаюсь его разобрать. Когда я использую:
objdump -d example.o
Я получаю сборку в коде в формате файла elf64-x86-64
.
Я пытаюсь разобрать это в ARM, как я могу это сделать?
Если вы хотите разобрать 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.
Надеюсь, это поможет вам.
Скомпилируйте 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]
...
Вам нужно сначала скомпилировать файл для руки, используя arm-linux-gnueabi-gcc
. Вы используете собственный objdump. Для демонтажа файла объекта оружия
arm-linux-gnueabi-objdump
. Надеюсь, что это поможет
Установите ELDK и используйте arm-linux-objdump. Вы пытаетесь разобрать инструкции ARM с помощью программы, которая знает только x86.