。
もちろん、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負荷です。あなたはその方向にもいくつかの運があります。
すごくありがとう、これらのことをするためにすでに用意されているすてきなツールはありますか?私はioctlfuzzerを見ましたが、それはそれについてです。 – rhinox80
私は何も知らない。 –
ioctlfuzzerはその後、蜂を始めるのに適していますか? WindowsデバイスのIOCTLをランダムにファジー化していると言われています。 – rhinox80