我正在尝试查找导入外部符号的共享库。目前,我可以使用 nm 或许多替代方法(例如使用radare2)来获取所有导入的符号。我还可以通过使用 ldd 来获取二进制文件所依赖的库。但是,我被困在这一点上,因为我找不到一种有效的方法来获取二进制文件中的哪个外部符号取决于哪个共享库。那么,例如,我怎样才能找到以有效方式导出名为 foo 或 printf 的函数或任何东西的共享库?我举个例子:
Output of nm -D myfile
w __cxa_finalize
U foo
w __gmon_start__
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
U __libc_start_main
U printf
U puts
Output of ldd
linux-vdso.so.1 (0x00007ffd30904000)
libfoo.so => /home/user/Desktop/dynamic_link_example/libfoo.so (0x00007f1b08aaf000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1b088a1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1b08abb000)