Linux Mach-O Disassembler

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

AFAIK, gli strumenti binari nativi di Darwin fanno parte del pacchetto cctools . Non hanno la stessa syntax della riga di comando o l’output delle binutils GNU . I successivi binutils (cioè, 2.22) supportano comunque il formato Mach-O. È ansible ottenere questi pre-compilati, con il prefisso ‘ g ‘ ai nomi degli strumenti, come indicato qui . In alternativa, puoi compilare binutils con qualcosa di simile:

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

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

Per quanto riguarda la risposta di Jeff:

bintuils non include il supporto per il collegamento (ld / gld) per mach o nemmeno nell’attuale versione 2.23, 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.

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

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

Penso che tu abbia bisogno di otool . È incluso negli mac osx command tools . Ad esempio, se si desidera disassemblare a.out , è sufficiente digitare otool -tv a.out nella riga di comando.

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