2010-10-04 51 views
10

Tengo un archivo de objeto y estoy tratando de desmontarlo. Cuando uso:Uso de objdump para arquitectura ARM: Desarmado a ARM

objdump -d example.o 

consigo un conjunto en el código en el formato de archivo de elf64-x86-64.

Estoy tratando de desmontar esto en ARM, ¿cómo hago esto?

+0

Solo para aclarar, ¿está diciendo que tiene un archivo ejecutable/objeto x86_64 y le gustaría que se desensamble como instrucciones ARM? – dmckee

+0

sí, un profesor me tiene trabajando en un proyecto y lo que quiero hacer es desensamblar el archivo objeto pero supongo que es un ejecutable x86. Si uso arm-linux-objdump, debería ser capaz de desensamblar en ARM ¿verdad? – Steve

+1

Para compilar y desensamblar, necesita usar la herramienta de compilación cruzada ARM. – JagsVG

Respuesta

2

Instale ELDK y use arm-linux-objdump. Está intentando desarmar las instrucciones ARM utilizando un programa que solo conoce x86.

6

Compila binutils con el objetivo correcto para obtener binutils objdump binario que sepa cómo desensamblar ARM.

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

./configure --enable-targets=all por ejemplo.

Elija sus objetivos, cree y use el nuevo binario objdump que es su objetivo. Consulte el archivo binutils/README para obtener más información sobre la orientación.

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

vs

./../../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

Si usted quiere hacer desmonte de código ARM, es mejor que tenga una cadena de herramientas ARM, esto es lo que tengo:

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

Después de tener esto, puede usar arm-elf-objdump en lugar de objdump. El comando que utiliza es

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

Si se mira la página de manual, se encuentra "-b" es seguido por el tipo de archivo. Lo siento, no sé cómo decir -b que quieres analizar un archivo .o. "-marm" le dirá a la CPU que es ARM.

Hope esto le puede ayudar.

3

Tiene que cruzar compilar el archivo para el brazo primero usando arm-linux-gnueabi-gcc. Está utilizando objdump nativo. Para desmontar el archivo del objeto del brazo, use arm-linux-gnueabi-objdump. Espero que esto ayude