如何彻底自签名或移除已吊销证书签名的驱动程序?
彻底移除驱动签名及重新签名方案
一、彻底移除驱动签名
1. 确认签名是否完全移除
先执行以下命令验证.sys和.cat文件的签名状态:
signtool verify /v /a hackdriver.sys signtool verify /v /a hackdriver.cat
如果输出中仍显示签名信息,说明之前的signtool remove命令未完全生效——部分驱动可能存在多重签名,或者.cat文件的签名未被处理。此时需对两个文件都执行移除命令:
signtool remove /s /v hackdriver.sys signtool remove /s /v hackdriver.cat
2. 手动清除PE文件签名数据
若signtool无法彻底移除签名,可直接修改驱动的PE结构(.sys属于PE格式文件):
- 用
dumpbin查看证书表位置:
在输出中找到dumpbin /headers hackdriver.sysCertificate Table的Virtual Address和Size值。 - 用十六进制编辑器(如HxD)打开
.sys文件,定位到上述虚拟地址对应的偏移,将对应大小的字节全部填充为0后保存。
注意:修改PE结构可能导致驱动功能异常,操作前务必备份原文件。
3. 绕过系统签名校验(解决安装后仍提示不良签名的问题)
即使移除了签名,Windows默认的驱动签名校验仍会拦截未签名驱动,需临时或永久关闭校验:
- 临时测试模式:
重启系统后,右下角会显示"测试模式"水印,此时允许安装未签名驱动。bcdedit /set testsigning on - 永久关闭(Windows 10及以下):
Windows 11需通过组策略修改:打开组策略编辑器,进入bcdedit /set nointegritychecks on计算机配置>管理模板>系统>驱动程序安装>代码签名,将选项设置为"忽略"。
二、重新签名驱动的步骤
若更倾向于重新签名而非移除,可按以下流程操作:
1. 创建自签名根证书
用Windows Kit中的工具生成自签名证书:
makecert -r -pe -n "CN=My Test CA" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv MyTestCA.pvk MyTestCA.cer
将证书导入系统信任的根证书库:
certutil -addstore -f "Root" MyTestCA.cer
2. 签名驱动文件
分别签名.sys和.cat文件(替换[你的证书密码]为创建证书时设置的密码):
signtool sign /v /f MyTestCA.pvk /p [你的证书密码] /t http://timestamp.digicert.com hackdriver.sys signtool sign /v /f MyTestCA.pvk /p [你的证书密码] /t http://timestamp.digicert.com hackdriver.cat
安装驱动时,系统会提示证书未被验证,选择信任该证书即可完成安装。
内容的提问来源于stack exchange,提问作者Ivan P.
相关产品推荐
相关产品推荐

