第二回ローレイヤー勉強会
「Windowsのフィルタドライバ入門」というお題で発表してきました。
なんか反応がいまいちだった気もしますが、飲み会が盛り上がったので良かったのではないかと。
Alpha用のWindows XPがbeta版すら出ていないという渾身のギャグが滑ったのでまだまだ修行が足りないなと思いました。
飲み会は、割り込みハンドラとI/O入出力とインラインアセンブラを実装すればPHPでもデバイスドライバ書けるんじゃね?というような内容でした。
資料はgoogleグループ上にあるので、興味のある方はグループに参加していただければ。
http://groups.google.com/group/lowlayer?hl=ja
か
http://groups.google.co.jp/group/lowlayer?hl=ja
からどうぞ。
egggarden氏から使い方がわからんという突っ込みを受けたので、インストーラと説明書を作成しました。
アップロードしたファイルにも同じ内容のものがありますが、不明点があればコメントください。
以下、デモした内容を試す手順です。この手順ではINFファイルは不要です。
- ホストOSにVMware(server、workstation、player)などの仮想化ソフトウェアをインストールします。
- VMware上にゲストOSをインストールします。その際、ゲストOSにシリアルポートを名前つきパイプとして追加します。
Windows 2000/XP/Vista/7のどれでも大丈夫なはずですが、Windows XP以降の場合は設定を行わないとWinDbgにデバッグ出力がされないことがあります。(参考:DbgPrintとVistaのメモ) - ホストOSにWDKをインストールします。WinDbgもインストールします。
- WDKのビルド環境のコンソールを開き、プロジェクトのあるディレクトリ(PassFilterDriverまたはSwapFilterDriver)に移動します。
- 必要であればソースコードを編集します。
- buildユーティリティーによりビルドします。(makeも利用可能)
- ゲストOSを起動し、バイナリファイルをゲストOSのフォルダにコピーします。
- ゲストOSにてコマンドプロンプトを開き、そのフォルダに移動します。
- DriverInstall.exeによりドライバのインストールを行います。
(ファイルをsystem32\drivers\にコピーし、システムサービスとして登録します)
例: DriverInstall PassFilter - ゲストOSにてDevFilterEditor.exeによりフィルタドライバとして登録します。
キーボードまたはマウスのupperフィルタとして追加します。 - ゲストOSのブートオプションを編集し、デバッガを有効化します。
Windows XP以前とVista以降では設定方法が異なります。
Windows XP以前ではboot.iniを編集します。(boot.ini windbgでぐぐる)
Windows Vista以降ではbcdeditユーティリティーによって設定します。(bcdedit windbgでぐぐる) - ゲストOSを再起動し、ブートメニューでデバッガが有効化されたエントリを選択します。
- WinDbgによりゲストOSに接続します。
- ゲストOS上でキー入力やマウスクリックを行い、テストします。