windows10永久禁用驱动强制签名

news/2024/11/25 18:50:19/

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的位置为原来内核的字节即可,恶意软件就没办法检测内核打过补丁了.


http://www.ppmy.cn/news/713291.html

相关文章

禁用驱动程序强制签名(终极办法)

1.管理员运行cmd执行命令:bcdedit.exe /set nointegritychecks on 如果遇到“设置元素数据时出错。 该值受安全引导策略保..." 关闭bios中安全启动,进入BIOS中,把“secure boot”设为“disable” 以后想打开强制签名执行命令&#xff…

禁用Win10系统驱动程序强制签名的方法

在Windows10系统中,未经签名的驱动程序是不能使用的,因此会导致某些硬件不能使用,如果需要使用此硬件,就必须关闭Windows10系统的默认驱动验证,即禁用驱动程序强制签名。 右键点击系统桌面左下角的【开始】&#xff0…

Win10系统如何禁用驱动程序强制签名

Win10系统如何禁用驱动程序强制签名 win10系统在安装三方驱动的时候安装不成功,需要禁用驱动程序强制签名 禁用方法如下: 1、点击开始菜单,选择设置按钮,进入Windows设置。选择【更新和安全】。 2、然后找到【恢复】菜单&…

Windows 11禁用驱动程序强制签名的方法

最近想重写7年前写的一个Windows驱动,以往踩过的坑都需要再踩一遍,因此写个备忘录。 在Window 11 64位系统上使用pnputil安装驱动程序,结果提示 "无法添加驱动程序包: 第三方INF 不包含数字签名",预期的弹出警告对话框…

Win10/Win11 禁用驱动程序强制签名

方法一:(临时性的) 设置 --> 更新和安全 --> 恢复 --> 立即重新启动 --> 启动设置,按数字键7 方法二:(永久性): 管理员运行cmd执行命令: 1、关闭强制签名: bcdedit.exe /set nointegrityc…

Win11如何禁用驱动程序强制签名?驱动程序强制签名怎么关闭?

Win11电脑的硬件只有安装了驱动才能正常使用,而有时候用户会发现下载来的驱动程序无法安装,因为没有数字签名,这是系统为了安全而阻挡了没有经过认证的驱动安装,若是一定要安装,那么显然只有暂时关闭数字签名才能正常安…

win 10 强制禁用驱动程序签名

文章目录 方法1,通过组策略禁用(未验证)1、首先按下键盘“WinR”打开运行。2、接着在其中输入“gpedit.msc”回车打开组策略。3、然后进入计算机配置下“用户配置”中的“管理模板”4、再打开“系统”下的“驱动程序安装”5、进入后&#xff…

Windoww 如何禁止驱动程序签名强制

在平常时我们安装电脑驱动时,如果驱动程序是没有经过微软签名认证的话,正常情况下是无法成功安装驱动程序的,此时我们就需要设置电脑的禁止驱动程序签名强制。我们都知道启动时会有个高级启动项,通过进入高级启动项可以禁止驱动程…