用于Mac OS X的类似readelf的工具?
是否有一个读取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
二进制文件中的位置的信息。
使用Macports :
- 安装macports 。
- 使用macports
port install binutils
-
gobjdump -p /path/to/app
使用自制软件 :
- 安装自制软件
- 做
brew update && brew install binutils
-
gobjdump -p /path/to/app
当然,还有许多其他的命令行选项。 请注意,binutils端口警告说安装它可能会导致其他端口无法build立。 有它到端口安装/看东西/端口卸载仍然可以得心应手。
这是相当了不起的,还没有一个本地的工具来做到这一点。
otool -l test.o
你尝试过ObjConv吗? http://agner.org/optimize/#objconv
此实用程序可用于转换所有32位和64位x86平台上的COFF / PE,OMF,ELF和Mach-O(Mac OS使用)格式之间的目标文件。 可以修改对象文件中的符号名称。 可以跨平台构build,修改和转换函数库。 可以转储对象文件和可执行文件。 还包括支持SSE4,AVX,FMA和XOP指令集的非常好的反汇编程序。
Ps .:包含源代码(GPL)。
你可以试试侏儒转储 。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew install binutils greadelf filepath
- 安装自制软件。
- 使用自制软件安装binutils
- binutils中的readelf被称为
greadelf
。