微软已知的DLL

Ben*_*min 10 windows dll

HKML\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

KnownDLL 的目的是什么?(为了更快地加载某些 Dll?)

如果我有管理员令牌,我就可以控制注册表值。
难道就没有安全漏洞吗?

微软为何支持该功能?

Chr*_*cke 7

KnownDLL 唯一做的就是防止从应用程序文件夹中加载隐式加载的 DLL。

出于安全原因,“KnownDll”唯一有效的文件夹是 c:\Windows\System32(或本地化的等效文件夹),并且此文件夹在搜索列表中位于进程文件夹之后的第二个文件夹。

从本质上讲,它可以防止从应用程序文件夹加载系统 dll 的恶意副本(例如 kernel32.dll)。

它不会阻止应用程序使用完全限定路径加载 dll。它不会停止对路径的长时间搜索或在路径中发现系统 dll - 无论如何,总是在这些位置之前搜索 system32。


Row*_*haw 4

这允许忽略正常的 DLL 搜索路径,并加载指定的版本。

虽然这本身不是一个安全漏洞(因为您已经需要拥有管理员权限才能更改该值),但可以通过恶意 DLL 重定向调用。

这是为了提高性能而添加的功能,因为无需扫描多个可能较大的目录来查找 DLL。