以ELF二进制导入名称

问题描述:

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

例如,如果二进制文件正在使用printf是否可以通过二进制本身的静态分析来告诉它呢?

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

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

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

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

+0

我们不能从哪个共享库中获得这些功能吗? –

+0

请注意,定义的符号也可以导入。您需要查看重定位表以查看使用哪些符号。 – ysdx

+0

@AnwarMohamed:不,因为它们不与ELF中的特定共享库绑定。 – ysdx