AppInit DLL 和安全启动
从 Windows 8 开始,启用安全启动时禁用AppInit_DLLs基础结构。
关于AppInit_DLLs
AppInit_DLLs基础结构通过允许将自定义 DLL 加载到每个交互式应用程序的地址空间,从而轻松挂钩系统 API。 应用程序和恶意软件都出于相同的基本原因使用 AppInit DLL,即挂钩 API;加载自定义 DLL 后,它可以挂钩已知的系统 API 并实现备用功能。 只有一小部分新式合法应用程序使用此机制来加载 DLL,而一组大型恶意软件使用此机制来入侵系统。 即使是合法的AppInit_DLLs也无意中会导致系统死锁和性能问题,因此不建议使用AppInit_DLLs。
AppInit_DLLs和安全启动
Windows 8 采用 UEFI 和安全启动来改进整个系统完整性,并提供针对复杂威胁的强防护。 启用安全启动后,AppInit_DLLs机制被禁用,这是保护客户免受恶意软件和威胁的一部分。
请注意,安全启动是 UEFI 协议,而不是 Windows 8 功能。 有关 UEFI 和安全启动协议规范的详细信息,请参阅 https://www.uefi.org。
Windows 8 桌面应用的AppInit_DLLs认证要求
Windows 8 桌面应用的认证要求之一是,应用不得加载任意 DLL 以使用 AppInit_DLLs 机制截获 Win32 API 调用。 有关认证要求的详细信息,请参阅 Windows 8 桌面应用 认证要求的第 1.1 部分。
总结
- 对于合法应用程序,不建议使用AppInit_DLLs机制,因为它可能会导致系统死锁和性能问题。
- 启用安全启动时,默认禁用AppInit_DLLs机制。
- 在 Windows 8 桌面应用中使用AppInit_DLLs是 Windows 桌面应用认证失败。
若要下载包含 Windows 7 和 Windows Server 2008 R2 上AppInit_DLLs信息的白皮书,请访问 Windows 硬件开发人员中心存档,并在 Windows 7 和 Windows Server 2008 R2 中搜索AppInit DLL。