Efiguard是一种便携式X64 UEFI启动套件,在启动时间对Windows引导管理器,启动加载程序和内核进行修补,以便禁用PatchGuard和驱动程序签名执行(DSE)。
如果您只是想尝试Efiguard,请跳过使用。
当前,从Vista SP1到Windows 11发行的Windows X64的所有EFI兼容版本。
易于使用:可以通过自动找到和靴子Windows的加载程序从USB棒或Windows EFI分区启动。也可以使用UEFI Shell或Loader手动加载和配置驱动程序。
广泛使用Zydis拆卸器库进行快速运行时指令解码,以支持比签名匹配的更强大的分析,这通常需要使用新的OS更新来更改。
被动工作:驱动程序不会加载或启动Windows启动管理器。取而代之的是,它通过启动选择菜单或EFI应用程序(例如Loader)在固件启动管理器上作用于bootmgfw.efi 。如果启动了非窗口操作系统,则驱动程序将自动卸载。
为bootmgfw.efi启动bootmgr.efi而不是winload.efi时,支持四阶段修补程序。当加载WIM文件以引导Winpe,Windows设置或Windows恢复模式时,就是这种情况。
优雅的恢复:如果有补丁失败,驱动程序将显示错误信息并提示继续启动或通过按ESC重新启动。即使到最终的内核补丁阶段,这也是如此,因为最后一个补丁阶段发生在ExitBootServices被调用之前。许多UEFI Windows Bootkits挂钩OslArchTransferToKernel ,虽然易于通过模式匹配找到,但它是在ExitBootServices后以受保护模式执行的函数。这意味着没有启动服务可告诉用户出现问题。虽然Efiguard是UEFI靴子,但它并没有以一个开始。 Efiguard最初是在NT上运行(类似于Upgdsed)的盘上的补丁程序,旨在测试基于拆卸器的掠夺的可行性,而不是使用PDB符号和特定于版本的特定签名。 Patchntoskrnl.c仍然看起来很像这种原始设计。只有在这种方法被证明成功之后,没有对Windows更新一年多的代码进行修改,UEFI是否进入了图片,以进一步提高功能和易用性。
Bootkit方法提供的一些好处包括:
bcdedit修改引导配置存储。ImgpValidateImageHash (尽管仍然可以选择完成)。db Store,则可以使用Bootkit允许启用安全启动。 Efiguard作为靴子的最初化身是试图让Dude719的uefi-bootkit与最近版本的Windows 10一起使用,因为它已经过时了,并且不再使用最新版本(例如Upgdsed,通常由版本敏感的图案扫描引起)。虽然我最终确实使它起作用了,但我对结果不满意,主要是由于选择了OslArchTransferToKernel的选择,如上所述,在受保护模式下执行该结果,并在调用了ExitBootServices之后。除此之外,我对只能修补Windows 10的某些版本感到不满意。我希望Bootkit能够在迄今为止发布的每个EFI兼容版本的Windows X64上使用。因此,我以以下目的从头开始重写Bootkit:
上图显示了最终Efiguard启动流的大图概述。对于各个组件特定的钩子和补丁,请参见源文件中的EfiGuardDxe/PatchXxx.c 。有关驱动程序初始化/卸载以及EFI启动和运行时服务挂钩,请参见EfiguardDxe.c。
Efiguard在GPLV3下获得许可。 EfiGuardDxe/Zydis子模块中的文件已根据MIT许可获得许可。