2012-01-03 4 views
11

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

+0

Вы уверены, что 'binutils' не поддерживают Mach-O? Возможно, вам нужно настроить его для этого и перекомпилировать (конечно, 'binutils' вашего стандартного дистрибутива не поддерживает его, потому что в этом нет необходимости)? –

+0

Я где-то читал, что GNU binutils не поддерживал его. Я просто предположил, что порт mac был изменен для его поддержки. Это не так, как описывает @Brett Hale. – Jeff

ответ

10

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

+0

Это сработало. Большое спасибо. – Jeff

+0

Спасибо, миллион! Работал превосходно!^_^ – TrinitronX

+0

Просто чтобы быть понятным, это для создания binutils специально для Mac OSX? Не для Linux, как оригинальный вопрос? –

-1

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

+0

Нет, otool не работает в Linux. Если у вас есть какие-либо противоположные доказательства, сообщите об этом. Если у вас есть версия других инструментов, которые работают с Linux для файлов Mac OS X, укажите, откуда вы их взяли. – pts

+0

yes ... otool - это инструмент командной строки OSX cmd ... Существует альтернативный инструмент для платформы Linux .. Google и найти его! – Anil

+2

Я пробовал погулять, и я получил ... этот ответ. – Buge

5

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

bintuils не включает ссылки поддержки (л.д./GLD) для Маха о даже не в текущем 2,23 релиза, который на самом деле разочарование, но не удивительно. К сожалению, это то, что происходит, когда вы создаете ОС и изобретаете вещи, «которые действительно не нужно заново изобретать». У всех разные приоритеты. Я до сих пор не слышал о конце a.out против эльфа от некоторых людей.

Учтите, чтобы попытаться запустить двоичные файлы ELF на OSX? https://stackoverflow.com/a/2613170/1867574

2

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

2

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