我们知道,有两种库加载方法。
1)静态库(.a):与应用程序链接并成为应用程序一部分的目标代码库。 2)动态链接共享对象库(.so),它将在执行应用程序时链接,并且可以以两种方式使用。
a) Dynamically linked at run time but statically aware.
b) Dynamically loaded/unloaded and linked during execution (i.e. browser plug-in) using the dynamic linking loader system functions.
编译完成后,我们可以检查类型' a'的库依赖关系。如下
objdump -x usr / bin / flashcp
.....
动态部分:
需要libgcc_s.so.1
需要libc.so.6
我的问题是如何检查/检测类型' b'库依赖?请建议有没有办法在执行前检测?
提前致谢
瑟尔
答案 0 :(得分:1)
通常无法检查动态加载的库以及通过函数指针调用其函数。
在某些特殊情况下,作为黑客攻击,您可以尝试各种方法对可执行文件进行逆向工程,例如:静态分析Windows上LoadLibrary
和GetProcAddress
调用的代码。您可以获得一些可用于许多可执行文件的启发式方法,但除了在虚拟机中执行代码并在发生LoadLibrary
/ dlopen
时拦截所有调用时,除了执行代码之外,无法确保其工作。