找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 586|回复: 35

[转贴] 【转】windows永久禁用驱动强制签名

  [复制链接]
发表于 6 小时前 | 显示全部楼层 |阅读模式
本帖最后由 2011masm 于 2026-6-9 17:00 编辑

windows10永久禁用驱动强制签名windows驱动签名非常麻烦,特别是中国用户,必须是公司才能被windows打上签名,而且要弄一个测试平台,非常繁琐,个人基本就是无望获得微软签名. 那么我们个人开发的驱动就很不方便使用了,虽然可以把系统设置为测试模式就能加载无签名驱动,但看着桌面上的几行测试模式字符串就很不舒服了,而且还各种受限,比如开发一个驱动,要读取某一进程的内存,都会被针对,说不能在测试模式下运行, 目前网上并没有很好的办法解决Windows10永久禁用驱动强制签名,设置启动选项在启动windows系统时选择禁用强制签名,这种方法只针对一次系统启动,不能永久使用,经过本人一番研究,发现还有一种办法能永久禁用驱动强制签名,可以加载无签名驱动,这个办法就是静态patch内核文件.废话不多说,直接上过程.

一 准备
在system32文件夹下找到ntoskrnl.exe, winload.exe, winload.efi三个文件并拷贝到一个空目录,用于临时修改,下面每个文件都要找一个函数进行修改,找函数不难,丢到ida里直接就能找到了.
二 ntoskrnl.exe修改
找到内核文件中函数SepInitializeCodeIntegrity,这个函数就是去初始化代码签名模块ci.dll的,因此我们来分析下这个函数的流程.


函数开始做签名功能准备,最后调用ci.dll的导出函数CiInitialize完成签名系统得初始化,
从这里可以看出函数CiInitialize有4个参数: 第1个参数放ecx里,是个dword的参数,其他几个参数是回调函数和初始化相关的环境块.
我们关心的是第1个32位的参数,这个参数就是用来指示怎么初始化签名模块的功能标识,在调用CiInitialize之前,我们如果能把ecx值变0,那么初始化的签名系统就不会对驱动进行签名验证了,经过实际测试,这方案是可行的,那么我们就把目标放到了
call cs:__imp_CiInitiali
的前一条指令
8B CF mov ecx, edi
这条指令占用2个字节,正好可以用一条2字节对ecx置0的指令xor代替
31 C9 xor ecx, ecx
所以,patch内核文件只需要把2个字节从8b cf修改为 31 c9即可.

三 winload.exe修改
找到函数OslInitializeCodeIntegrity头部改成如下2条代码,在引导阶段对内核签名校验直接返回1
b0 01 mov al,1
c3 retn
winload.efi修改
找到ImgpValidateImageHash函数开始位置,同样修改成2条指令,返回0,校验正常.
33 C0 xor eax, eax
C3 retn
五 修正文件校验和
以上3个文件修改后,文件校验和还需要修正,下载一个PPEE1.1.2工具,把3个文件都用这个工具打开


校验和错误,那么会显示红色,直接双击照着提示更正的结果修改,然后点保存.,文件校验和一定要修改,windows内核文件加载时都会检查这个校验和,不正确就无法加载了, 到这里文件的修改就完成了.
六 执行禁用强制签名参数
在命令行执行
bcdedit.exe /set nointegritychecks on
禁用强制签名,但经过实际测试,这条命令在windows10中并不起作用,设置了照样不能加载无签名驱动,但是要加载修改后的内核,却需要执行这条命令,如果不设置这条命令,引导修改的内核会无法加载.

七 文件替换
修改完成后,把这3个文件替换到system32下,另外winload.exe和winload.efi还要替换到system32\boot下,这里也有2个同样的文件,因为对system32下的文件权限不够,不设置权限是替换不了的,有2种方式可以替换system32下的文件,一是对要替换的文件设置所属用户为administrator,然后修改administrator对替换文件的修改权限,二是用启动pe系统直接拷贝.
为了保险起见,替换之前需要备份好原来的文件,以便失败后,可以通过pe把原来的文件恢复回去.
本人是在windows10 1809和windows2019 1809这个版本通过上述操作禁用强制签名成功.其他版本,特别是比这更老的版本多半也是可以成功.
八 后记
当我们patch后的系统运行起来后,应该加载自己的无签名驱动就没有问题了,但是,可能会想加载我自己的驱动后,不想再加载其他别人的无签名驱动了,或者被正对了,说不能在禁用驱动强制签名的状态运行某一程序或游戏,那么,我们就要在自己的驱动里面恢复内核patch的现场,2个现场需要恢复,
1个就是签名系统重新给他初始化,这个时候,我们自己调用CiInitialize,参数ecx就给6,这是我测试时发现系统正常启动下ecx的参数,所以我们自己调用就给6,其他3个参数怎么办,其他3个参数看SepInitializeCodeIntegrity就知道都是死的,2个回调函数,1个全局变量环境块.
2恢复patch的位置为原来内核的字节即可,恶意软件就没办法检测内核打过补丁了.



[color=var(--GBL05A)]发布于 2024-05-03 02:50・辽宁

发表于 6 小时前 | 显示全部楼层
有改好的文件吗? 我记得不需要修改文件,有个现成的开源工具。。但是会蓝屏。

点评

那个开源工具好象是UPGDSED  详情 回复 发表于 6 小时前
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
这个软件可以。
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
这么费事?我以为只要修改下注册表就行了。
回复

使用道具 举报

发表于 6 小时前 来自手机 | 显示全部楼层
还是有点复杂,能不能直接用winhex来修改?win10,哪一版的win10?那win7呢?

点评

Win7的只需修改注册表即可  详情 回复 发表于 6 小时前
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
支持一个,巨硬搞的数字签名确实非常头疼。如果没有巨硬认证的签名,哪怕个人加上伪造的签名,很多杀毒软件也会报毒。
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
发布于 2024-05-03 02:50・辽宁  老瓶装旧酒
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
学习一下!
回复

使用道具 举报

 楼主| 发表于 6 小时前 | 显示全部楼层
hycsl888 发表于 2026-6-9 16:51
有改好的文件吗? 我记得不需要修改文件,有个现成的开源工具。。但是会蓝屏。 ...

那个开源工具好象是UPGDSED
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
这个会失效的吧,能不能通吃?
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
窄口牛 发表于 2026-6-9 16:58
还是有点复杂,能不能直接用winhex来修改?win10,哪一版的win10?那win7呢?

Win7的只需修改注册表即可

点评

哦,我捡了个英伟达的新版驱动(改了签名的文件),来搞我的显卡,结果蓝屏起不来,禁用签名也起不来。gt710,目前还是用的旧版驱动。  详情 回复 发表于 6 小时前
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
能不能修改个高版本对下兼容
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
路过顶一下
回复

使用道具 举报

发表于 6 小时前 来自手机 | 显示全部楼层
wu733 发表于 2026-6-9 17:23
Win7的只需修改注册表即可

哦,我捡了个英伟达的新版驱动(改了签名的文件),来搞我的显卡,结果蓝屏起不来,禁用签名也起不来。gt710,目前还是用的旧版驱动。

点评

网上有泄露的数字签名,你改了以后签名就掉了。用泄露的在签一下就可以用了。 但是数字签名不好找。自己慢慢搜,俄罗斯论坛有泄露的英伟达数字签名,用那个签更好。。  详情 回复 发表于 6 小时前
我今天在单位,等休假后我再帮你一起研究研究  详情 回复 发表于 6 小时前
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
窄口牛 发表于 2026-6-9 17:28
哦,我捡了个英伟达的新版驱动(改了签名的文件),来搞我的显卡,结果蓝屏起不来,禁用签名也起不来。gt71 ...

我今天在单位,等休假后我再帮你一起研究研究
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
窄口牛 发表于 2026-6-9 17:28
哦,我捡了个英伟达的新版驱动(改了签名的文件),来搞我的显卡,结果蓝屏起不来,禁用签名也起不来。gt71 ...

网上有泄露的数字签名,你改了以后签名就掉了。用泄露的在签一下就可以用了。 但是数字签名不好找。自己慢慢搜,俄罗斯论坛有泄露的英伟达数字签名,用那个签更好。。

点评

我没改,就下载的俄罗斯的现成的dll。github上,那个人的。  详情 回复 发表于 6 小时前
俄罗斯论坛...你是懂俄语的,要不你帮忙弄个泄露版数字签名  详情 回复 发表于 6 小时前
回复

使用道具 举报

发表于 6 小时前 | 显示全部楼层
hycsl888 发表于 2026-6-9 17:31
网上有泄露的数字签名,你改了以后签名就掉了。用泄露的在签一下就可以用了。 但是数字签名不好找。自己 ...

俄罗斯论坛...你是懂俄语的,要不你帮忙弄个泄露版数字签名
回复

使用道具 举报

发表于 6 小时前 来自手机 | 显示全部楼层
hycsl888 发表于 2026-6-9 17:31
网上有泄露的数字签名,你改了以后签名就掉了。用泄露的在签一下就可以用了。 但是数字签名不好找。自己 ...

我没改,就下载的俄罗斯的现成的dll。github上,那个人的。
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
谢谢楼主,学习了。
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
支持win11吗 如果能禁用签名是不是就可以解决26h1 ramos启动问题了
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
支持支持
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
六 执行禁用强制签名参数
在命令行执行
bcdedit.exe /set nointegritychecks on
禁用强制签名,但经过实际测试,这条命令在windows10中并不起作用,设置了照样不能加载无签名驱动,但是要加载修改后的内核,却需要执行这条命令,如果不设置这条命令,引导修改的内核会无法加载.

-------------------------
这一条说的怎么有点矛盾。
另外开启了安全启动模式的情况下,可行么

点评

不矛盾啊,因为这条命令要是有用的话,就不用如此大费周章的改内核文件了 但既然改了内核,又必须加上这条命令  详情 回复 发表于 4 小时前
回复

使用道具 举报

 楼主| 发表于 4 小时前 | 显示全部楼层
红毛樱木 发表于 2026-6-9 19:19
六 执行禁用强制签名参数
在命令行执行
bcdedit.exe /set nointegritychecks on

不矛盾啊,因为这条命令要是有用的话,就不用如此大费周章的改内核文件了
但既然改了内核,又必须加上这条命令

点评

那很牛X了,这样用于PE制作,能省很多事。  详情 回复 发表于 3 小时前
回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
  1. 📌 一句话核心

  2. 该网页通过静态 Patch 修改 Windows 10 核心系统文件(ntoskrnl.exe 等)并调整引导配置,实现永久禁用驱动强制签名的技术方案,主要面向需要加载无签名驱动的开发者或高级用户,旨在解决个人开发者无法获取微软签名及“测试模式”受限的痛点。


  3. 🔑 核心要点(3-6 条)

  4. 核心原理:静态 Patch 内核文件
  5. 不同于临时禁用,该方法通过修改 ntoskrnl.exe、winload.exe 及 winload.efi 三个系统文件,直接移除内核代码完整性(CI)的初始化逻辑,从而在底层绕过签名验证。

  6. 具体 Patch 位置与操作

  7. ntoskrnl.exe:定位 SepInitializeCodeIntegrity 函数中调用 CiInitialize 前的 mov ecx, edi 指令,将其替换为 xor ecx, ecx(将参数置 0),使签名模块初始化时不执行验证。
  8. winload.exe:定位 OslInitializeCodeIntegrity 头部,修改为 mov al, 1; retn,在引导阶段直接返回成功。
  9. winload.efi:定位 ImgpValidateImageHash 函数头部,修改为 xor eax, eax; retn,跳过哈希校验。


  10. 关键配置:必须执行特定 BCD 命令
  11. 即使文件已修改,仍需在命令行执行 bcdedit.exe /set nointegritychecks on。原文强调该命令在 Win10 中虽无效于常规禁用,但却是加载修改后内核的必要条件,否则系统无法引导。

  12. 前置准备与文件替换
  13. 修改前需备份原文件;修改后需使用 PPEE 工具修正文件校验和(CheckSum),否则无法加载;替换文件时需解决 system32 目录权限问题(需获取 Administrator 权限或使用 PE 系统)。

  14. 进阶技巧:驱动内恢复现场
  15. 若需防止其他程序检测内核补丁或恢复系统签名保护,可在自定义驱动中主动调用 CiInitialize(参数 ecx=6)并还原 Patch 处的原始指令字节。

  16. 适用范围与局限性
  17. 作者实测在 Windows 10 1809 和 Windows Server 2019 1809 版本成功;Win7 用户只需修改注册表即可;新版驱动可能因签名泄露或格式变化导致此方法失效(评论区反馈)。



  18. 🧠 深度评价



  19. 评价维度
  20. 结论
  21. 依据(一句话)



  22. 实用性
  23. 高(针对特定群体)
  24. 提供了绕过微软签名限制的具体二进制修改指令,解决了个人开发者加载无签名驱动的刚需。


  25. 可信度
  26. 中等(技术可行但风险高)
  27. 基于逆向工程原理,逻辑自洽,但涉及修改核心系统文件,极易导致系统不稳定或安全漏洞。


  28. 新颖性
  29. 低(老技术新用)
  30. 静态 Patch 内核是较早期的技术手段,评论区用户也指出这是“老瓶装旧酒”,存在更简单的注册表方法(如 Win7)。


  31. 完整性
  32. 中等(步骤清晰但依赖版本)
  33. 步骤详尽,但明确说明仅适用于特定版本(1809),且未提供通用的自动化工具,手动操作门槛高。



  34. 💡 延伸洞察

  35. 核心受众与价值

  36. 受众:Windows 底层驱动开发者、硬件逆向工程师、安全研究人员。
  37. 价值:为无法获取微软 EV 签名证书的个人开发者提供了一条“硬核”路径,使其能够在生产环境(非测试模式)下调试和加载自定义驱动。


  38. 值得质疑的假设与风险

  39. 系统更新风险:Windows Update 可能会自动还原 system32 下的核心文件,导致 Patch 失效甚至引导失败。
  40. 安全软件拦截:现代杀毒软件(如 Defender)通常会检测 ntoskrnl.exe 的完整性,这种修改极易被标记为恶意行为或导致蓝屏(BSOD)。
  41. 版本兼容性:作者仅验证了 1809 版本,对于 Win10/Win11 的新版本(如 21H2, 22H2, 11),内核函数地址和指令结构可能已发生变化,直接照搬可能导致系统崩溃。


  42. 最有价值的下一步行动

  43. 备份与验证:若需尝试,务必先制作系统还原点或使用 PE 备份原文件。
  44. 寻找替代方案:对于 Win10/11,建议先尝试微软官方支持的“测试模式”(bcdedit /set testsigning on)或检查是否有更新的自动化开源工具(如评论区提到的 UPGDSED 等,尽管存在蓝屏风险)。
  45. 关注自动化:手动修改二进制文件极易出错,寻找或编写能够自动识别当前系统版本并生成 Patch 脚本的工具是更优解。



复制代码
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
安全吗?

点评

改了内核,不太安全  详情 回复 发表于 3 小时前
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
还是太费事了
回复

使用道具 举报

 楼主| 发表于 3 小时前 | 显示全部楼层

改了内核,不太安全
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
2011masm 发表于 2026-6-9 19:32
不矛盾啊,因为这条命令要是有用的话,就不用如此大费周章的改内核文件了
但既然改了内核,又必须加上这 ...

那很牛X了,这样用于PE制作,能省很多事。
回复

使用道具 举报

发表于 3 小时前 来自手机 | 显示全部楼层
感谢分享辛苦了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-6-9 23:44

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表