Существуют ли какие-либо Linux-программы, которые могут дизассемблировать универсальный x86/x86_64 OSX универсальный массив Mach-O, например objdump? GNU binutils objdump поддерживает файлы ELF и Windows PE, но не Mach-O.
Linux Mach-O Disassembler
Ответ 1
AFAIK, собственные бинарные инструменты Darwin являются частью пакета cctools. Они не имеют того же синтаксиса или вывода командной строки, что и GNU binutils. Позже binutils (т.е. 2.22) поддерживает формат Mach-O. Вы можете получить эти предварительные настройки с префиксом 'g
' к именам инструментов, как упомянуто здесь. Кроме того, вы можете скомпилировать binutils с чем-то вроде:
> ./configure --prefix=$CROSSTOOLDIR --target=x86_64-apple-darwin \
--enable-64-bit-bfd --disable-nls --disable-werror
Установка приведет к каталогу bin/
, где утилит имеет префикс x86_64-apple-darwin
. Он должен обрабатывать формат i386 Mach-O (и двоичные файлы FAT).
Ответ 2
Что касается ответа Джеффа:
bintuils не включает поддержку привязки (ld/gld) для mach даже не в текущем выпуске 2.23, что действительно неутешительно, но не удивительно. К сожалению, это то, что происходит, когда вы создаете ОС и изобретаете вещи, "которые действительно не нужно заново изобретать". У всех разные приоритеты. Я до сих пор не слышал о конце a.out против эльфа от некоторых людей.
Учтите, чтобы попытаться запустить двоичные файлы ELF на OSX? fooobar.com/questions/259198/...
Ответ 3
Вы можете дизассемблировать файлы Mach-O в Linux с помощью Hopper. В отличие от objdump, он имеет очень приятный графический интерфейс пользователя.
Ответ 4
Думаю, вам нужно otool
. Он включен в mac osx command tools
. Например, если вы хотите разобрать a.out
, все, что вам нужно сделать, это набрать otool -tv a.out
в командной строке.
Ответ 5
Немногие известные инструменты для обратного проектирования бинарные файлы Mach-O otool, строки, nm, otx и т.д. Это определенно работает на MAC OSX, я думаю, что он работает и с платформой Linux.