2010-10-04 7 views
10

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

objdump -d example.o 

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

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

+0

Чтобы уточнить, вы говорите, что у вас есть исполняемый/объектный файл x86_64 и хотели бы его разобрать как инструкции ARM? – dmckee

+0

Да, профессор, я работаю над проектом, и что я хочу сделать, это дизассемблировать объектный файл, но я думаю, что это исполняемый файл x86. Если я использую arm-linux-objdump, я должен разбираться в ARM вправо? – Steve

+1

Для компиляции, а также для разборки вам необходимо использовать инструментальную привязку кросс-компилятора ARM. – JagsVG

ответ

2

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

6

Компиляция 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] 
... 
7

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

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

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

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

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

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

3

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