2012-05-09 13 views
1

私は仮想ドライバーをかわいそうにしていますが、私はこれに関する他の質問を読んだことがありますが、実際にはどこにも行きません。基本的に私が見逃している明白なツールがあるかどうかを見て、WindowsゲストからIOCTLをファジングしているかどうか知りたいのですが?あるいは、もし私がIN/OUTのように低レベルで書く必要があれば?ファジー仮想ドライバーツール

どれツールそこにハイパーバイザーのHyper-VやVMwareのいずれかをヒットするWindowsゲストでファジングドライバの

仮想化コードを行使するために、いくつかの方法があります

答えて

1

もちろん、Windowsの場合はIOCTLインターフェイスです。

次に、すべての仮想デバイスがゲストOSとホストOSのいくつかのコードによって何らかの形でエミュレートされていることを覚えておいてください。したがって、入力デバイス(キーボードとマウス)、ビデオデバイス、ストレージ(ディスク)、ネットワークカード、通信ポート(シリアル、パラレル)、標準PCデバイス(PIC、PIT、RTC、DMA)、CPU APICなどにアクセスする仮想化コードを実行する。

さまざまなPCデバイスの仮想化(WindowsのVMBUSで動作する合成デバイスについて言及している場合を除きます)は、デバイスのメモリマップにアクセスする命令のインターセプト、解析、エミュレート/実行によって行われますバッファおよびレジスタ、およびI/Oポートを含む。これはあなたにポンドのためのもう一つの "インターフェース"を与えます。

これを使用すると、デバイス関連のバグだけでなく、命令に関連したバグも発見する可能性があります。後者に興味があるならば、x86 CPUがさまざまなモード(実際の仮想8086、保護された64ビット)で命令レベルでどのように動作するのか、割り込みと例外をどのように処理するのかそれらのPCデバイスにアクセスする方法(どのように、どのメモリアドレスとI/Oポート番号にアクセスするか)も知っておく必要があります。

Btwでは、コードがカーネル内で実行されていない限り、Windowsはこれらのものに直接アクセスすることはできません。あなたは、Windowsの過剰保護機能を避けるために、Windows以外のゲストVMをこのようなものにすることができます。 FPU/MMX/SSE /などの特殊な保護モード命令(SIDTなど)を使用してデバイスにアクセスするなど、通常のタスクでは、エッジケース、特殊な命令エンコーディング(無効なエンコーディングを含む)、通常のタスクのための珍しい命令を探します。考えて、いたずらする。

もう1つ考慮すべきことは、競合状態と計算またはI/O負荷です。あなたはその方向にもいくつかの運があります。

+0

すごくありがとう、これらのことをするためにすでに用意されているすてきなツールはありますか?私はioctlfuzzerを見ましたが、それはそれについてです。 – rhinox80

+0

私は何も知らない。 –

+0

ioctlfuzzerはその後、蜂を始めるのに適していますか? WindowsデバイスのIOCTLをランダムにファジー化していると言われています。 – rhinox80