![查找二进制文件依赖的所有文件(包括库)](https://linux22.com/image/84322/%E6%9F%A5%E6%89%BE%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E4%BE%9D%E8%B5%96%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%88%E5%8C%85%E6%8B%AC%E5%BA%93%EF%BC%89.png)
我想查找二进制文件依赖的所有文件(包括库、配置文件,基本上是二进制文件中引用的所有文件)。
我知道你可以找到共享库和objdump, ldd, readelf
,dlopen
但是动态加载的库 ( ) 和其他文件 ( /etc/some/config
)又如何呢?
到目前为止,我有一个半成品的解决方案,它在二进制文件中搜索字符串(文件名)($ strings /path/to/binary | grep lib
),但我认为正确的解决方案是搜索二进制文件所做的系统调用(read, write, dlopen, etc
)。
不幸的是,我没有任何反汇编程序的经验,也不了解其他方法。
另外,我无法使用依赖于执行二进制文件的解决方案(strace、摆弄等),因为我需要对大量二进制文件批量执行此操作。
找到二进制文件引用的所有文件中约 90% 的解决方案就足够了。
要检查的二进制文件是标准 (Arch) Linux (multilib) 二进制文件。我假设其中大部分是由 gcc (-O2) 编译的。
答案1
你可以尝试:
strace -fe open cmd 2>&1 >/dev/null | grep -v '= -1' | cut -d\" -f2
查看它在运行时打开的内容。