我想查找二进制文件依赖的所有文件(包括库、配置文件,基本上是二进制文件中引用的所有文件)。
我知道你可以找到共享库和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
查看它在运行时打开的内容。