□ Report … 詳細なレポートを作成するならチェックを入れる.ここにチェックが入っていないと、下記の指定は意味がなくなる
Header … RGKN のヘッダ部分について
□ Count … 樹構造データレコードの数を出力するならチェックを入れる □ Empty … RGKN にある空きデータレコードの情報を出力するならチェックを入れる □ Count … RGKN にある空きデータレコードの数を出力するならチェックを入れる Header … RGDB のヘッダ部分について
□ Count … RGDB の存在数を出力するならチェックを入れる
□ Check Sum … レジストリキー名のチェックサムを計算し出力するならチェックを入れる.幽霊キーの確認に使用する □ Expand Data … レジストリデータを出力するならチェックを入れる.レジストリキーによっては含んでいるレジストリデータが多いため、ここにチェックが入っているとレポート作成に時間が掛かる.なお、1つのレジストリデータは一行に入るだけの内容に切り取って出力される. □ Count … レジストリキーの内部的な存在数を出力するならチェックを入れる □ Gauge … 出力する項目ごとに、各データの項目名を略称で表示(ゲージ表示)するならチェックを入れる.レジストリキーが沢山あって全てのデータを展開する際、出力開始位置だけにゲージを表示すると、レポートの下の方で出力データの意味がつかみにくくなる.逆に、小さなレジストリを解析する際には、いちいちゲージが出力されては鬱陶しい.適宜、チェックを選択する □ Empty … RGDB 群にある空きデータレコードの情報を出力するならチェックを入れる □ Count … RGDB 群にある空きデータレコードの数を出力するならチェックを入れる … Registr!p の内部的な話になるが、レポート作成前に RGDB を一度全て読み通してデータの位置を予め配列変数に格納する工程(Prescan プリスキャン)がある.その中身をダンプするならチェックを入れる. プリスキャンは単なる高速化の手法ではない.RGDB に記されているレコード数と実際に存在するレコード数が往々にして食い違うため、独自にレコードの存在を確認する必要があるのだ. □ Select All ボタン … 上記全ての項目にチェックを入れる |
<<<<< Pre-Scanning Status of each RGDB records >>>>> ← 見出し RGDB(0000) ===== ← 何番目の RGDB か Includes MAYBE 00FE record(s)... ← ヘッダには 0xFE 個のレコードがあるとの情報がある 0000,0001,0002,0003,... ← 各 RGDB に含まれるデータレコードのレコード番号を発見した順番に表示する.ゆえに昇順に現れないことが多い 以降、レコード番号が列挙される.FFFF は空きレコードである. 注目すべきは各ブロックの一番最後の記述だ. ...,001C,0008,>END ← プリスキャンが正常に終了した.ヘッダ情報と実レコード数が一致している ...,0007,FFFF,*OutOfArea*>END ← ヘッダに書かれたレコード数が不正なため、ブロックの外にスキャンしに行きそうになり中止した <<<<< ---------------------------------------- >>>>> ← フッター |
== Registry Header[CREG] ======== ← 見出し wUnk1 : ← 現在のところ意味を解析できていない項目は「Unk」で表示している(unknownの略).よってこれ以降、Unk の説明は省略する iRGDB1st : 0000D020 ← 最初の RGDB の存在するアドレス wDBblks : 0008 ← 含まれる RGDB ブロックの数 |
== Registry Kernel[RGKN](0000) ======== ← 見出し.カッコの中の数字は RGKN が複数ブロックに渡る場合を想定しての、通し番号表示である.現在は常にゼロである iBlkSize : 0000D000 ← RGKN ブロックの大きさ iRec1stOfs : 00000020 ← 最初のデータレコードへの、ブロック先頭からのオフセット(相対アドレス) iERecOfs : 00000F1C ←最初の空きレコードへの、ブロック先頭からのオフセット RGKN record <Using> ← RGKN データレコード表示の開始見出し __offset:____Attr __Chksum ____Unk1 __UprOfs __LwrOfs _NextOfs Blk# Rec# ← 各位置に出力される項目の列見出し
以降、樹構造についてのレコード情報が列挙される 一連の洗い出しの後に、レコード数が表示される Total: 1791 Record(s) ← レコード数 RGKN record <Empty> ← RGKN 空きレコード表示の開始見出し __offset:____Attr ____Size _NextOfs ← 各位置に出力される項目の列見出し.意味は上の説明を参照のこと.空きレコードはチェーンで管理されているので、上位・下位のオフセット情報はない 以降、空きレコードのサイズと位置が列挙される 一連の洗い出しの後に、レコード数が表示される Total: 11 Record(s) ← 空きレコード数 |
== Registry Data Block[RGDB](0000) ======== ← 見出し.カッコの中の数字は RGDB のブロック番号 iBlkSize : 0000A000 ← RGDB ブロックの大きさ iRestSize : 00003120 ← 存在する空き領域の大きさ iERecOfs : 00004ACF ← 空き領域の先頭へのブロック内オフセット wMaxRecNo : 00FE ← データレコードに振られた最大レコード番号 wRecNum : 0081 ← 含まれるデータレコード数.しばしば不正? 以降、RGDB 群のヘッダについての情報が列挙される 一連の洗い出しの後に、ブロック数が表示される RGDB: Total: 8 Header(s) ← ブロック数 RGDB record <Using> ← RGDB データレコード表示の開始見出し ____addr(Blk#:Rec#) _NextOfs _RecSize KeyL DatN ___iUnk1 ← 各位置に出力される項目の列見出し
____addr(Blk#:Rec#) _NextOfs _RecSize KeyL DatN ___iUnk1 0000EA70 0000 0005 00000218 00000192 0008 0009 00000000 ← レコードの具体例.デッドギャップが発生している(0x218-0x192=0x86 bytes) [Explorer] ChkSum: 0271 ← 中カッコ内はレジストリキー名、続いてチェックサムを表示している.対応する RGKN のレコードに格納されているチェックサムと比べてみると良い Hex: 45 78 70 6C 6F 72 65 72 ← キー名のダンプ.キー名に特殊な文字を使っていたり、文字化けを起こしている場合にもここで確認できる 続いてこのキーに含まれるレジストリデータが出力される Atr:0004 Un1:0000 Un2:FFFFFFFF NL:0008 VL:0004 ← レジストリデータの属性情報
FaultKey = DWORD:00000001 ← レジストリデータ名称とデータ実体.データ実体はデータ型に合わせ、レジストリファイル(*.reg)で書き出される形式に倣って出力される.一行に収まりきらなければ、行末に「...」と記して、そのデータのダンプはそこで中止する.Registr!p の目的はレジストリデータの採取ではなく、レジストリ全体の構造を知ることにあるからだ 以降、含まれるだけレジストリデータの情報が列挙される 同様に、存在する限りレジストリキーの情報も列挙される 一連の洗い出しの後に、レコード数が表示される Total: 1790 Record(s) ← レコード数 RGDB record <Empty> ← RGDB 空きレコード表示の開始見出し ____(Blk#)____Addr ____Size _NextOfs ← 各位置に出力される項目の列見出し.RGDB ブロック番号、ブロック内での開始オフセット、空きレコードサイズ、次の空きレコードへのブロック先頭からのオフセット. 以降、空きレコードのサイズと位置が列挙される 一連の洗い出しの後に、レコード数が表示される Total: 11 Record(s) ← 空きレコード数 |