补丁驱动程序加载过程

逆向工程 视窗 内核模式 修补 司机 操作系统
2021-06-20 17:37:04

介绍

由于Windows Vista和更高版本,非引导内核模式驱动程序是通过验证颁发给目录文件和与目录关联的每个文件的证书来安装的:.inf、.sys 和 .dll 依赖项。

这是通过检查证书链是否有效来完成的,这意味着根CA必须在本地受信任的根CA 下,并且叶证书(而不是根CA)必须在受信任的发布者下,因此安装不会不提示询问用户是否信任发布者。

但是,安装完成后,驱动程序无法加载到内核中。我想 winload 通过查看它自己受信任的根CA存储来验证驱动程序的证书,因此唯一受支持的CA在此列表中:


问题

有没有办法修补winload以插入新的根CA,以便在加载我们的驱动程序时正确验证证书?

我知道修改winload会破坏它的数字签名,所以我们可以使用我们新的 Root CA的私钥重新签名,理论上可以完成这项工作。

1个回答

是的,您需要修补ci.dll(其中包含硬编码的根 CA 列表)和winload.exe(验证 的完整性ci.dll)。

您可以在http://www.programdevelop.com/4608016/ 中找到相关讨论