O Efiguard é um bootkit x64 UEFI portátil que corrige o gerenciador de inicialização do Windows, o carregador de inicialização e o kernel no horário de inicialização, a fim de desativar o patchguard e a aplicação da assinatura do driver (DSE).
Se você está apenas procurando experimentar o efiguard, pule para o uso.
Atualmente, suporta todas as versões compatíveis com EFI do Windows X64 já lançadas, do Vista SP1 ao Windows 11.
Fácil de usar: pode ser inicializado a partir de um stick USB ou da partição do Windows EFI por meio de um carregador que encontra e botas automaticamente as janelas. O driver também pode ser carregado e configurado manualmente usando o shell UEFI ou o carregador.
Faz o uso extensivo da biblioteca Zydis Desmontagebler para decodificação de instruções de tempo de execução rápido para suportar análises mais robustas do que o possível com a correspondência de assinatura, o que geralmente requer alterações com novas atualizações do sistema operacional.
Funciona passivamente: o driver não carrega ou inicia o Windows Boot Manager. Em vez disso, ele atua em uma carga de bootmgfw.efi pelo gerenciador de inicialização do firmware através do menu de seleção de inicialização ou de um aplicativo EFI como o carregador. Se um sistema operacional não-Windows for inicializado, o motorista se descarregará automaticamente.
Suporta patches de quatro etapas para quando bootmgfw.efi inicia bootmgr.efi em vez de winload.efi . É o caso quando um arquivo WIM é carregado para inicializar o modo Winpe, Windows Setup ou Windows Recovery.
Recuperação graciosa: No caso de falha do patch, o driver exibirá informações de erro e solicitará a continuar inicializando ou a reiniciar pressionando o ESC. Isso é verdade mesmo até o estágio final do patch do kernel, porque o último estágio do patch acontece antes que ExitBootServices seja chamado. Muitos UEFI Windows Bootkits Hook OslArchTransferToKernel que, embora fácil de encontrar por correspondência de padrões, é uma função que é executada no modo protegido após ExitBootServices . Isso significa que nenhum serviço de inicialização está disponível para dizer ao usuário que algo deu errado. Embora o efiguard seja um bootkit da UEFI, ele não começou como um. O Efiguard era originalmente um patcher no disco em execução no NT (semelhante ao Upgdded), destinado a testar a viabilidade de uma APROACH baseada em desmontagem, em vez de usar símbolos PDB e assinaturas específicas da versão. Patchntoskrnl.c ainda se parece muito com esse design original. Somente depois que essa abordagem se mostrou bem -sucedida, sem modificações em codificação necessária em mais de um ano de atualizações do Windows, a UEFI entrou em cena como uma maneira de melhorar ainda mais as capacidades e a facilidade de uso.
Alguns dos benefícios fornecidos por uma abordagem de bootkit incluem:
bcdedit .ImgpValidateImageHash (embora isso ainda esteja opcionalmente feito).db . A encarnação inicial do efiguard como bootkit foi uma tentativa de obter o UEFI-Bootkit do Dude719 de trabalhar com versões recentes do Windows 10, porque havia se tornado datado e não funciona mais nas versões mais recentes (como upddsed, muitas vezes causado por verificações de padrões sensíveis à versão). Enquanto eu acabou fazendo com que isso funcione, fiquei insatisfeito com o resultado principalmente devido à escolha de conectar OslArchTransferToKernel , que, como mencionado acima, é executado no modo protegido e após ExitBootServices ter sido chamado. Além disso, não fiquei satisfeito em poder consertar algumas versões do Windows 10; Eu queria que o BootKit trabalhasse em todas as versões compatíveis com EFI do Windows X64 lançadas até o momento. Por isso, reescrevi o bootkit do zero com os seguintes objetivos:
Uma visão geral de uma visão geral do fluxo final de inicialização do efiguard é mostrada no diagrama acima. Para os ganchos e patches específicos do componente individual, consulte EfiGuardDxe/PatchXxx.c nos arquivos de origem. Para inicialização/descarregamento do driver e os ganchos de serviços de inicialização e tempo de execução, consulte Efiguarddxe.c.
O efiguard está licenciado sob o GPLV3. Os arquivos no submódulo EfiGuardDxe/Zydis estão licenciados sob a licença do MIT.