Има ли някакви Linux програми, които могат да разглобяват OSX универсален x86/x86_64 fat Mach-O двоичен файл като objdump? Objdump на GNU binutils поддържа ELF и Windows PE файлове, но не и Mach-O.
Linux Mach-O Disasembler
Отговори (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 двоични файлове).
--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
Можете да разглобявате Mach-O двоични файлове на Linux с Hopper. За разлика от objdump, той има много приятен графичен потребителски интерфейс.
Мисля, че имате нужда от otool
. Включен е в mac osx command tools
. Например, ако искате да разглобите a.out
, всичко, което трябва да направите, е да напишете otool -tv a.out
в командния ред.
Няколко известни инструмента за обратно инженерство на Mach-O бинарните файлове са otool, strings, nm, otx и т.н. Това определено работи на MAC OSX, мисля, че работи и на платформата Linux.
binutils
не поддържа Mach-O? Може би трябва да го конфигурирате за това и да го прекомпилирате (разбира се,binutils
на вашата стандартна дистрибуция не го поддържа, защото няма нужда от това)? - person Basile Starynkevitch   schedule 03.01.2012