2012-10-02 19 views
10

Ich Debugging der Windows-Kernel mit VirtualKD, WinDBG und eine einzelne virtuelle Maschine.Debugging Windows Kernel von Linux

Kürzlich habe ich einen Linux-Rechner, und jetzt frage ich mich - Was ist der einfachste Weg, den Windows-Kernel zu debuggen, wenn Ihr Host nicht ausgeführt werden kann VirtualKD/WinDBG *?

Ich nehme die Lösung zwei virtuelle Maschinen benötigen, aber ich habe lieber zwei Instanzen auf meiner eigentlichen Maschine gehostet, anstatt eine Instanz, die in einer anderen virtuellen Instanz mit Wohnsitz ...

Gibt es trotzdem, dass die Arbeit zu machen?

Vielen Dank im Voraus!

* Wein ist der letzte Ausweg aus Stabilitätsgründen ...

Antwort

16

gelöst! Grundsätzlich endete ich zwei (VirtualBox) VMs Emulation eines Serielle Verbindung (Nullmodemkabel) mit bis über einen Unix-Domain-Socket (auf dem Host). Für weitere Informationen, lesen Sie weiter unten:

Hardware-Setup *:

  • Debuggee:
    • Sicherstellen, dass die Maschine ausgeschaltet und Serial Ports Einstellungen bearbeiten.
    • aktivieren Anschluss 1 und Werte zuweisen wie folgt: Portnummer: COM1, Port-Modus: Altrohr, erstellen Rohr: Ungeprüfter (Client), Port/Dateipfad: /tmp/win_link.
  • Debugger:
    • Wie oben (den gleichen Pfad), nur diesmal Rohr erstellen geprüft werden sollte (Server).

Debugger-Setup:

  • Run WinDBG und drücken Sie Strg + K Kernel Debugging aufzurufen.
  • in COM ein: Baudrate: 115200, Port: COM1, Resets: 0 und stellen Sie sicher, dass Rohr und Reconnect ungeprüft (wichtig) sind.Opened \\\\.\com1 Waiting to reconnect...

Debuggee Setup:

  • Run bootcfg/debug auf/Hafen com1/Baud 115200/id 1
  • Sie werden mit der folgenden Ausgabe präsentiert werden. Führen Sie zur Überprüfung bootcfg aus. **
  • Starten Sie neu.
  • Ziemlich früh während des Startvorgangs sollte WinDBG auf dem anderen Computer erkennen, dass das Debuggee ausgeführt wird.

* Angenommen, VirtualBox wird verwendet. VMWare/KVM-Benutzer werden nach ähnlichen Schritten wahrscheinlich die gleichen Ergebnisse erzielen. Weitere Informationen finden Sie unter VirtualBox docs.

** Angenommen, Gäste sind Windows XP. Spätere Versionen enthalten bcdedit, das wie beschrieben here verwendet werden kann.

+0

Ihre Konfiguration scheint perfekt, aber unabhängig davon, welche Konfiguration Ich verwende, kann ich nicht die seriellen Anschlüsse auf meine beiden Windows-VMs sehen.Hattest du jemals ein solches Problem? –

0

Eine andere Option ist heutzutage, das lokale Kernel-Debugging zu aktivieren. Dies kommt mit einigen limitations, aber es wird Ihnen ermöglichen, auf Kernel-Daten zuzugreifen, während Sie nur eine VM verwenden.

Dieser Ansatz funktioniert nur unter Windows 8.0 und Windows Server 2012 und höher.

Gehen Sie folgendermaßen vor:

  1. Öffnen Sie eine Eingabeaufforderung als Administrator.
  2. Geben Sie bcdedit /debug on
  3. Wenn der Computer nicht bereits als Ziel eines Debug-Transport, geben Sie so konfiguriert ist, bcdedit /dbgsettings local
  4. den Computer neu starten.

Sobald das System neu gestartet wird, können Sie WinDBG als Administrator, drücken ctrl+k oder gehen Sie zu File -> Attach to kernel -> Local und drücken Sie OK ausführen.

Attach to Kernel Option

An diesem Punkt können Sie Kernel-nur Befehle und Zugang Kernel Strukturen auszuführen:

enter image description here

unter Windows 10 und mit der neuen WinDBG Version (Vorschau) Geprüft .

Referenz: Setting Up Local Kernel Debugging of a Single Computer Manually