Efiguard는 PatchGuard 및 Driver Signature Enforcement (DSE)를 비활성화하기 위해 Boot Time에 Windows Boot Manager, Boot Loader 및 Kernel을 패치하는 휴대용 X64 UEFI BootKit입니다.
Efiguard를 시도하려는 경우 사용을 건너 뛰십시오.
현재 Vista SP1에서 Windows 11에 이르기까지 모든 EFI 호환 버전의 Windows X64를 지원합니다.
사용하기 쉬운 : USB 스틱 또는 Windows EFI 파티션에서 Windows를 자동으로 찾아서 부팅하는 로더를 통해 부팅 할 수 있습니다. 운전자는 UEFI 쉘 또는 로더를 사용하여 수동으로로드 및 구성 할 수도 있습니다.
빠른 런타임 명령어 디코딩을 위해 Zydis disassemb
수동적으로 작동 : 드라이버는 Windows Boot Manager를로드하거나 시작하지 않습니다. 대신 부팅 선택 메뉴 또는 로더와 같은 EFI 애플리케이션을 통해 펌웨어 부츠 관리자가 부팅 bootmgfw.efi 로드에 작용합니다. 비 독사 OS가 부팅되면 운전자는 자동으로 자체적으로 내릴 수 있습니다.
bootmgfw.efi winload.efi 대신 bootmgr.efi 시작할 때 4 단계 패치를 지원합니다. WIM 파일이 WinPe, Windows 설정 또는 Windows 복구 모드를 부팅하도록로드 된 경우입니다.
우아한 복구 : 패치 고장의 경우 드라이버는 오류 정보를 표시하고 ESC를 누르면 계속 부팅하거나 재부팅하라는 메시지가 표시됩니다. ExitBootServices 호출되기 전에 마지막 패치 단계가 발생하기 때문에 최종 커널 패치 단계까지도 마찬가지입니다. 많은 UEFI Windows Bootkits Hook OslArchTransferToKernel 은 패턴 일치로 쉽게 찾을 수 있지만 ExitBootServices 후 보호 모드에서 실행되는 기능입니다. 이것은 사용자에게 무언가 잘못되었다고 말할 수있는 부팅 서비스가 없음을 의미합니다. Efiguard는 UEFI Bootkit이지만 하나로 시작하지 않았습니다. Efiguard는 원래 NT에서 실행되는 온 디스크 패치기 (UPGDED와 유사)였으며, PDB 기호 및 버전 특정 서명을 사용하는 것과는 대조적으로 분리기 기반 aproach의 생존력을 테스트하기위한 것입니다. Patchntoskrnl.c는 여전히이 원래 디자인과 매우 흡사합니다. 이 접근 방식이 성공한 후에야 1 년이 넘는 Windows 업데이트에 필요한 코드를 수정하지 않고 UEFI가 기능과 사용 편의성을 더욱 향상시키는 방법으로 사진을 찍었습니다.
Bootkit 접근법이 제공하는 이점 중 일부는 다음과 같습니다.
bcdedit 사용하여 Boot Configuration Store를 수정할 필요가 없습니다.ImgpValidateImageHash 패치 할 필요가 없습니다 (여전히 선택적으로 수행되지만).db 스토어에 개인 인증서를 추가 할 수있는 경우 보안 부팅을 가능하게합니다. 부트 키트로서 Efiguard의 초기 화신은 Dude719의 UEFI-Bootkit이 최근 버전의 Windows 10과 함께 작동하도록하는 시도였습니다. 왜냐하면 최신 버전에서는 더 이상 작동하지 않았기 때문에 (종종 버전에 민감한 패턴 스캔으로 인해 Upgded와 같이) 더 이상 작동하지 않기 때문입니다. 나는 결국 이것을 작동 시켰지만, 위에서 언급 한 바와 같이, 보호 모드에서 실행 된 후, ExitBootServices 호출 된 후에는 OslArchTransferToKernel 의 선택으로 인해 결과에 만족하지 못했습니다. 이 외에도, 나는 일부 버전의 Windows 10을 패치 할 수 있다는 것에 만족하지 않았습니다. 나는 Bootkit이 현재까지 출시 된 Windows X64의 모든 EFI 호환 버전에서 작동하기를 원했습니다. 이로 인해 다음과 같은 목표로 Bootkit을 처음부터 다시 작성했습니다.
최종 Efiguard 부팅 흐름의 큰 그림 개요는 위의 다이어그램에 나와 있습니다. 개별 구성 요소 별 고리 및 패치는 소스 파일의 EfiGuardDxe/PatchXxx.c 참조하십시오. 드라이버 초기화/언 로딩 및 EFI 부팅 및 런타임 서비스 후크는 efiguarddxe.c를 참조하십시오.
Efiguard는 GPLV3에 따라 라이센스가 부여됩니다. EfiGuardDxe/Zydis 하위 모듈의 파일은 MIT 라이센스에 따라 라이센스가 부여됩니다.