关于系统搜索某个DLL的路径

引言我们可以使用LoadLibrary()或LoadLibraryEx()来显式地加载某个dll,在我们未提供dll全路径或调用SetDefaultDllDirectories和 AddDllDirectory两个API对DLL路径进行设置时,系统依然会尝试着在某些目录下寻找我们想要的DLL文件,在寻找DLL时,Windows系统会按一定的顺序在不同的目录下查找. Windows查找D
摘要由CSDN通过智能技术生成

引言

我们可以使用LoadLibrary()LoadLibraryEx()来显式地加载某个dll,在我们未提供dll全路径或调用SetDefaultDllDirectories和 AddDllDirectory两个API对DLL路径进行设置时,系统依然会尝试着在某些目录下寻找我们想要的DLL文件,在寻找DLL时,Windows系统会按一定的顺序在不同的目录下查找.


Windows查找DLL的顺序

在以前的Windows版本(Windows xp sp2之前),系统在寻找某个DLL时,会按照以下顺序搜索:

  1. 应用程序EXE所在的路径。
  2. 当前目录(可通过SetCurrentDirectory设置,GetCurrentDirectory获取)
  3. 系统目录(通常是C:\Windows\System32,WOW64程序也会重定向到C:\Windows\SysWOW64目录,可以通过GetSystemDirectory获取)
  4. 16位系统目录(通常是,C:\Windows\System)
  5. Windows目录(通常是,C:\Windows,可以通过GetWindowsDirectory获取)
  6. PATH环境变量指定的目录

由于很多恶意程序利用这一机制,在程序的当前目录放置与程序欲加载的DLL同名的假DLL文件,导致程序加载了错误的DLL(这一过程又叫DLL劫持),在Windows xp sp2之后,WIndows系统默认开启了一种名为安全DLL搜索模式(SafeDllSearchMode)的机制,该机制将使系统按如下模式搜索DLL:

  1. 应用程序EXE所在的路径。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值