我正在开发一个使用某些 Windows 库的应用程序(C++ 语言)。例如,我可以使用 Version.lib 查找任何应用程序的版本。我已将该库添加到 Visual Studio 的链接器设置中。我无法提供该库的精确位置,因为它是一个 Windows 库。
图书馆默认的检索顺序如下:
应用程序加载的目录
当前工作目录(CWD)
系统目录
16位系统目录
Windows 目录
PATH环境变量中列出的目录
由于我的应用程序是从用户目录中使用的,因此黑客可以将自定义 Version.dll 放置在加载我的应用程序的同一目录中,从而可能会发生 DLL 预加载攻击。由于应用程序最初加载所有 dll,因此将加载此自定义 version.dll。如何克服这个问题?
我什至尝试在链接器附加依赖项中提及 Version.lib 的路径,但它仍然首先在当前目录中搜索。我使用进程监视器发现dll首先在当前目录中搜索。