readelf-подобный инструмент для Mac OS X? [закрытый]
есть ли инструмент для чтения двоичных файлов Mac OS X, который будет печатать информацию о таблицах перемещения и смещениях символов, подобных этому readelf
выход?
readelf -r app
Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries:
Offset Info Type Sym.Value Sym. Name
08049d58 00001706 R_386_GLOB_DAT 00000000 __gmon_start__
08049d60 00000305 R_386_COPY 08049d60 _ZSt4cout
Relocation section '.rel.plt' at offset 0x5fc contains 13 entries:
Offset Info Type Sym.Value Sym. Name
08049d24 00000107 R_386_JUMP_SLOT 0804868c print
08049d28 00000207 R_386_JUMP_SLOT 0804869c _ZNSt8ios_base4InitC1E
08049d2c 00000507 R_386_JUMP_SLOT 080486ac _ZStlsISt11char_traits
08049d30 00000607 R_386_JUMP_SLOT 080486bc _ZNSolsEPFRSoS_E
08049d34 00000707 R_386_JUMP_SLOT 08048664 _init
08049d38 00000807 R_386_JUMP_SLOT 080486dc sleep
08049d3c 00000907 R_386_JUMP_SLOT 080486ec _ZNKSsixEj
08049d40 00000b07 R_386_JUMP_SLOT 080486fc _ZNKSs4sizeEv
08049d44 00000c07 R_386_JUMP_SLOT 0804870c __libc_start_main
08049d48 00000d07 R_386_JUMP_SLOT 08048ae4 _fini
08049d4c 00001307 R_386_JUMP_SLOT 0804872c _ZSt4endlIcSt11char_tr
08049d50 00001507 R_386_JUMP_SLOT 0804873c __gxx_personality_v0
08049d54 00001607 R_386_JUMP_SLOT 0804874c _ZNSt8ios_base4InitD1E
в этом примере print
- это функция, загруженная из общей библиотеки (я написал) во время выполнения. readelf
может отображать информацию о своем местоположении внутри app
бинарный.
5 ответов
используя системы MacPorts:
- установить macports.
- использование macports
port install binutils
gobjdump -p /path/to/app
используя доморощенного:
- Установить Homebrew
- Do
brew update && brew install binutils
gobjdump -p /path/to/app
есть, конечно, много других параметров командной строки. Обратите внимание, что порт binutils предупреждает, что его установка может вызвать другие порты не удалось построить. Имея его вокруг, чтобы установить порт / посмотреть на что-то / удалить порт, все еще может быть удобно.
это довольно удивительно, что уже нет какого-то родного инструмента для этого.
вы пробовали ObjConv? http://agner.org/optimize/#objconv
эта утилита может использоваться для преобразования объектных файлов между форматами COFF/PE, OMF, ELF и Mach-O (используется Mac OS) для всех 32-разрядных и 64-разрядных платформ x86. Может изменять имена символов в объектных файлах. Смогите построить, доработать и преобразовать библиотеки функции через платформы. Может сбрасывать объектные и исполняемые файлы. Также включает очень хороший дизассемблер поддерживая инструкцию SSE4, AVX, FMA и XOP наборы.
Ps.: Исходный код включен (GPL).
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install binutils
greadelf filepath
- установить homebrew.
- используйте homebrew для установки binutils
- readelf в binutils называется
greadelf
.