Regmon
Regmon 〜 レジストリアクセスを全て記録するツール 〜
プログラムのレジストリへの読み書きを表示・記録するツールです。
○ダウンロードできる場所
下記のサイトから取得できます
http://www.sysinternals.com
http://www.sysinternals.com/Files/Regmon9x.zip (Win9X用)
http://www.sysinternals.com/Files/RegmonNt.zip (WinNT/2K/XP用)
○使い方
(1)ダウンロード・解凍
上記のサイトから使用しているWindows用のファイルをダウンロードし、解凍します。
(2)開始
解凍したフォルダからregmon.exeをダブルクリックします。
(3)フィルタの設定
regmon開始と同時に「RegmonFilter」のダイアログが現れます。
「Regmon Filter」では、レジストリの記録対象となるプログラム名やレジストリ名などを設定します。
「Include」は取得用のフィルタです。
ここに記述された文字列を含むプログラム名やレジストリ名が記録の対象となります。
※何も記述せず空白にすると、何一つ記録が残りません。
「Exclude」は排除用のフィルタです。
ここに記述した文字列を含むプログラム名やレジストリ名を含むレジストリアクセスは破棄され、記録の対象外となります。
設定を完了し、次に進むにはOKボタンをクリックします。
デフォルトの設定は下記の通りです
Include: * (全てを取得)
Exclude: 空白 (何も排除しない)
最初はデフォルトの設定で使用し、出力される情報が膨大で煩雑と感じたら、適宜フィルタを追加するのが良いでしょう。
(4)レジストリのアクセス記録開始
メインのRegistory Monitor ウィンドウが現れ、レジストリの読み書きの記録が開始されます。
各項目の説明
項目名 | 内容 | 例 |
# | 番号 | 1024 |
Time | 記録した時刻 時計アイコンをクリックすると表示形式が切り替わります。 |
18:23:55 |
Process | (レジストリアクセスをした)プログラム名とプロセスID | explorer:1744 |
Request | アクセスの種類 QueryValue: 読む SetValue: 書く OpenKey: レジストリのオープン CloseKey: レジストリのクローズ |
QueryValue |
Path | レジストリ名 最初の文字列は下記の様に略される HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINES HKU: HKEY_USERS HKCC: HKEY_CURRENT_CONF |
HKCR\Interface\{EC716845-B511-4773-9738-BA32236F33FC}\ProxyStubClsid32\ |
Result | レジストリアクセスの結果 Success: 成功 NotFound: 失敗など |
Success |
Other | その他の情報 Key:キー値 ,十六進数,文字列など |
{00020424-0000-0000-C000-000000000046} |
(5)記録の停止
Regmonの記録を停止するには、「虫眼鏡アイコン」をクリックします。虫眼鏡に赤いX印が付き、記録が中断されます。
再度、虫眼鏡アイコンをクリックすると記録が再開されます。
下記の方法でもできます。
Ctrl+Eキー、もしくは、メニューのFile→Capture Events
(6)記録のクリア
「消しゴムアイコン」をクリックすると記録がクリアされます。
下記の方法でもできます。
Ctrl+Xキー、もしくは、メニューのEdit→Clear Display
(7)保存
「ディスクアイコン」をクリックするとレジストリ読み書きの記録がファイルに保存されます。
保存したファイルの形式は、タブ区切りのテキスト形式です。
Excelなどで取り込むことができます。
下記の方法でもできます。
Ctrl+Sキー、もしくは、メニューのEdit→Save
○こつ
・記録するタイミングを絞る
regmonはデフォルトでは全プログラムのレジストリアクセスを記録するため、瞬時でも記録するデータ量は莫大になります。
あふれかえるデータから調査対象のレジストリアクセスを探し出すのは、砂漠で米粒を拾うような作業です。
ターゲットとなるレジストリアクセスの直前まで記録を停止しておき(「虫眼鏡アイコン」に×がついている状態)、タイミングを見計らって、レジストリアクセスの記録を開始させると(「虫眼鏡アイコン」をクリック)と解析が楽になります。
・Excludeフィルタに常駐プロセスを記述する
マウスやキーボードに触れてなくても、Windowsでは様々なプログラムが様々なタイミングでレジストリにアクセスをしています。
これらは、ターゲットとなるプログラムのレジストリアクセスの調査には邪魔になります。
フィルタのExcludeに無関係な常駐プロセスを記述すると、それらのレジストリアクセスは記録されなくなるので、見通しが良くなります。
方法は、下記の通りです。
1.Regmon Filterダイアログを表示させる。
Regmon起動時、あるいは、「フィルタアイコン」のクリックか、CTRL+Lを押すことでフィルタダイアログが現れます。
2.Excludeの項目に不要なプロセス名を記述します。
セミコロン(;)を区切り文字として、複数のプロセス名を記述できます。
その後、[OK]をクリックします
別の方法として、下記の方法があります。
レジストリアクセスの一覧から、不要な行を右クリックします。
現れたポップアップメニューから、[Exclude Process(プロセスを除外)]、「Exclude Path(レジストリを除外)」を選択します。
※Exclude Processを選択した場合は、フィルタのExcludeに選択した行のプロセスが自動的に追加されます。
※Exclude Pathを選択した場合は、フィルタのExcludeに選択した行のレジストリが自動的に追加されます。
たとえば下記のような常駐プロセスなどを記述しておくと解析が楽になります。
internat.exe;explorer;mmc.exe;rundll32.exe
・Includeフィルタに対象となるプロセスを記述する
レジストリアクセスを記録するプログラムが判明してる場合は、Includeフィルタにそのプロセスを記述するのが手っ取り早いです。
方法は、下記の通りです。
1.Regmon Filterダイアログを表示させる。
Regmon起動時、あるいは、「フィルタアイコン」のクリックか、CTRL+Lを押すことでフィルタダイアログが現れます。
2.Includeの項目に記録対象のプロセス名を記述します。
セミコロン(;)を区切り文字として、複数のプロセス名を記述できます。
その後、[OK]をクリックします
下記の方法でも可能です。
レジストリアクセスの一覧から、対象となるプログラムがある行を右クリックします。
現れたポップアップするメニューから、[Include Process(プロセスを限定)]、「Include
Path(レジストリを限定)」を選択します。
※Include Processを選択した場合は、フィルタのIncludeに選択した行のプロセスが自動的に追加されます。
※Include Pathを選択した場合は、フィルタのIncludeに選択した行のレジストリが自動的に追加されます。