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