ELF二进制文件中的导入名称

5

ELF格式在哪里存储导入函数的名称?是否总能枚举所有的导入名称,就像PE可执行文件一样?

例如,如果一个二进制文件使用printf,仅通过对二进制文件本身进行静态分析,是否可以确定它使用了printf函数?

1个回答

7
在 ELF 中,它们被称为未定义符号。您可以通过以下方式查看未定义符号列表:
  • nm -D <file>|grep -w U

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

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

我们无法得知这些函数来自哪个共享库吗? - Anwar Mohamed
请注意,已定义的符号也可以被导入。您需要查看重定位表以查看使用了哪些符号。 - ysdx
@AnwarMohamed:不是因为它们没有与ELF中的特定共享库相关联。 - ysdx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接