今回は、マイクロソフトのエンジニアが出演する人気のビデオ、Defrag Toolsで紹介されていた “Driver Verifier” を紹介します。
Driver Verifier は Windows にデフォルトで入っているツールで、ドライバーのトラブルシューティングに便利なツールです。
[Driver Verifier とは?]
Windows にデフォルトで入っているツールで、ドライバーのトラブルシューティングに便利なツールです。
Driver Verifier を使用すると、システムに悪影響を与えるドライバーを突き止め、その悪影響の原因を突き止めることが可能になりえます。
以下、具体例を用いながら使用方法を紹介します。
[Driver Verifier の基本的な使用方法]
以下、Driver Verifier の基本的な使用方法を紹介します。
1. スタートメニューに ”verifier” と入力し、”verifier.exe” を起動します。
2. “タスクの選択” を行います。
ここでは、手軽に設定を作成できる、”標準の設定を作成する” を選択しました。
3. “検証するドライバーの選択”を行います。
今回は、”一覧からドライバーを選択する” を選択しました。
4. “検証するドライバーの選択”を行います。
今回は、NotMyFault を使用するため、”現在読み込まれていないドライバーを一覧に追加する”より、”myfault.sys” を選択しました。
[補足] NotMyFault は意図的にバグチェックを発生させることができる、Microsoft 社が提供しているフリーツールです。
すると、”myfault.sys” が一覧に表示されるので、チェックをいれて、”完了”をクリックします。
5. 再起動を促されるので、再起動を行います。
以上で、設定は終了です。
[Driver Verifier により、何がどう変わる?]
以下、Driver Verifier により、何がどう変わるかをみてみます。
その後、どうして結果が変わったのかを見てみます。
まず、何がどう変わったのかを見てみます。
上記の設定を行い再起動を行った後に、NotMyFault を利用してバグチェックを発生させ、ダンプを見てみます。
今回は、”Buffer overflow” を発生させました。
ダンプを開いて “!analyze –v” を実行したところです。
エラーコードが、”DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION (d6)” となっており、エラー発生時のスタックも、myfault からの呼び出しでバグチェックが発生していることがわかります。
一方、Driver Verifier を有効にしていない状態で、 上記同様、NotMyFault の”Buffer overflow” を発生させた時のダンプを見てみると、エラーコードは、”SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (7e)” となっておりました。
エラー発生時のスタックも、myfault はいませんでした。
[Driver Verifier を有効にすると、どうして”!analyze –v”の結果が変わる?]
では、どうしてダンプの “!analyze –v”の結果が変わったのでしょうか?
それは、Driver Verifier が行ったことがわかれば、理解できます。
今回行った Driver Verifier の設定を行うと、プール割り当て時に”特別なプール”が使用されるようになります。
この”特別なプール”とは、アクセス禁止属性を持つプールで、アクセスがあるとバグチェックが発生します。
そのため、myfault.sys がバッファーオーバーフローを起こすと、即座にバグチェック (=”DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION (d6)”) が発生し、オーバーフローを起こした犯人が、myfault.sys である、とわかります。
一方、通常のプール(= Driver Verifier を有効にしていない状態) では、バッファーオーバーフロー自体が発生しても、バグチェックは発生しません。
しかし、バッファオーバーフローが発生すると、ほかのドライバのメモリ領域を壊してしまいます。
今回は、nt のメモリ領域を壊してしまい、nt で例外が発生し、それをハンドルできなかったため”SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (7e)” のバグチェックが発生した、ということになります。
リンク
・Defrag Tools: #16 – WinDbg – Driver Verifier
今回の元ネタです。
http://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-16-WinDbg-Driver-Verifier
・Using Driver Verifier to identify issues with Windows drivers for advanced users
Driver Verifier は、今回紹介した”特別なプール”以外にも、複数有効にできる機能があります。それらの説明があります。
http://support.microsoft.com/kb/244617