Linux Mach-O дизассемблер - PullRequest
       108

Linux Mach-O дизассемблер

11 голосов
/ 03 января 2012

Существуют ли программы для Linux, которые могут разбирать OSX универсальный двоичный файл Mach-O x86 / x86_64, например, objdump?Objdump GNU binutils поддерживает файлы ELF и Windows PE, но не Mach-O.

Ответы [ 5 ]

12 голосов
/ 03 января 2012

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).

5 голосов
/ 01 декабря 2012

Что касается ответа Джеффа:

bintuils не включает поддержку связывания (ld / gld) для машин даже в текущем выпуске 2.23, что действительно разочаровывает, но не удивительно Это, к сожалению, то, что происходит, когда вы создаете ОС и заново изобретаете вещи, «которые действительно не нужно заново изобретать». У всех разные приоритеты. Я до сих пор не слышал, как кто-то из противников кончил.

хотите попробовать запустить ELF-файлы в OSX? https://stackoverflow.com/a/2613170/1867574

2 голосов
/ 02 августа 2014

Я думаю, вам нужно otool. Включено в mac osx command tools. Например, если вы хотите разобрать a.out, все, что вам нужно сделать, это набрать otool -tv a.out в командной строке.

2 голосов
/ 22 марта 2013

Вы можете разобрать двоичные файлы Mach-O в Linux с помощью Hopper . В отличие от objdump, он имеет очень приятный графический интерфейс пользователя.

0 голосов
/ 03 января 2012

Мало известных инструментов для реинжиниринга двоичных файлов Mach-O: otool , string, nm, otx и т. Д. Это определенно работает на MAC OSX, я думаю, что оно работает и на платформе Linux. *

...