2012-01-03 17 views
11

¿Hay algún programa de Linux que pueda desensamblar un OSX universal x86/x86_64 gordo Mach-O binario como objdump? Objdump de GNU binutils admite archivos ELF y Windows PE, pero no Mach-O.Linux Mach-O Desensamblador

+0

¿Estás seguro de que los 'binutils' no son compatibles con Mach-O? Quizás necesite configurarlo para eso y volver a compilarlo (por supuesto, los 'binutils' de su distribución estándar no lo admiten, porque no lo necesita). –

+0

Había leído en alguna parte que los binutils de GNU no lo habían soportado. Simplemente asumí que el puerto Mac se modificó para admitirlo. Este no es el caso como describe @Brett Hale. – Jeff

Respuesta

10

AFAIK, las herramientas binarias Darwin nativas son parte del paquete cctools. No tienen la misma sintaxis o salida de la línea de comando que el GNU binutils. Sin embargo, los binutils posteriores (es decir, 2.22) admiten el formato Mach-O. Puede obtener estos precompilados, con el prefijo 'g' a los nombres de las herramientas, como se menciona here. Alternativamente, puede compilar binutils, con algo como:

> ./configure --prefix=$CROSSTOOLDIR --target=x86_64-apple-darwin \ 
--enable-64-bit-bfd --disable-nls --disable-werror 

instalación producirá un directorio bin/, donde las empresas de servicios públicos tienen el prefijo x86_64-apple-darwin. Debe manejar el formato i386 Mach-O (y los binarios FAT) bien.

+0

Eso funcionó. Muchas gracias. – Jeff

+0

¡Gracias a un millón! Funcionó excelentemente!^_^ – TrinitronX

+0

Para que quede claro, esto es para construir binutils específicamente para Mac osx? ¿No es para Linux como la pregunta original? –

-1

Pocas herramientas famosas para la ingeniería inversa Los binarios de Mach-O son otool, strings, nm, otx etc. Esto definitivamente funciona en el MAC OSX, creo que también funciona en la plataforma Linux.

+0

No, otool no funciona en Linux. Si tiene alguna evidencia en contrario, por favor indíquelo. Si tiene una versión de las otras herramientas que funcionan en Linux para archivos Mac OS X, indique de dónde las obtuvo. – pts

+0

sí ... otool es una herramienta de línea de cmd OSX ... Existe una herramienta alternativa para la plataforma Linux ... ¡Google y encuéntrela! – Anil

+2

Intenté buscar en Google y obtuve ... esta respuesta. – Buge

5

Con respecto a la respuesta de Jeff:

bintuils no incluye vincular el apoyo (LD/gld) para mach o ni siquiera en el actual 2,23 liberación que es realmente decepcionante, pero no sorprendente. Desafortunadamente, eso es lo que sucede cuando haces un sistema operativo y reinventa cosas que "realmente no necesitan ser reinventadas". Todos tienen diferentes prioridades. Todavía no he escuchado el final de a.out vs elf de algunas personas.

¿desea intentar ejecutar los binarios ELF en OSX? https://stackoverflow.com/a/2613170/1867574

2

Puede desmontar los binarios de Mach-O en Linux con Hopper. A diferencia de objdump, tiene una interfaz gráfica de usuario muy agradable.

2

Creo que necesita otool. Está incluido en mac osx command tools. Por ejemplo, si desea desensamblar a.out, todo lo que tiene que hacer es escribir otool -tv a.out en su línea de comando.