例如,COMDLG32.DLL 隐式链接到以下系统 DLL(以及其他):
xmllite.dll
dll
srvcli.dll
wkscli.dll
链接信息库
netutils.dll
微星.dll
由于这些是由操作系统隐式加载的,而不是使用 LoadLibrary 调用显式加载的,因此劫持漏洞解决方法使用SetDllDirectory
不影响加载 COMDLG32.DLL 时正在完成的这些加载。
因此,在加载我的应用程序后,我按 Ctrl+O 使用“文件打开”对话框,这些“坏”DLL(存在于我的 EXE 文件夹中)将被加载。
COMDLG32.DLL 正在加载我的 EXE 文件夹中的文件,而不是系统文件夹中的合法文件,即使我正在调用SetDllDirectory("");
in InitInstace()
早在我启动“文件打开”对话框之前。
如何让系统 DLL(例如 COMDLG32.DLL)正确利用正确的 DLL 来隐式加载 DLL?
SetDllDirectory("")
从 DLL 搜索路径中删除当前/工作目录,它确实not对应用程序目录(.exe 所在的位置)有任何影响。
您可以致电SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32) https://msdn.microsoft.com/en-us/library/windows/desktop/hh310515(v=vs.85).aspx如果您想将自己限制在 system32 目录中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)