如何在ELF可执行文件中列出导入的符号?


Answers:


16

尝试objdump -T'ELF-file'


我以为objdump -T主要在共享库上工作...
jim mcnamara 2010年

好吧...不是真的,如果我这样做:objdump -t / bin / ls它返回:“ SYMBOL TABLE:no symbol”,带有-T(列出了DYNAMIC SYMBOL TABLE)的输出很多数据,例如:“ 00000000 DF UND 00000000 GLIBC_2.0 strchr“
先生Shunz

5

objdump的输出为此目的有点多余,并且需要大量的解析才能找到实际的导入。

为此,我更喜欢使用readelf

readelf -d dynamic-buffer-test

Dynamic section at offset 0x630a8 contains 23 entries:
 Tag                Type                 Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]

如您所见,所需的库标记有“ NEEDED”。


它仅取决于您调用它的方式。尝试objdump -p /path/to/binary | grep NEEDED
sherrellbc

这似乎只列出了库,没有列出符号。
plugwash

5

我更喜欢readelf

readelf -s <file>


那只列出必需的库。问题是关于从所述库导入什么符号。
Alcaro

1

除了此处发布的其他答案外,我想提出另一个答案。打印的内容是文件格式的函数,其中ELF非常适合解决此问题。

objdump -p /path/to/binary | grep NEEDED

grep只是提取的内容Dynamic Section,但是其objdump -p输出格式使其成为简单的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.