ビジネス WinDbgアプリケーション開発技術 イメージロード(ユーザモードとカーネルモード)


WinDbgコマンド体系

 まずは前回のように、「File/Kernel Debug...」と選択し、「Local」タブ経由でローカルコンピュータに接続してみましょう。次のような情報が無事に表示されてくるでしょうか。
Microsoft (R) Windows Debugger  Version 6.5.0003.7
Copyright (c) Microsoft Corporation. All rights reserved.

Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Symbol search path is: srv*c:\ossymbols*http://msdl.microsoft.com/download/symbols
*******************************************************************************
WARNING: Local kernel debugging requires booting with /debug to work optimally.
*******************************************************************************
Windows XP Kernel Version 2600 (Service Pack 2) UP Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp2_gdr.050301-1519
Kernel base = 0x804d9000 PsLoadedModuleList = 0x8055c420
Debug session time: Sat Sep  3 12:00:04.498 2005 (GMT+9)
System Uptime: 0 days 5:38:19.073
 このような情報が表示されない場合には、Microsoft社のオンラインヘルプやWinDbgに付属するヘルプ情報を参考にし、WinDbg環境を適切に整備するとよいでしょう。

 今回はWinDbgコマンドの種類について説明します。


WinDbgコマンドの種類
 WinDbgは、Windowsのカーネル環境とユーザ環境を分析するツールです。このため、WinDbgはハードウェア情報、カーネル情報、そして、Windowsアプリケーション情報まで表示する多種多様なコマンドを備えています。WinDbgがサポートするコマンドは、次の3種類に大別されます。

・通常コマンド
・メタコマンド
・拡張コマンド

 筆者のこれまでの経験では、WinDbgがバージョンアップされると、その都度、新しいコマンドがそれぞれの範疇に追加されています。中には、「拡張コマンド」の立場を捨て「メタコマンド」に移動されたものもあります。移動の背景を眺めていると、WinDbgスクリプトエンジンの設計思想のようなものが見えたりします。このような複雑な歴史を細かく見ると、WinDbgのコマンド体系を力ずくで丸暗記することは無意味であることが分かります。

 筆者はWinDbgにある程度慣れた頃、WinDbgコマンド体系の覚え方には、"コツのようなものがあるのではないか?"、と考えるようになりました。 WinDbgの一つひとつのコマンドはプロ向けの機能を提供しているため、実行後に返される情報は魅力に富んでいます。すべてのコマンドを一挙に覚えようとすると、だれでも混乱してしまいます。興味本位でWinDbgの世界に飛び込んできた人のほとんどは挫折していると思われます。複数のWinDbgコマンドを適切に使用すれば、つまり、WinDbgコマンドスクリプティング(WinDbgアプリケーション開発)技術を習得すれば、Windowsカーネルの世界を丸裸にできます。しかし、学習方法を間違えると、きわめて魅力的なWinDbgコマンドスクリプティング技術を身に付ける前に、多くの人は挫折します。

 筆者は、目的を設定し(ソフトウェア開発の上流設計に相当)、それを達成するための複数のコマンドをスクリプトファイル化しておき、再利用したり、必要に応じて復習するようにしています。たとえば、あるウィルス検出ソフトウェアをインストールし、パフォーマンスが著しく低下した場合などは、WinDbgでシステム分析を行います。パフォーマンスを著しく低下させるソフトウェアは、それがウィルス検出プログラムであろうがなかろうが、"マルウェア"の仲間に入ります。最終的には、システムから削除し、別の方策を考え出す必要があります。この種の分析作業では、複数のWinDbgコマンドを当然使用します。コマンド名を覚える前に、作業目的の明確な設定がきわめて大切になります。要件定義という表現も可能かもしれません。定義された要件は、ソフトウェア(WinDbgアプリケーション)として具体化されなければなりません。この具体化(実装)作業は複数のWinDbgコマンドをプログラミングする知識、つまり、WinDbgコマンドスクリプティング技術を必要とします。

 WinDbgの強力な機能を使い切るには、WinDbgコマンド群をプログラミングする知識が必要である。このような主張を前面に出すWebサイトは、世界広しといえでも、それほど多くはないはずです。カーネルは常に動いています。メモリ残量やハンドル数は常に変化しています。複数のWinDbgコマンド群(WinDbgアプリケーション)の実行フローを制御する技術が必要です。これは至極当然の結論です。
前へ | 次へ



 WinDbg入門  ホーム


Copyright©豊田孝 2004- 2009
本日は2009-01-06です。