17

以前は、 VirtualKDWinDBG、および単一の仮想マシンを使用して Windows カーネルをデバッグしていました。

最近 Linux マシンを手に入れたのですが、ホストがVirtualKD/WinDBG*を実行できない場合に Windows カーネルをデバッグする最も簡単な方法は何でしょうか?

ソリューションには 2 つの仮想マシンが必要になると思いますが、別の仮想インスタンス内にインスタンスを配置するのではなく、実際のマシンでホストされている 2 つのインスタンスを使用しています...

とにかくそれを機能させる方法はありますか?

前もって感謝します!

*安定性の理由から、ワインは最後の手段です...

4

4 に答える 4

22

解決しました!基本的に、(ホスト上の)Unixドメインソケットを介してシリアル接続(ヌルモデムケーブル)をエミュレートする2つの(VirtualBox)VMを使用することになりました。詳細については、以下をお読みください。

ハードウェアのセットアップ*:

  • デバッグ対象:
    • マシンの電源がオフになっていることを確認し、シリアル ポートの設定を編集します。
    • ポート 1を有効にし、次のように値を割り当てます: ポート番号: COM1、ポート モード:ホスト パイプ、パイプの作成:オフ(クライアント)、ポート/ファイル パス: /tmp/win_link
  • デバッガ:
    • 上記と同じ (同じパスを使用)。今回のみ、[パイプの作成] をオンにする必要があります(サーバー)。

デバッガーのセットアップ:

  • WinDBG を実行し、Ctrl+K を押してKernel Debuggingを呼び出します。
  • COMで、「ボーレート: 115200、ポート: COM1、リセット: 0」と入力し、[パイプ]と [再接続] がオフになっていることを確認します(重要)。
  • 次の出力が表示されます。Opened \\\\.\com1 Waiting to reconnect...

デバッグ対象のセットアップ:

  • /port com1 /baud 115200 /id 1 で bootcfg /debug を実行します。確認するには、bootcfgを実行します。**
  • リブート。
  • 起動段階のかなり早い段階で、他のマシンの WinDBG はデバッグ対象が実行中であることを検出する必要があります。

※VirtualBox利用を前提としています。VMWare/KVM ユーザーは、同様の手順に従って同じ結果を達成できる可能性があります。また、詳細については、VirtualBox のドキュメントを参照してください。

**ゲストが Windows XP であると仮定します。それ以降のバージョンには bcdedit が含まれており、ここで説明されているように使用できます。

于 2012-10-07T22:47:28.350 に答える
1

非常に役立ちますが、Windows XP マシンに適用されます。Linux ホストで 2 つの Windows7 ベースの仮想マシンを構成する必要がある場合は、次のリンクを参照してください: http://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Debugger/Kernel

于 2015-04-08T17:06:17.260 に答える