适用于 Mac OS X 的类似 readelf 的工具? [已关闭]

问题描述 投票:0回答:5

是否有一个用于读取 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
二进制文件中的位置的信息。

c macos function symbols
5个回答
112
投票

使用Macports

  1. 安装macports
  2. 使用macports
    port install binutils
  3. gobjdump -p /path/to/app

使用自制

  1. 安装自制软件
  2. brew update && brew install binutils
  3. /usr/local/path/to/gobjdump -p /path/to/app
    # 或按照说明将其添加到您的路径

当然,还有许多其他命令行选项。 请注意,binutils port 警告安装它可能会导致其他 ports 无法构建。 将其用于端口安装/查看某些内容/端口卸载仍然很方便。

令人惊讶的是,还没有一些本地工具可以做到这一点。


26
投票

otool -l test.o


16
投票
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install binutils
greadelf -a filepath
  1. 安装自制软件。
  2. 使用homebrew安装binutils
  3. binutils 中的 readelf 称为
    greadelf

7
投票

你可以尝试

dwarfdump

u2063u2063u2063u2063u2063u2063u2063u2063u2063u2063u2063


5
投票

您尝试过 ObjConv 吗? http://agner.org/optimize/#objconv

此实用程序可用于在所有 32 位和 64 位 x86 平台的 COFF/PE、OMF、ELF 和 Mach-O(Mac OS 使用)格式之间转换目标文件。可以修改目标文件中的符号名称。可以跨平台构建、修改和转换函数库。可以转储目标文件和可执行文件。还包括一个非常好的反汇编器,支持 SSE4、AVX、FMA 和 XOP 指令集。

Ps.:包含源代码(GPL)。

© www.soinside.com 2019 - 2024. All rights reserved.