2012-01-03 9 views
11

Esistono programmi Linux in grado di disassemblare un binario Mach-O universale x86/x86_64 grasso come objdump? Objdump di GNU binutils supporta file ELF e Windows PE ma non Mach-O.Linux Mach-O Disassembler

+0

Sei sicuro che 'binutils' non supporta Mach-O? Forse è necessario configurarlo e ricompilarlo (ovviamente i 'binutils' della distribuzione standard non lo supportano, perché non ne ha bisogno)? –

+0

Avevo letto da qualche parte che GNU binutils non lo supportava. Ho semplicemente pensato che la porta mac fosse stata modificata per supportarla. Questo non è il caso come descrive @Brett Hale. – Jeff

risposta

10

AFAIK, gli strumenti binari Darwin nativi fanno parte del pacchetto cctools. Non hanno la stessa sintassi della riga di comando o output come GNU binutils. Più tardi binutils (cioè, 2,22) supporta comunque il formato Mach-O. È possibile ottenere questi pre-compilati, con il prefisso 'g' ai nomi degli strumenti, come indicato here. In alternativa, è possibile compilare binutils, con qualcosa come:

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

installazione produrrà una directory bin/ in cui le utilità sono precedute da x86_64-apple-darwin. Dovrebbe gestire il formato Mach-O i386 (e i file binari FAT).

+0

Ha funzionato. Grazie mille. – Jeff

+0

Grazie mille! Ha funzionato in modo eccellente!^_^ – TrinitronX

+0

Giusto per essere chiari, questo è per la costruzione di binutils appositamente per Mac osx? Non per Linux piace la domanda originale? –

-1

Pochi famosi strumenti per il reverse engineering dei binari di Mach-O sono otool, stringhe, nm, otx ecc. Funziona sicuramente su MAC OSX, penso che funzioni anche sulla piattaforma Linux.

+0

No, otool non funziona su Linux. Se hai prove contrarie, per favore segnalalo. Se hai una versione degli altri strumenti che funzionano su Linux per i file Mac OS X, ti preghiamo di indicare da dove li hai presi. – pts

+0

sì ... otool è uno strumento di linea cmd OSX ... C'è uno strumento alternativo per la piattaforma Linux .. Google e trovalo! – Anil

+2

Ho provato a cercarlo su google e ho ottenuto ... questa risposta. – Buge

5

Per quanto riguarda la risposta di Jeff:

bintuils non comprende che collega il supporto (LD/GLD) per mach o nemmeno nella corrente 2.23 di rilascio che è davvero deludente ma non sorprendente. Questo purtroppo è ciò che accade quando crei un sistema operativo e reinventi le cose "che non hanno davvero bisogno di essere reinventate". Ognuno ha priorità diverse. Non ho ancora sentito la fine di a.out vs elf da alcune persone.

attenzione a provare a eseguire binari ELF su OSX? https://stackoverflow.com/a/2613170/1867574

2

È possibile disassemblare i binari di Mach-O su Linux con Hopper. A differenza di objdump, ha un'interfaccia grafica molto bella.

2

Penso che sia necessario otool. È incluso in mac osx command tools. Ad esempio, se si desidera smontare lo a.out, è sufficiente digitare otool -tv a.out nella riga di comando.