Pergunta

Eu costumava depurar o kernel do Windows usando VirtualKD, WinDBG e uma única máquina virtual.

Recentemente eu comprei uma máquina Linux e agora me pergunto: Qual é a maneira mais fácil de depurar o kernel do Windows quando seu host não consegue executar VirtualKD/WinDBG*?

Presumo que a solução exigirá duas máquinas virtuais, mas prefiro ter duas instâncias hospedadas na minha máquina real em vez de ter uma instância residindo dentro de outra instância virtual...

Existe alguma maneira de fazer isso funcionar?

Desde já, obrigado!

*O vinho é o último recurso por razões de estabilidade...

Foi útil?

Solução

resolvido! Basicamente, acabei usando dois (virtualbox) vms Emulando uma conexão serial (cabo nulo-modem) sobre um soquete de domínio unix (no host). Para mais informações, leia abaixo:

Configuração de hardware *:

  • Debuggee:
    • Certifique-se de que a máquina seja desligada e edite as portas seriais .
    • ativar porta 1 e atribuir valores da seguinte forma: Número da porta: com1 , modo de porta: tubulação de host , criar tubo: Desmarcado (cliente), porta de porta / arquivo: / tmp / win_link .
  • depurador:
    • o mesmo que acima (usando o mesmo caminho), só este tempo criar tubo deve ser marcado (servidor).

Configuração do depurador:

  • Execute Windbg e pressione Ctrl + K para invocar depuração do kernel .
  • em com , digite: Baudrate: 115200, porta: com1, redefine: 0 e verifique se tubo e reconectar são desmarcado (importante ).
  • Você será apresentado com a seguinte saída: Opened \\\\.\com1 Waiting to reconnect...

Debuggee Setup:

  • Execute bootcfg / debug on / porta com1 / baud 115200 / ID 1 . Para verificar, execute bootcfg . **
  • Reinicie.
  • bastante cedo durante o estágio de inicialização, o Windbg na outra máquina deve detectar o debuggee está sendo executado.

* Assumindo o VirtualBox é usado. Os usuários do VMware / KVM provavelmente poderão obter os mesmos resultados após as etapas semelhantes. Além disso, para mais informações, consulte o VirtualBox docs .

** Assumindo que os hóspedes são o Windows XP. Versões posteriores incluem bcdedit, que pode ser usado como descrito aqui .

Outras dicas

para QEMU \ KVM seguir essas instruções: http://www.lux-kvm.org/page/windowsguestdrivers/guestdebugging

Muito útil, mas aplica-se às máquinas Windows XP.Você pode consultar o seguinte link Se você precisar configurar 2 máquinas virtuais baseadas no Windows7 em um host Linux: http://www.aldeid.com/wiki/category:Digital-forensics/computador-forensics/debugger/kernel

Outra opção hoje em dia é habilitar a depuração local do kernel.Isso vem com alguns limitações, no entanto, permitirá que você acesse os dados do kernel apenas usando um VM.

Essa abordagem funciona apenas no Windows 8.0 e no Windows Server 2012 e versões posteriores.

Siga esses passos:

  1. Abra uma janela do prompt de comando como administrador.
  2. Digitar bcdedit /debug on
  3. Se o computador ainda não estiver configurado como destino de um transporte de depuração, insira bcdedit /dbgsettings local
  4. Reinicie o computador.

Depois que o sistema for reinicializado, você pode executar WinDBG como Administrator, imprensa ctrl+k ou vá para File -> Attach to kernel -> Local e pressione OK.

Attach to Kernel Option

Nesse ponto, você poderá executar comandos somente do kernel e acessar estruturas do kernel:

enter image description here

Testado no Windows 10 e com a nova versão do WinDBG (pré-visualização).

Referência: Configurando manualmente a depuração do kernel local de um único computador

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top