更改 Visual Studio 属性中的默认搜索顺序以避免 DLL 预加载攻击

问题描述 投票:0回答:1

我正在开发一个使用某些 Windows 库的应用程序(C++ 语言)。例如,我可以使用 Version.lib 查找任何应用程序的版本。我已将该库添加到 Visual Studio 的链接器设置中。我无法提供该库的精确位置,因为它是一个 Windows 库。

图书馆默认的检索顺序如下:

  • 应用程序加载的目录

  • 当前工作目录(CWD)

  • 系统目录

  • 16位系统目录

  • Windows 目录

  • PATH环境变量中列出的目录

由于我的应用程序是从用户目录中使用的,因此黑客可以将自定义 Version.dll 放置在加载我的应用程序的同一目录中,从而可能会发生 DLL 预加载攻击。由于应用程序最初加载所有 dll,因此将加载此自定义 version.dll。如何克服这个问题?

我什至尝试在链接器附加依赖项中提及 Version.lib 的路径,但它仍然首先在当前目录中搜索。我使用进程监视器发现dll首先在当前目录中搜索。

c++ visual-studio dll linker dll-injection
1个回答
0
投票
如果dll支持延迟加载,

/DELAYLOAD(延迟加载导入)

/DELAYLOAD 选项会导致由 dllname 指定的 DLL 仅在程序第一次调用该函数时加载 DLL。

并使用LoadLibrary加载指定路径的DLL。

© www.soinside.com 2019 - 2024. All rights reserved.