Efiguard - это портативный x64 uefi bootkit, который исправляет диспетчер загрузки Windows, загрузчик и ядро во время загрузки, чтобы отключить правоприменение PatchGuard и подписи драйвера (DSE).
Если вы просто хотите попробовать Efiguard, пропустите использование.
В настоящее время поддерживает все, совместимые с EFI версии Windows X64, когда-либо выпущенные, от Vista SP1 до Windows 11.
Легко в использовании: может быть загружен с USB -палочки или раздела Windows EFI через загрузчик, который автоматически находит и сапоги. Драйвер также может быть загружен и настроен вручную, используя либо оболочку UEFI, либо погрузчик.
Обширно использует библиотеку ZYDIS Disasssembler для быстрой среды выполнения, чтобы поддержать более надежный анализ, чем возможно, при сопоставлении подписи, которые часто требуют изменения с обновлениями новых ОС.
Работает пассивно: драйвер не загружает и не запускает диспетчер загрузки Windows. Вместо этого он действует на загрузке bootmgfw.efi с помощью программного обеспечения Boot Manager через меню выбора загрузки или приложение EFI, такое как погрузчик. Если ОС, не являющаяся Windows, загружается, драйвер автоматически выгрузит себя.
Поддерживает четырехэтапное исправление для When bootmgfw.efi запускает bootmgr.efi , а не winload.efi . Это тот случай, когда файл WIM загружается для загрузки Winpe, настройки Windows или режима восстановления Windows.
Изящное восстановление: в случае сбоя патча драйвер отобразит информацию об ошибках и будет предпринимать подсказку продолжить загрузку или перезагрузить, нажимая ESC. Это верно даже до финальной стадии патча ядра, потому что последний патч -этап происходит до того, как будет вызван ExitBootServices . Многие UEFI Windows Bootkits Hook OslArchTransferToKernel , который, хотя и легко найти по сопоставлению шаблонов, является функцией, которая выполняется в защищенном режиме после ExitBootServices . Это означает, что ни один загрузочный сервис не может сказать пользователю, что что -то пошло не так. В то время как Efiguard - это Uefi Bootkit, он не начался как один. Efiguard изначально представлял собой паттер на диск, работающий на NT (аналогично Upgdsed), предназначенный для проверки жизнеспособности подзадачи на основе дизасмблера, в отличие от использования символов PDB и специфических для версий подписей. Patchntoskrnl.c по -прежнему очень похож на этот оригинальный дизайн. Только после того, как этот подход оказался успешным, без модификаций кода, необходимых в течение более года обновлений Windows, вышел ли UEFI в качестве способа дальнейшего улучшения возможностей и простоты использования.
Некоторые из преимуществ, предоставляемых подходом Bootkit, включают в себя:
bcdedit .ImgpValidateImageHash (хотя это все еще не сделано).db . Первоначальное воплощение Efiguard как Bootkit стало попыткой заставить Dude719 Uefi-Bootkit работать с недавними версиями Windows 10, потому что он устарел и больше не работает над последними версиями (например, Upgdsed, часто вызванным ощущением версий). В то время как я в конечном итоге заставил это работать, я был недоволен результатом, в основном из -за выбора зацепления OslArchTransferToKernel , который, как отмечалось выше, выполняется в защищенном режиме и после того, как был вызван ExitBootServices . Кроме того, я не был удовлетворен только возможностью исправить некоторые версии Windows 10; Я хотел, чтобы Bootkit работал над каждой EFI-совместимой версией Windows X64, выпущенной на сегодняшний день. Из -за этого я переписал Bootkit с нуля со следующими целями:
Обзор общего изображения последнего потока загрузки Efiguard показан на диаграмме выше. Для отдельных компонентных крючков и исправлений см. EfiGuardDxe/PatchXxx.c в исходных файлах. Для инициализации/разгрузки и разгрузки драйвера и сервисов EFI Boot and Runtime Services см. Efiguarddxe.c.
Efiguard имеет лицензию в соответствии с GPLV3. Файлы в подмодуле EfiGuardDxe/Zydis лицензированы по лицензии MIT.