Есть ли какие-либо Linux-программы, которые могут разобрать универсальный x86/x86_64 OSX универсальный бит-O, такой как objdump? GNU binutils objdump поддерживает файлы ELF и Windows PE, но не Mach-O.Linux Mach-O Disassembler
ответ
AFAIK, родные бинарные инструменты Дарвина являются частью пакета cctools. Они не имеют того же синтаксиса или вывода командной строки, что и GNU binutils. Позже binutils (т. Е. 2.22) поддерживает формат Mach-O. Вы можете получить эти заранее подготовленные с префиксом 'g
' названиям инструментов, как упомянуто here. Кроме того, вы можете скомпилировать 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).
Это сработало. Большое спасибо. – Jeff
Спасибо, миллион! Работал превосходно!^_^ – TrinitronX
Просто чтобы быть понятным, это для создания binutils специально для Mac OSX? Не для Linux, как оригинальный вопрос? –
Несколько известных инструментов для обратного проектирования бинарных файлов Mach-O: otool, строки, nm, otx и т. Д. Это определенно работает на MAC OSX, я думаю, что он работает и с платформой Linux.
Нет, otool не работает в Linux. Если у вас есть какие-либо противоположные доказательства, сообщите об этом. Если у вас есть версия других инструментов, которые работают с Linux для файлов Mac OS X, укажите, откуда вы их взяли. – pts
yes ... otool - это инструмент командной строки OSX cmd ... Существует альтернативный инструмент для платформы Linux .. Google и найти его! – Anil
Я пробовал погулять, и я получил ... этот ответ. – Buge
касается ответа Джеффа:
bintuils не включает ссылки поддержки (л.д./GLD) для Маха о даже не в текущем 2,23 релиза, который на самом деле разочарование, но не удивительно. К сожалению, это то, что происходит, когда вы создаете ОС и изобретаете вещи, «которые действительно не нужно заново изобретать». У всех разные приоритеты. Я до сих пор не слышал о конце a.out против эльфа от некоторых людей.
Учтите, чтобы попытаться запустить двоичные файлы ELF на OSX? https://stackoverflow.com/a/2613170/1867574
Вы можете разобрать бинарные файлы Mach-O на Linux с помощью Hopper. В отличие от objdump, он имеет очень приятный графический интерфейс пользователя.
Думаю, что вам нужно otool
. Он включен в mac osx command tools
. Например, если вы хотите разобрать a.out
, все, что вам нужно сделать, это ввести otool -tv a.out
в командной строке.
Вы уверены, что 'binutils' не поддерживают Mach-O? Возможно, вам нужно настроить его для этого и перекомпилировать (конечно, 'binutils' вашего стандартного дистрибутива не поддерживает его, потому что в этом нет необходимости)? –
Я где-то читал, что GNU binutils не поддерживал его. Я просто предположил, что порт mac был изменен для его поддержки. Это не так, как описывает @Brett Hale. – Jeff