【问题标题】:There is a signature for a specific ABI in an ELF or binary file?ELF 或二进制文件中是否有特定 ABI 的签名?
【发布时间】:2014-12-13 05:17:00
【问题描述】:

我需要识别用于生成一些二进制文件、程序、动态和静态库的 ABI。

我想问一下是否有一个属性、一个标签或一个字符串,我可以使用一些外部工具来查看哪个 ABI 用于创建该二进制对象。我的对象主要是用于 x86 和 ARM 的 ELF,并且我还包括用于调试目的的 ABI,就像 DWARF 一样。

编辑:类似于文件开头的魔术字节,通常用于检测文件的文件格式。

【问题讨论】:

    标签: x86 arm elf abi


    【解决方案1】:

    ELF 文件中可能存在多个指标。

    1. ELF header identEI_OSABI 字段
    2. .note.ABI-tag 用于标记例如Linux vs. FreeBSD binaries
    3. FreeBSDe_indent 字段的保留部分(从第 8 个字节开始)使用“品牌”签名。
    4. 对于 ARM 文件,e_flags field 中还有 EABI 版本/变体信息,目标文件也可能有 .ARM.attributes 部分
    5. .comment 部分可能包含编译器名称/版本,但仅供参考 - 操作系统不使用它来识别 ABI,并且通常不会提及特定的 ABI 信息。
    6. .note 部分可能包含可能指向正在使用的 ABI 的附加信息。

    在大多数情况下,readelf 将显示必要的信息,但您可能需要添加一些开关(例如,-A 以显示 .ARM.attributes 部分)。我认为没有任何东西可以解析 .note.ABI-tag 部分,因此您可能必须手动进行。

    有关详细信息,请参阅 SysV ABI 和 ARM EABI 文档。

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2017-10-11
      相关资源
      最近更新 更多