代码之家  ›  专栏  ›  技术社区  ›  karlphillip

Mac OS X的readelf类工具[[关闭]

  •  43
  • karlphillip  · 技术社区  · 15 年前

    有没有一个读取macosx二进制文件的工具,可以打印与此类似的重定位表和符号偏移的信息 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 是在运行时从共享库(我编写的)加载的函数。 自述 app 二元的。

    5 回复  |  直到 10 年前
        1
  •  94
  •   rogerdpack    5 年前

    使用 Macports :

    1. Install macports
    2. port install binutils
    3. gobjdump -p /path/to/app

    使用 Homebrew :

    1. Install Homebrew
    2. brew update && brew install binutils
    3. /usr/local/path/to/gobjdump -p /path/to/app

    当然,还有许多其他命令行选项。请注意,binutils端口警告说,安装它可能会导致其他端口无法构建。让它在周围进行端口安装/查看一些东西/端口卸载仍然很方便。

    这是相当惊人的,已经没有一些本地工具来做这件事。

        2
  •  21
  •   ergosys    15 年前

    耳蜗试验

        3
  •  9
  •   Jichao    10 年前
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    brew install binutils
    greadelf filepath
    
    1. 使用自制程序安装binutils
    2. binutils中的readelf被称为 greadelf .
        4
  •  6
  •   l'L'l    7 年前

    你可以试试 dwarfdump

        5
  •  5
  •   carlfilips    15 年前

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

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

    附:包括源代码(GPL)。