【问题标题】:Import names in ELF binary在 ELF 二进制文件中导入名称
【发布时间】:2012-05-07 10:43:33
【问题描述】:

ELF 格式在哪里存储导入函数的名称?是否总是可以枚举所有导入名称,例如 PE 可执行文件?

例如,如果一个二进制文件正在使用printf,是否可以通过对二进制文件本身的静态分析来判断它是否使用了printf

【问题讨论】:

    标签: linux import dllimport file-format elf


    【解决方案1】:

    在 ELF 中,它们被称为未定义符号。您可以通过以下方式查看未定义符号列表:

    • nm -D <file>|grep -w U

    • objdump -T <file>|grep "\*UND\*"

    ELF 文件不指定哪些符号来自哪些库;它只是将共享库列表添加到 ELF 二进制文件中,并让链接器在库中查找符号。

    【讨论】:

    • 我们不能从哪个共享库中获取这些函数吗?
    • 请注意,也可以导入定义的符号。您需要查看重定位表以了解使用了哪些符号。
    • @AnwarMohamed:不,因为它们没有绑定到 ELF 中的特定共享库。
    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2013-03-20
    • 2016-11-07
    • 1970-01-01
    • 2021-03-17
    • 2014-12-13
    • 2014-08-10
    相关资源
    最近更新 更多