加载时动态链接(导入库)搜索顺序

时间:2012-06-27 10:27:08

标签: windows visual-studio dll

如果我使用导入库用Windows系统dll实现load-time dynamic linking,将使用哪个目录搜索顺序?

它最终是否等同于LoadLibrary("Iphlpapi.dll")?它会使用完全合格的路径(即LoadLibrary("C:\\windows\\system32\\Iphlpapi.dll")

一些常用的dll("known dlls")显然会受到特殊处理,但是其他系统 dll如Iphlapi.dll呢?

是否容易受到DLL preloading attack

的攻击

2 个答案:

答案 0 :(得分:0)

它应该使用完全限定的路径,即(“C:\ windows \ system32 \ kernel.dll”)......

答案 1 :(得分:0)

从您提到的网址中,您使用的是动态链接库机制的STATIC版本!这意味着您的应用程序必须使用DLL的相应LIB构建(请参阅此URL中的说明),并且应用程序将在启动时期望DLL存在。如果缺少此DLL,您的应用程序将无法启动(这就是为什么这种机制称为“使用加载时动态链接” “)。您不能也不必调用LoadLibrary。这将由Loader自动完成(因为您的应用程序和DLL之间的依赖关系)已经放在应用程序的所谓导入地址表(IAT)中