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
risposta
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).
Ha funzionato. Grazie mille. – Jeff
Grazie mille! Ha funzionato in modo eccellente!^_^ – TrinitronX
Giusto per essere chiari, questo è per la costruzione di binutils appositamente per Mac osx? Non per Linux piace la domanda originale? –
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.
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
sì ... otool è uno strumento di linea cmd OSX ... C'è uno strumento alternativo per la piattaforma Linux .. Google e trovalo! – Anil
Ho provato a cercarlo su google e ho ottenuto ... questa risposta. – Buge
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
È possibile disassemblare i binari di Mach-O su Linux con Hopper. A differenza di objdump, ha un'interfaccia grafica molto bella.
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.
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)? –
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