Linux Mach-O Disasembler

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


person Jeff    schedule 03.01.2012    source източник
comment
Сигурни ли сте, че binutils не поддържа Mach-O? Може би трябва да го конфигурирате за това и да го прекомпилирате (разбира се, binutils на вашата стандартна дистрибуция не го поддържа, защото няма нужда от това)?   -  person Basile Starynkevitch    schedule 03.01.2012
comment
Бях чел някъде, че GNU binutils не го поддържа. Просто предположих, че портът на Mac е модифициран, за да го поддържа. Това не е така, както @Brett Hale описва.   -  person Jeff    schedule 03.01.2012


Отговори (5)


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 двоични файлове).

person Brett Hale    schedule 03.01.2012
comment
Само за да бъде ясно, това е за изграждане на binutils специално за Mac osx? Не е за Linux като първоначалния въпрос? - person James McMahon; 17.10.2013
comment
@JamesMcMahon - Трябва да работи и при двете. --target е архитектурата / ABI, които анализират инструментите. --host указва платформата, на която ще работят инструментите. Обикновено --host по подразбиране е стойността, върната от config.guess. - person Brett Hale; 17.10.2013

По отношение на отговора на Джеф:

bintuils не включва поддръжка за свързване (ld/gld) за mach o дори в текущата версия 2.23, което наистина е разочароващо, но не е изненадващо. Това за съжаление се случва, когато създадете операционна система и преоткриете неща, „които наистина нямат нужда да бъдат преоткривани“. Всеки има различни приоритети. Все още не съм чул края на a.out vs elf от някои хора.

искате да опитате да стартирате ELF двоични файлове на OSX? https://stackoverflow.com/a/2613170/1867574

person Paige Thompson    schedule 30.11.2012

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

person 0xced    schedule 21.03.2013

Мисля, че имате нужда от otool. Включен е в mac osx command tools. Например, ако искате да разглобите a.out, всичко, което трябва да направите, е да напишете otool -tv a.out в командния ред.

person Douglas Su    schedule 02.08.2014

Няколко известни инструмента за обратно инженерство на Mach-O бинарните файлове са otool, strings, nm, otx и т.н. Това определено работи на MAC OSX, мисля, че работи и на платформата Linux.

person Anil    schedule 03.01.2012
comment
да... otool е OSX cmd line tool... Има алтернативен инструмент за Linux платформа.. Google и го намерете! - person Anil; 17.12.2013
comment
Бихте ли могли да кажете алтернативата за otool в ubuntu? - person Rohit saraf; 31.01.2019