无忧启动论坛

标题: win11下如何永久禁用驱动强制签名(替换回原版镜像中的文件后正常了) [打印本页]

作者: fangyzhai    时间: 2022-11-23 00:18
标题: win11下如何永久禁用驱动强制签名(替换回原版镜像中的文件后正常了)
本帖最后由 fangyzhai 于 2022-11-23 01:57 编辑

老台式机,最近升级了win11 22h2 (22621.819),之前在win11 22h2 (22621.521)系统下还正常的板载声卡无法驱动。具体表现:
“设备管理器/系统设备”里出现两个“High Definition Audio控制器”,并且都提示“Windows 无法验证此设备所需的驱动程序的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。 (代码 52)”。

从“高级启动”里禁用驱动强制签名后,声卡驱动正常、声音正常。但是这个禁用是一次性的,重启电脑电脑以后,问题又回来了。

用网上搜到的方法(在本论坛也搜过了),都不管用。

方法一:组策略禁用。组策略里,不管是把“代码签名”设为“已启用-忽略”还是设为“已禁用”,都无效。

方法二:运行命令
bcdedit /set nointegritychecks on
BCDEDIT -SET TESTSIGNING on
BCDEDIT -SET LOADOPTIONS DISABLE_INTEGRITY_CHECKS
无效。

方法三:bootice里勾选“禁用数字签名”和“测试模式”,也无效(实际在方法二用过以后,这两项已经是勾选状态)。

查看“High Definition Audio控制器”的驱动文件,发现文件hdaudbus.sys显示“未经数字签名”,其它两个文件都有Microsoft windows的签名。一键还原到win11 22h2 (22621.521)系统,查看hdaudbus.sys文件,显示有Microsoft windows的签名,复制这个有签名的文件到新系统替换掉显示未经签名的文件,重启以后还是显示未经签名。又从另一台笔记本上复制有签名的这个文件到台式机,重启后仍然是未经签名。

又想办法下载了声卡的新老驱动(主板官网没有新驱动,驱动精灵和360驱动大师检测驱动正常,不提供新驱动下载),安装后问题仍然未解决。

折腾了一天,只好来求助,哪位大神能提供win11下有效的永久禁用驱动强制签名的方法?非常感谢。






4.png (27.31 KB, 下载次数: 167)

4.png

3.png (75.16 KB, 下载次数: 161)

3.png

2.png (39.95 KB, 下载次数: 156)

2.png

1.png (20.37 KB, 下载次数: 161)

1.png

作者: hua_wuxin    时间: 2022-11-23 00:42
1、没有这样的方法
2、22621.819对应的这个sys版本是.608,.4是不对的。你换成对的看看:https://wwt.lanzoub.com/iFovb0gmy5cf

作者: fangyzhai    时间: 2022-11-23 01:43
本帖最后由 fangyzhai 于 2022-11-23 01:55 编辑
hua_wuxin 发表于 2022-11-23 00:42
1、没有这样的方法
2、22621.819对应的这个sys版本是.608,.4是不对的。你换成对的看看:https://wwt.lanz ...

非常感谢,刚换回原版的sys文件以后终于好了,上论坛才发现您已经给传了一个正确的文件。再次感谢。

我的系统是全新安装的,可能是在装驱动的过程中sys文件被改写了,变成“未经签名”。我以为新系统的sys文件就是windows原版的,既然原版的有问题,就一直想着从之前的老系统里复制一个(不懂不同的版本sys文件不能通用)。刚才发完贴,忽然想到再从原版windows镜像里提取hdaudbus.sys文件试试,没想到竟然真的可以,所以赶紧到论坛来回复。

之前替换了老版本的sys文件,只是提示未经签名,禁用驱动文件强制签名后声卡也能正常驱动,所以就没想到是文件版本的问题(主要是也不懂),就一直在找永久禁用驱动强制签名的方法。

图中左边是提示“未经签名”的文件,右边是刚从原版镜像中提取的文件,两个文件大小、版本等信息都一样,但是看到修改时间不同,我才明白过来在安装系统或驱动的过程,sys文件被修改了,才变成了“未经签名”。

5.png (37.77 KB, 下载次数: 150)

5.png

作者: 481416322    时间: 2022-11-23 02:36
看来巨硬才是最硬的,和它碰就是鸡蛋碰石头
作者: szwp    时间: 2022-11-23 06:47
希望楼主早日找到永久禁用的方法
作者: 1825208    时间: 2022-11-23 08:21
微软很多地方真的霸道,不给人选择的方法
作者: ylac    时间: 2022-11-23 08:29
来看看怎么换
作者: 2012andyle113    时间: 2022-11-23 08:32
没碰到过,现在版本要求这么变态了吗
作者: fangyzhai    时间: 2022-11-23 10:49
szwp 发表于 2022-11-23 06:47
希望楼主早日找到永久禁用的方法

我是找不到了,按二楼hua_wuxin兄说是没有这样的方法。
作者: fangyzhai    时间: 2022-11-23 10:54
ylac 发表于 2022-11-23 08:29
来看看怎么换

打开下载的win11的ISO镜像文件,用DWIM_GUI等wim镜像工具挂载install.wim文件,找到需要的文件,复制到系统盘相应的目录下,替换掉原文件。
作者: szwp    时间: 2022-11-23 11:08
fangyzhai 发表于 2022-11-23 10:49
我是找不到了,按二楼hua_wuxin兄说是没有这样的方法。

不急,等楼主解决了再分享。
作者: gailium    时间: 2022-11-23 12:19
使用ida修改这三个文件:
bootmgr.efi/bootx64.efi(exe): ImgpValidateImageHash 头部3字节 33 C0 C3
windows.efi(exe) : ImgpValidateImageHash 头部3字节 33 C0 C3
OslInitiallizeCodeIntegrity 头部3字节 B0 01 C3
ntoskrnl.exe :
SeValidateImageData 查找反汇编 mov eax, 0C0000428h 改成 mov eax,0
CcInitializeBcbProfiler 头部3字节 B0 01 C3
KeInitAmd64SpecificState 头部3字节 33 C0 C3
ExpLicenseWatchInitWorker 头部3字节 33 C0 C3
SepInitializeCodeIntegrity 查找反汇编 mov ecx,edi 改成 xor ecx,ecx


作者: fangyzhai    时间: 2022-11-23 12:46
gailium 发表于 2022-11-23 12:19
使用ida修改这三个文件:
bootmgr.efi/bootx64.efi(exe): ImgpValidateImageHash 头部3字节 33 C0 C3
w ...

不折腾了,先收藏,有机会再试。感谢感谢
作者: 家驹    时间: 2022-11-23 12:57
谢谢分享
作者: 2011na    时间: 2023-2-28 08:37
fangyzhai 发表于 2022-11-23 01:43
非常感谢,刚换回原版的sys文件以后终于好了,上论坛才发现您已经给传了一个正确的文件。再次感谢。

...

这种坑谁能想到
作者: hj_18    时间: 2023-4-29 06:06
试试efiguard,虽然我还没来得及尝试
作者: liuzhaoyzz    时间: 2023-4-29 08:02
gailium 发表于 2022-11-23 12:19
使用ida修改这三个文件:
bootmgr.efi/bootx64.efi(exe): ImgpValidateImageHash 头部3字节 33 C0 C3
w ...

高手啊!能否写个通用的patch?类似注册机这种?
作者: gailium    时间: 2023-4-29 15:05
liuzhaoyzz 发表于 2023-4-29 08:02
高手啊!能否写个通用的patch?类似注册机这种?

老版本有upgdsed,停更了,1809之后他字节改了,懒得去更新这个patch了
作者: wintoflash    时间: 2023-4-29 15:17
liuzhaoyzz 发表于 2023-4-29 08:02
高手啊!能否写个通用的patch?类似注册机这种?

github上搜 efiguard
作者: kcefly    时间: 2023-4-29 15:29
谢谢分享
作者: 新手菜鸟    时间: 2023-4-29 16:55
感谢分享
作者: kcefly    时间: 2023-4-29 16:56
谢谢分享
作者: liuzhaoyzz    时间: 2023-4-29 17:21
Mattiwatti/EfiGuard: Disable PatchGuard and DSE at boot time
https://github.com/Mattiwatti/EfiGuard
概述
EfiGuard 是一个便携式 x64 UEFI bootkit,它在启动时修补 Windows 启动管理器、启动加载程序和内核,以禁用 PatchGuard 和驱动程序签名强制 (DSE)。

特征
目前支持从 Vista SP1 到 Windows 11 的所有 EFI 兼容版本的 Windows x64。

易于使用:可以通过自动查找和启动 Windows 的加载程序从 U 盘或 Windows EFI 分区启动。也可以使用 UEFI shell 或加载程序手动加载和配置驱动程序。

广泛使用Zydis反汇编程序库进行快速运行时指令解码,以支持比签名匹配更强大的分析,而签名匹配通常需要随着新的操作系统更新进行更改。

被动工作:驱动程序不加载或启动 Windows 启动管理器。bootmgfw.efi相反,它由固件引导管理器通过引导选择菜单或 EFI 应用程序(如加载程序)加载。如果启动非 Windows 操作系统,驱动程序将自动卸载。

bootmgfw.efi支持何时开始bootmgr.efi而不是 .的四阶段修补winload.efi。当加载 WIM 文件以启动 WinPE、Windows 安装程序或 Windows 恢复模式时就是这种情况。

Graceful recovery:补丁失败时,驱动会显示错误信息并提示继续开机或按ESC键重启。即使在最后的内核补丁阶段也是如此,因为最后一个补丁阶段发生在ExitBootServices调用之前。许多 UEFI Windows bootkits 挂钩OslArchTransferToKernel,虽然很容易通过模式匹配找到,但它是一个在 . 之后以保护模式执行的函数ExitBootServices。这意味着没有可用的启动服务来告诉用户出了什么问题。 蓝屏

带有错误信息的模拟补丁失败

可调试:可以在内核修补阶段将消息输出到内核调试器和屏幕(尽管已缓冲),并在引导管理器和引导加载程序修补阶段输出到串行端口或未缓冲到屏幕。如果驱动程序是使用 PDB 调试信息编译的,则可以在 HAL 初始化后的任何时候加载调试符号,方法是指定虚拟 DXE 驱动程序基并像调试常规 NT 驱动程序一样对其进行调试。

DSE 绕过:可作为直接的UPGDSED样式 DSE 在启动时禁用或作为 EFI 运行时服务上的挂钩SetVariable()。后者充当任意内核模式读/写后门,可以从 Windows 使用调用NtSetSystemEnvironmentValueEx并允许将g_CiEnabled/设置g_CiOptions为所需的值。提供了一个名为 DSEFix 的小型应用程序EfiDSEFix.exe,可用于执行此操作。也可以启用 DSE 并仅禁用 PatchGuard。默认情况下,加载程序将使用SetVariable挂钩方法,因为一些反作弊和防病毒程序通常不理解作弊或恶意软件与自签名驱动程序之间的区别,并且以 UPGDSED 修复为目标。

ImgpValidateImageHash通过在每个阶段打补丁以及 ,支持磁盘上修改的内核和引导加载程序ImgpFilterValidationFailure,这可能会默默地将某些类别的违规行为排除在 TPM 或 SI 日志文件中。

允许安全启动与 Windows 7 一起工作(不是开玩笑!)。Windows 7 本身不支持安全启动,因为它不支持它,或者(官方)甚至在没有 CSM 的情况下启动。这对于想要在需要 WHQL 安全启动的锁定设备上使用 Windows 7 的人很有用。有关如何使其在此处工作的 Wiki 条目。 win7_secureboot

Windows 7 上启用安全启动的WinObjEx64

问题和限制
由于 HVCI 在更高的特权级别运行,EfiGuard 无法禁用 Hypervisor 强制代码完整性(HVCI 或 HyperGuard)。EfiGuard可以与 HVCI 共存,甚至可以在普通内核中成功禁用 PatchGuard,但这在实践中没有用,因为 HVCI 会捕获 PatchGuard 之前所做的事情。两种类型的 DSE 绕过都被 HVCI 变得无用:启动时间补丁没有效果,因为内核遵从安全内核进行完整性检查,如果 hook用于写入 .hookSetVariable将导致错误检查。SECURE_KERNEL_ERRORg_CiOptions
由于禁用优化和添加断言导致 PatchGuard 和 DSE 初始化代码不同,以及检查内核中 PatchGuard 的其他更改,因此不支持检查内核。这应该不是问题,因为如果没有附加内核调试器,检查内核通常不会有用,这会禁用 PatchGuard。
如何使用
有两种使用 EfiGuard 的方法:引导加载程序(最简单),或使用 UEFI shell 加载驱动程序。在这两种情况下,都可以将 EfiGuard 安装在辅助引导介质(例如 U 盘)或 EFI 系统分区上。使用 EFI 分区的优点是不需要第二张启动盘,但这种方法设置起来比较复杂。建议首先尝试以下方法之一,如果您想在 EFI 分区上安装 EfiGuard,请阅读问题 #2中的说明。

引导加载程序
下载或编译 EfiGuard,转到EFI/Boot并将其中一个Loader.efi或重命名Loader.config.efi为bootx64.efi. 两者是相同的,除了在Loader.efi没有用户交互的情况下启动而Loader.config.efi会提示您配置驱动程序使用的 DSE 补丁方法(如果您想更改它)。
将文件放在引导驱动器上,例如 USB 记忆棒(对于物理机)或 ISO/虚拟磁盘(对于 VM)。路径应该是/EFI/Boot/{bootx64|EfiGuardDxe}.efi. 建议使用 FAT32 格式的 U 盘。
从新驱动器引导机器而不是引导 Windows。大多数固件都提供启动菜单来执行此操作(可通过 F10/F11/F12 访问)。否则,您需要将 BIOS 配置为从新驱动器启动。
如果您使用的是默认加载程序,Windows 现在应该启动,并且您应该在启动期间看到 EfiGuard 消息。如果您使用的是可配置加载程序,请回答配置提示,Windows 将启动。
如果您使用SetVariable挂钩(默认设置)启动,请EfiDSEFix.exe -d在启动后从命令提示符运行以禁用 DSE。运行EfiDSEFix.exe以查看完整的选项列表。
使用 UEFI shell 加载驱动程序
按照上面的步骤 1 和 2 进行操作,但不要将加载程序重命名为bootx64.efi. 相反,要么使用 BIOS 提供的 shell(如果有的话),要么下载EDK2 UEFI Shell并将其重命名为bootx64.efi.
将机器引导至 UEFI shell。
cd到/EFI/Boot正确的文件系统并运行load EfiGuardDxe.efi以加载驱动程序。
(可选)运行Loader.efi或Loader.config.efi从同一目录启动 Windows。您还可以继续在 shell 中工作,或者exit返回 BIOS/引导菜单并从那里引导。
启动后,如果适用,应用上述 DSE 修复程序。
汇编
编译 EfiGuardDxe 和加载器
EfiGuard 需要 EDK2 来构建。如果您没有安装 EDK2,请先按照EDK2 入门中的步骤进行操作,因为 EDK2 构建系统的设置相当复杂。本节假定您有一个环境变量指向workspace的目录WORKSPACE,并在workspace/edk2. 支持的编译器有 MSVC、Clang、GCC 和 ICC。

将 EfiGuard 存储库克隆到workspace/edk2/EfiGuardPkg.
打开为 EDK2 设置环境变量的提示符或 shell。
运行build -a X64 -t VS2019 -p EfiGuardPkg/EfiGuardPkg.dsc -b RELEASE,将您的工具链替换为 VS2019。
这将产生EfiGuardDxe.efi并Loader.efi在workspace/Build/EfiGuard/RELEASE_VS2019/X64. 要构建可交互配置的加载器,请附加-D CONFIGURE_DRIVER=1到构建命令。

编译 EfiDSEFix
EfiDSEFix 需要 Visual Studio 来构建。

打开EfiGuard.sln并构建解决方案。
输出二进制文件EfiDSEFix.exe将在Application/EfiDSEFix/bin.

Visual Studio 解决方案还包括可与 VisualUefi 一起使用的项目EfiGuardDxe.efi,但Loader.efi默认情况下不会构建这些项目,因为它们不会在没有附加代码的情况下进行链接,并且构建输出将比 EDK2 生成的输出差(大)。由于 VisualUefi 缺少 UefiBootManagerLib,因此根本不会链接。因此,这些项目文件仅用作开发辅助工具,EFI 文件仍应使用 EDK2 进行编译。要为此目的设置 VisualUefi,请将存储库克隆到并打开.Loader.efiworkspace/VisualUefiEfiGuard.sln

建筑学
建筑学 虽然 EfiGuard 是一个 UEFI bootkit,但它最初并不是一个。EfiGuard 最初是一个在 NT 上运行的磁盘修补程序(类似于UPGDSED),旨在测试基于反汇编程序的可行性,而不是使用 PDB 符号和特定于版本的签名。PatchNtoskrnl.c看起来仍然非常像这个原始设计。只有在这种方法被证明是成功的,并且在一年多的 Windows 更新中无需修改代码之后,UEFI 才作为一种进一步提高功能和易用性的方式出现。

Bootkit 方法提供的一些好处包括:

无需对内核或引导加载程序进行磁盘上的修改。
无需使用bcdedit.
不需要打补丁ImgpValidateImageHash(尽管这仍然是可选的)。
具有讽刺意味的是,使用 bootkit 允许启用安全启动,前提是您拥有平台密钥并且能够将您的个人证书添加到商店db。
EfiGuard 作为 bootkit 的最初化身是试图让 dude719 的UEFI-Bootkit与最新版本的 Windows 10 一起工作,因为它已经过时并且不再适用于最新版本(如 UPGDSED,通常由版本敏感模式引起扫描)。虽然我最终确实让它工作了,但我对结果并不满意,主要是因为选择了 hooking OslArchTransferToKernel,如上所述,它在保护模式下执行并在ExitBootServices被调用之后执行。除此之外,我并不满足于只能为某些版本的 Windows 10 打补丁;我希望 bootkit 能够在迄今为止发布的每个 EFI 兼容版本的 Windows x64 上运行。因此,我从头开始重写了 bootkit,目的如下:

在启动的每个阶段提供补丁信息,包括内核补丁本身。
支持 Windows 版本的所有 EFI 兼容版本(在撰写本文时)。
启用 bootkit 的惰性实例化和可选的内核后门,通过 EFI 系统表挂钩实现。
上图显示了最终 EfiGuard 引导流程的大图概览。对于各个特定于组件的挂钩和补丁,请参阅EfiGuardDxe/PatchXxx.c源文件。对于驱动程序初始化/卸载以及 EFI 引导和运行时服务挂钩,请参阅EfiGuardDxe.c。

学分
由hfiref0x和Fyyre更新
由zyantific提供的Zydis
Skywing关于 PatchGuard v1、v2和v3的不知情文章
dude719的UEFI-Bootkit
操作系统
执照
EfiGuard 在 GPLv3 下获得许可。子模块中的文件EfiGuardDxe/Zydis根据 MIT 许可证获得许可。

好像只适合于EFI启动。

作者: liuzhaoyzz    时间: 2023-4-29 17:24
gailium 发表于 2023-4-29 15:05
老版本有upgdsed,停更了,1809之后他字节改了,懒得去更新这个patch了

upgdsed原来听论坛的一个大神介绍个,我原来折腾过,没有折腾成功,后来我研究了驱动伪签名,感觉比折腾系统要可靠,信任根证书就行了。
作者: wintoflash    时间: 2023-4-29 17:54
liuzhaoyzz 发表于 2023-4-29 17:21
Mattiwatti/EfiGuard: Disable PatchGuard and DSE at boot time
https://github.com/Mattiwatti/EfiGuard ...


只支持64位UEFI。
32位没必要支持,因为32位Windows没强制签名验证。
BIOS情况的话,装的系统估计也就是Win7 64位。
Win7的漏洞比较多,有程序可以直接完美绕过的。https://github.com/hfiref0x/DSEFix
就算不绕过,也有很多泄漏的签名可以用。
作者: ypcok    时间: 2023-4-29 18:06
wintoflash 发表于 2023-4-29 17:54
只支持64位UEFI。
32位没必要支持,因为32位Windows没强制签名验证。
BIOS情况的话,装的系统估计也 ...

原来github上,有个 FuckCertVerifyTime ,可惜不更新了。
作者: gailium    时间: 2023-4-29 22:03
liuzhaoyzz 发表于 2023-4-29 17:24
upgdsed原来听论坛的一个大神介绍个,我原来折腾过,没有折腾成功,后来我研究了驱动伪签名,感觉比折腾 ...

我最近还研究了cishim从根源上解决数字签名校验问题,无需修补pg
作者: liuzhaoyzz    时间: 2023-4-29 23:01
gailium 发表于 2023-4-29 22:03
我最近还研究了cishim从根源上解决数字签名校验问题,无需修补pg

cishim,是不是也是只能用于UEFI的?
作者: gailium    时间: 2023-4-30 08:45
liuzhaoyzz 发表于 2023-4-29 23:01
cishim,是不是也是只能用于UEFI的?

通过替换ci方式干掉全部签名校验,支持legacy和uefi。暂时不想公开
作者: topway    时间: 2023-5-14 12:23
gailium 发表于 2023-4-30 08:45
通过替换ci方式干掉全部签名校验,支持legacy和uefi。暂时不想公开

支持secure boot吗?可针对ipxe.efi snponly.efi试验吗?

作者: gailium    时间: 2023-5-14 16:02
topway 发表于 2023-5-14 12:23
支持secure boot吗?可针对ipxe.efi snponly.efi试验吗?

secure boot肯定要自己签名 其他的没试过
作者: qq2348227    时间: 2023-5-14 16:09
学习了~
作者: wintoflash    时间: 2023-5-14 16:11
topway 发表于 2023-5-14 12:23
支持secure boot吗?可针对ipxe.efi snponly.efi试验吗?

这跟secure boot没有关系。
作者: hycsl888    时间: 2023-5-14 18:02
用xb21cn的系统就可以。。
作者: lovessmm    时间: 2023-5-17 00:48
学习了
作者: nowayer    时间: 2023-12-2 01:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: hehuiying    时间: 2024-4-28 06:46
谢谢分享
作者: szwp    时间: 2024-4-28 07:47
fangyzhai 发表于 2022-11-23 12:46
不折腾了,先收藏,有机会再试。感谢感谢

机会有了么




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3