2

virtualbox vm から BSOD テキストをどのように取得しますか??

BSOD はテキストであるため、VM のメモリ空間のどこかに、おそらく適切に定義された場所に保存する必要があります。

再起動ではなくブルー スクリーンで停止するように構成された複数の VM があり、定期的にスクリーン ショットを撮るためのコードが用意されています。

この時点で、私の計画は 2 つの画像を区別することです。違いがなく (つまり、画面に変化がなく)、4 隅のピクセルがすべて青 (および右の青) の場合、BSOD の抽出を試みます。テキストで「* STOP:」シーケンスを検索し、BSOD であることを確認します。

私は当初、画像自体からテキストを抽出するための迅速で汚い OCR ソリューションを計画していましたが、メモリからテキストを比較的簡単に抽出できれば、OCR エラーの可能性を排除できます。

マニュアルと API リファレンスを熟読しましたが、すぐに適用できると思われるものは見当たりませんでした。

Virtual Box ホストからゲスト メモリにアクセスして、BSOD テキストをメモリから直接取得することはできますか?

アップデート

明確にするために、現時点で4つの異なるオプションを検討しました

1) Windows デバッグ プロトコルをリバース エンジニアリングし、VM のシリアル ポートでリッスンするための少なくとも基本的なデバッガーを構築する

  • シリアル プロトコルのリバース エンジニアリングが必要です。これにはかなりの困難が伴うと思われます

2) Virtualbox で保存された状態ファイルをリバース エンジニアリングし、VM を BSOD に保存した後、そのファイルに保存されていると思われるテキストを VESA メモリ領域から抽出します。

  • ソース コード自体以外に、このファイル形式に関するドキュメントを見つけることができませんでした。

3) API を使用して取得した出力画像に対して OCR を実行する

  • これが最善の方法かもしれません。私の経験外で、ある種の ocr ソリューションを構築またはセットアップしてトレーニングする必要があります。比較的簡単に実行でき、一定幅のフォント/クリーンな画像、2 色のみの処理

4)API呼び出しを使用するか、何らかの方法でアクセス/公開する拡張機能を作成して、ゲストメモリに直接アクセスします

  • Warren が指摘したように、メモリにアクセスするための API はないようです。何らかの方法で vm のメモリを公開する拡張機能を作成できる可能性がありますが、Virtualbox の内部構造を理解する必要があります。

これは Solaris ホストで実行されており、起動する場合としない場合がある Windows vm が 1 つしかない場合があります。この VM は、Windows の比較的最近のバージョン (XP、2003、2003 R2、2008、Vista、2008 R2) である可能性があります。任意の数の Linux ベースの VM を生成できますが、ライセンスの問題により追加の Windows VM を生成することはできません。この時点までの私の考えは、ゲストのメモリから直接取得するのが実装するのが最も簡単だろうということでした.

4

2 に答える 2

3

情報を取得しようとしている場合は、カーネルデバッグを有効にして、仮想シリアルポートの1つを介して公開しないのはなぜですか?I / Oポートを介してWindows用のデバッグツール(WinDbg)またはカーネルデバッガー(KD)のいずれかを使用できるはずです。これはVMであるため、唯一の固有の要件は、仮想シリアルポートをホスト上の名前付きパイプにマップする必要があり、次にホスト上のデバッガー(またはホストがWindowsではないため他のVM)が通信するように構成する必要があることです。そのパイプの上。コマンドは次のようになります。

windbg -k com:port=\\.\pipe\<pipe_name>,pipe

kd -k com:port=\\.\pipe\<pipe_name>,pipe

伝説的なマーク・ルシノビッチによる素晴らしいブログ投稿があり、彼がデバッガーを使用してBSOD画面の色を変更した方法を説明しています。うまくいけば、それはあなたにツールを使用することへのいくつかの追加の洞察を提供するだけでなく、フィールドを絞り込み、あなたが探している情報を抽出するための適切な領域にあなたを連れて行くでしょう。

始めるのに役立ついくつかの参考資料を次に示します。

于 2012-03-30T15:14:12.220 に答える
1

VBoxManage とデバッガーを使用して、ゲスト (仮想) 物理メモリを抽出することができます。

VBoxManage debugvm TestVm dumpguestcore --filename guest.dump
gdb --core guest.dump
# dump memory [phys-mem-file] 0x0 [size vm-memory]

その後、メモリ ダンプで文字列の内容を検索できます。

参照: http://www.halfdog.net/Misc/TipsAndTricks/VirtualBox.html#ExtractGuestPhysicalMemory

于 2012-06-12T17:06:34.313 に答える