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許可獲得許可。