Driver Verifier によるメモリーリークのデバッグ方法について

皆様、既に 2 月ですが明けましておめでとうございます! I沢です。今年もよろしくお願いいたします。   今回の記事はドライバーのメモリーリークがテーマです。 時間の経過とともに少しずつメモリー使用量が増えていく…でもなにが要因となっているかわからない…ドライバーのソースコードを眺めてもただ時間が過ぎるだけ…   そんなときにはこれ!Driver Verifier! 私共もメモリー関連のお問い合わせをよくいただくのですが、大抵の場合、最初の原因切り分けのために、こちらのツールをご案内します。 それだけ強力なツールですので、過去にも本ブログで 「ドライバー検証ツール」 や 「特別なプール (Special Pool)」 といった内容でご案内しておりますが、 今回はメモリーリークのデバッグに焦点を当ててご案内しております。   メモリーリークを発生させよう!   Driver Verifier の効果を確認しようにも、メモリーリークのためのドライバーを実装して…となるともうこの記事を読む気が無くなりますよね。 こんなこともあろうかと Microsoft SysInternals では NotMyfault というツールを公開しております。 こちらのツールを使用することで簡単に BSoD を発生させることもできるため、特定のタイミングでのメモリダンプを取得する際に使用された方もいらっしゃるかもしれません。 まずは以下の URL からツールをダウンロードをしましょう。 http://download.sysinternals.com/files/NotMyFault.zip ダウンロードが完了したら、zip ファイルを展開してください。 展開したフォルダの直下に x86、x64 というフォルダがあり、それぞれ NotMyfault.exe と myfault.sys という二つのファイルが確認できると思います。 メモリーリークを起こしたい環境の CPU アーキテクチャに合わせてこれら二つのファイルを同じフォルダにいれたままターゲットマシンに持っていきましょう。 今回私は Windows 8.1 x86 環境にて確認いたしますので、x86…


ドライバーの Authenticode 署名の方法

こんにちは、JSです。今回は、ドライバー署名の方法について少しお話をしたいと思います。   大半のドライバーは、OS を支える機能などが動いている「カーネルモード」で動作しているので、OS に大きな影響を与える可能性があります。そのような事態を防ぐために、ドライバーが安全なものであるという信頼を示す方法として署名という仕組みを取り入れています。署名はドライバーをインストールする上で必要不可欠なので、このブログ内でも何度か署名について話してきました。まさかたさんのエントリ「ドライバーのデジタル署名の基礎」や、なおきお~さんのエントリ「ドライバーのデジタル署名の留意点」等を読めば署名の役割を理解できるかと思われます。しかし、実際ドライバーに署名をどう加えるのかについては詳しくご案内する機会がなかったので、今回は Authenticode 署名を例として使って、ドライバーに署名する手順を、注意点も含めてご紹介したいと思います。   Authenticode 署名までの手順を大きく分けると、以下の 5 つのステップになります。 1. 署名用のプログラムをインストール 2. 商用の認証局から、Authenticode 署名用の証明書を取得 3. 関連するクロス証明書をダウンロード 4. カタログファイルの作成 5. カタログファイルに署名 では、これからそれぞれの手順について説明いたします。ちなみに、今回 私は Windows 8.1 x64 環境を使用しています。   1.   署名用のプログラムをインストール 署名するためには、Windows Driver Kit (WDK) が必要になります。Windows 8 以降に対応するためには、Visual Studio 2013 がインストールされた環境への Windows Driver Kit 8.1 Update のインストールが必要となります。以下のサイトにある「WDK 8.1 Update (Windows 8.1、8、7 ドライバー用)」の項目から WDK をダウンロードしましょう。   Windows 8.1: キットとツールのダウンロード <http://msdn.microsoft.com/ja-jp/windows/hardware/gg454513>…