Quando a Integridade da Memória, também conhecida como Integridade de Código Protegida por Hipervisor (HVCI), está habilitada no Windows 11, ela bloqueia drivers que não atendem aos requisitos de assinatura do Programa de Compatibilidade de Hardware do Windows (WHCP). Isso pode fazer com que dispositivos como impressoras, placas gráficas ou controladores de armazenamento parem de funcionar. O driver bloqueado é registrado no log de eventos do sistema com um valor de hash específico que o identifica. Este artigo explica como ler esse hash no Visualizador de Eventos, como associá-lo ao arquivo do driver e como decidir entre atualizar o driver ou desabilitar a HVCI.
Principais Conclusões: Diagnosticar Bloqueios de Driver HVCI Lendo os Valores de Hash WHCP
- Visualizador de Eventos > Logs do Windows > Sistema > Filtrar Log Atual > ID do Evento 3043: Mostra o valor de hash WHCP para cada driver bloqueado.
- PowerShell Get-WinEvent -FilterHashtable: Recupera todos os eventos de bloqueio relacionados à HVCI em um único comando para um diagnóstico mais rápido.
- Hash WHCP nos detalhes do evento: Identifica o arquivo de driver exato que falhou na verificação de assinatura da HVCI.
Por que a HVCI Bloqueia Drivers com Assinaturas WHCP Ausentes
A HVCI usa segurança baseada em virtualização para executar verificações de integridade de código em modo kernel dentro de um ambiente isolado e seguro. Ela exige que todos os drivers carregados no kernel do Windows sejam assinados com um certificado WHCP. Drivers assinados com um certificado de assinatura cruzada mais antigo ou com um certificado não confiável são bloqueados. Quando um driver é bloqueado, o Windows grava o ID do Evento 3043 no log do Sistema. O evento contém um campo chamado Hash WHCP, que é um hash SHA-256 do arquivo do driver. Esse hash permite identificar o arquivo de driver exato, mesmo que o nome do arquivo não seja exibido no evento.
O que é um Valor de Hash WHCP
O hash WHCP é uma string hexadecimal de 64 caracteres gerada a partir do conteúdo binário do arquivo do driver. Ele é exclusivo para essa versão específica do driver. A Microsoft usa esse hash no evento de bloqueio da HVCI para que os administradores possam localizar o driver no disco ou no repositório de drivers sem depender do nome do arquivo, que pode ser enganoso ou duplicado.
Onde o Hash WHCP Aparece no ID do Evento 3043
O ID do Evento 3043 contém um bloco de dados XML ou texto. Na guia Detalhes do evento, procure o campo chamado WHCPHash ou whcpHash. O valor é uma string de 64 caracteres hexadecimais minúsculos. Se o evento usar o formato legado, o hash pode aparecer após o texto “WHCP Hash:” na guia Geral. Em ambos os casos, copie a string completa do hash.
Passos para Encontrar o Driver Bloqueado Usando o Hash WHCP
Método 1: Usando o Visualizador de Eventos para Encontrar o Hash WHCP
- Abra o Visualizador de Eventos
Pressione Win + R, digiteeventvwr.msce pressione Enter. - Navegue até o log do Sistema
No painel esquerdo, expanda Logs do Windows e selecione Sistema. - Filtre pelo ID do Evento 3043
Clique em Filtrar Log Atual no painel Ações. Na caixa IDs do Evento, digite3043e clique em OK. - Abra o evento do driver bloqueado
Clique duas vezes em qualquer evento na lista filtrada. Procure na guia Geral ou na guia Detalhes. Na guia Detalhes, selecione Exibição Amigável e encontre o campoWHCPHash. Copie o hash de 64 caracteres.
Método 2: Usando o PowerShell para Obter o Hash WHCP Mais Rapidamente
- Abra o PowerShell como Administrador
Clique com o botão direito no botão Iniciar e selecione Terminal do Windows (Admin) ou PowerShell (Admin). - Execute o comando Get-WinEvent
Digite o seguinte comando e pressione Enter:Get-WinEvent -FilterHashtable @{LogName='System'; Id=3043} | Format-List TimeCreated, Message - Localize o hash WHCP na saída
Role pela saída. Cada evento mostra um campoMessageque contém o hash WHCP. Copie a string do hash da mensagem.
Método 3: Corresponder o Hash WHCP a um Arquivo de Driver no Disco
- Abra um Prompt de Comando como Administrador
Pressione Win + R, digitecmde pressione Ctrl + Shift + Enter. - Altere para a pasta do repositório de drivers
Digitecd %SystemRoot%\System32\DriverStore\FileRepositorye pressione Enter. - Gere hashes para todos os arquivos .sys na pasta
Digite o seguinte comando e pressione Enter:for /r %i in (sys) do @certutil -hashfile "%i" SHA256 | find /v "SHA256" | find /v "CertUtil" >> driverhashes.txt
Isso cria um arquivo chamadodriverhashes.txtna pasta atual com hashes e caminhos de arquivo. - Pesquise o arquivo de hash pelo hash WHCP
Digitefindstr "seu-hash-de-64-caracteres" driverhashes.txtsubstituindo o espaço reservado pelo hash real. A saída mostra o caminho completo para o arquivo de driver correspondente.
Problemas Comuns ao Diagnosticar Bloqueios de Driver HVCI
Nenhum ID de Evento 3043 Encontrado no Log do Sistema
Se a HVCI estiver habilitada, mas nenhum evento 3043 aparecer, o bloqueio pode ser registrado como ID do Evento 3042. Filtre por 3042 e 3043. Se ainda assim não houver eventos, verifique se a HVCI está realmente ativada indo em Segurança do Windows > Segurança do Dispositivo > Isolamento do Núcleo > Integridade da Memória. Se estiver Desativada, nenhum bloqueio de driver está sendo gerado.
O Hash WHCP Não Corresponde a Nenhum Arquivo .sys no DriverStore
O driver bloqueado pode ter sido removido do DriverStore por uma Atualização do Windows ou por uma ferramenta de limpeza de drivers. Nesse caso, o hash não pode ser correspondido a um arquivo no disco. Você pode procurar o hash no site do Catálogo de Atualizações da Microsoft pesquisando pela string do hash. Se o driver foi publicado por meio do Windows Update, a entrada do catálogo mostrará o nome e a versão do driver.
Vários Drivers Bloqueados com o Mesmo Hash
Um único arquivo .sys pode ser usado por vários dispositivos. O hash é calculado no conteúdo do arquivo, não na instância do dispositivo. Se o mesmo hash aparecer em vários eventos 3043, significa que o mesmo arquivo de driver foi carregado para diferentes IDs de hardware. Atualizar esse único driver resolve todos os bloqueios para esse arquivo.
ID do Evento 3043 vs ID do Evento 3042: Diferenças no Bloqueio HVCI
| Item | ID do Evento 3043 | ID do Evento 3042 |
|---|---|---|
| Descrição | Registra um driver que foi bloqueado pela HVCI | Registra um driver que falhou na verificação WHCP, mas foi permitido carregar no modo de auditoria |
| Hash WHCP presente | Sim | Sim |
| Driver realmente bloqueado | Sim | Não |
| Somente modo de auditoria | Não | Sim |
O ID do Evento 3042 aparece apenas quando a HVCI está no modo de auditoria. O modo de auditoria é uma configuração de diagnóstico que registra o que seria bloqueado sem realmente bloquear o driver. O ID do Evento 3043 aparece quando a HVCI está totalmente habilitada e o driver é impedido de carregar. Ambos os eventos contêm o hash WHCP e podem ser diagnosticados usando os mesmos métodos.
Para usar o hash WHCP de um evento 3042, siga os mesmos passos do 3043. O formato do hash e a localização nos detalhes do evento são idênticos. A diferença é que com o 3042 o driver ainda está em execução, então você pode testar se remover ou atualizar o driver causa problemas antes de habilitar totalmente a HVCI.
Depois de identificar o arquivo do driver, verifique no site do fabricante se há uma versão assinada com WHCP. Se não houver versão assinada, você tem duas opções. Você pode desinstalar o dispositivo e usar um driver diferente que seja compatível com WHCP. Ou você pode desativar a Integridade da Memória em Segurança do Windows > Segurança do Dispositivo > Isolamento do Núcleo, o que permite que o driver carregue, mas reduz a proteção de segurança da HVCI.