範囲検索(既存の32ビット版「UsaMimi.exe」用)
概要と注意点
●基本操作■概要 開始アドレスと範囲サイズで指定したメモリエリア内で、数値や文字列の検索を行います。データの単純比較による通常検索及び、指定したメモリエリア内のデータを保存することで、データ変動箇所の検索を行うことも可能です。検索結果は、該当アドレスのリストとしてリストボックスに出力されます。 ■範囲検索(64Bit Mode)の使用について この範囲検索機能は、Windows 95/98/Meでの使用を想定した古いものです。通常検索・変動検索の「範囲」といった初期設定値も同Windows OSに合わせており、Windows 2000/XP以降で使用するならば「範囲」設定値を「40000000」などに変更する必要があります。また、64ビットの整数や浮動小数点数、UTF-8文字列の検索には対応していません。そのため、Windows 2000/XP以降では、大幅な改良を施した「範囲検索(64Bit Mode)」を使用して下さい。 ■使用不能時の対処 解析対象アプリケーションのバグによりデスクトップ・アプリケーション・ヒープが不足して当機能が使用不能になっている場合は、システムへの負荷を極力抑えて動作するよう設計された『スペシャルねこまんま57号』の検索機能を使用して下さい。 ■絞り込み検索 通常検索と変動検索ともに、前の検索結果がリストに残っている状態で新たに検索を行った場合は、自動的に絞り込みモードになります。もしも検索結果で該当数過大な場合は、検索条件を変更する操作を行ってから、新しい検索条件で絞り込み検索を行ってください。絞り込みモードで検索を行えば、現在記録されている検索結果の中からさらに新しい検索条件に該当するアドレスをリストアップします。また、検索結果は通常検索と変動検索で共有します。そのため、通常検索と変動検索のどちらを使っても検索結果を絞り込むことができます。絞り込み検索を別の条件でやり直したい場合は、[結果を元に戻す]ボタンを押すと、検索結果を一回前の検索時のものに戻します。 ■検索結果記録数 検索結果記録は100万件が上限です。該当件数が100万件を超えている場合は、検索目的のアドレスが、記録された検索結果に含まれない可能性があります。そのため、100万件から絞り込み検索を行っても検索目的のアドレスが見つからない場合は、検索条件あるいは検索開始アドレスや検索範囲サイズを変更して再試行されることをお奨めします。また、検索条件が1バイトデータや「FFFF」等で検索該当件数が100万件を超える場合は、変動検索でのアプローチも試行してみてください。他には、「グループ検索」機能を用いて関連するデータとグループにして検索することで、当検索機能では該当件数が100万件を超えるような1バイトのデータでも、そのアドレスを容易に絞り込んで探し出せるケースがあります。 ■検索所要時間 検索所要時間はマシンのスペック等に大きく依存します。検索処理は低スペックのパソコンでもなるべくフリーズはしないように処理させています。そのため、動作が停止しているように見えてもすぐに強制終了させずに、しばらく様子をみてください。 ■環境依存型変動アドレス PCゲーム及び家庭用ゲーム機等のエミュレータでは、アプリケーションがヒープから取得したメモリエリアにパラメータ等のデータを格納した場合、そのパラメータのアドレスはOSやメモリ実装容量に依存する環境依存型変動アドレスとなります。この場合、検索結果のアドレスを直接指定する改造コードを作成して公開しても、解析に用いた環境以外では大抵使用できません。そのため、このような環境依存型変動アドレスに対しては、当ソフトウェア用のポインタ型改造コードやデバッガ用改造コード等で対処してください。 |
■概要 通常検索では、検索対象となるメモリエリアと、数値や文字列といった検索条件を指定して検索を行います。 ■検索条件のオプション 通常検索では数値のほかに、"001122334455AABB"といった、いわゆるバイナリデータのバイト列を指定可能です。また、文字列検索は入力した文字列をASCIIとしてだけではなくUNICODEに変換して検索させることもできます。 |
■概要 変動検索では、まず検索対象となるメモリエリアの内容(バイナリデータ)を記録しておいて、その後、記録時のメモリエリアの内容と現在のメモリエリアの内容を比較することにより、変動あるいは不動箇所を検索します。 ■既知の不具合 メモリエリア境界を跨ぐケースに対処した予備バッファ(サイズ:0x1000)が原因で、初回検索結果に余計なヒットが含まれる不具合が発見されました。 絞込み検索で対処可能なため実害はほとんどありませんが、気になる方は「64Bitモード範囲検索」を使用して下さい。 ■検索範囲サイズ 変動検索の検索範囲サイズに指定上限はありませんが、指定値相応の比較バッファ用メモリ確保を行いますので注意して下さい。変動検索の検索・比較範囲はデフォルトで04000000hすなわち64MB相当となっています。この範囲を通常検索のデフォルトと同一にすると、10000000hすなわち256MBのメモリ確保を行うことになります。マシンスペックからみて過大な範囲設定(とメモリ確保)を行うと、システムや解析対象アプリケーションのパフォーマンスに影響を与える場合があります。 ■検索範囲の変更 『VMware』と当ソフトウェアを連携させてフルスクリーンのゲームを解析する場合や、目的のアドレスがDLLモジュール内にある特別なケース以外では、大抵の場合、変動検索の検索・比較開始アドレスと検索・比較範囲サイズはデフォルト設定で事足ります。しかし、例外として、目的のアドレスが0x04000000を超えるようなケースもありますので、変動検索で目的のアドレスが見つからない場合は、検索・比較開始アドレスか検索・比較範囲サイズを変更しながらアドレス0x10000000まで検索してみてください。 ■検索範囲の特定 各種ゲーム機のエミュレータでは、パラメータやフラグの格納アドレスが0x0F123450というように0x04000000を超えるケースが少なくありません。このようなケースでは、まず点数等の、通常検索で簡単に検索可能なアドレスを検索し、そのアドレスが含まれるメモリエリアをメニューの[移動]→[表示アドレスを指定]のメモリマップ表示機能で把握して、そのメモリエリア先頭アドレスとエリアサイズを変動検索の検索・比較開始アドレスと検索・比較範囲サイズに設定して検索すれば、簡単に目的のアドレスを探し出せることがあります。 ■Word(ワード)/DWord(ダブルワード)境界ベース 変動検索では[境界ベース]チェックボックスにチェックを入れると、検索単位サイズがWord・DWord・Floatの場合は検索をWord境界(アドレスが2の倍数)かDWord境界(アドレスが4の倍数)で行いますが、[境界ベース]のチェックを外すと1バイトごとに比較します。通常、検索対象となるパラメータやフラグの格納アドレスは、プロセスメモリ上のDWord境界に設定されるため、[境界ベース]のチェックを外す必要はありません。しかし、例外的にパラメータやフラグが配列の要素としてプロセスメモリ上に格納されている場合等には、[境界ベース]のチェックを外して1バイトごとに比較する必要があります。 ■実数の検索 変動検索の値変動と値不動での絞り込み検索は、対象となるパラメータの値が実数(浮動小数点数)ベースでプロセスメモリ上に格納されているケースにも有効です。また、アプリケーション上での表示値にメモリ上の格納値の整数倍を用いているケースにも対処できます。 ■変動検索を行うタイミング 変動検索を効率よく行うために、変動検索を行うタイミングに注意して下さい。例えば検索目的のフラグが変化する直前にメモリ確保・記録で比較用データを作成し、同フラグが変化した直後に変動検索を行えば、検索結果として出力される変動該当箇所は最小限に抑えられ、効率的な変動検索が可能になります。また、対象アプリケーションにおいては変動該当箇所を増加させる不必要な操作を極力避けるようにして下さい。 ■変動検索での最初の絞り込み 変動検索時には、プログラムの実行に伴い常に内容が変化するスタック領域のアドレスが多々ヒットします。そのため、変動検索での最初の絞り込みとして、まず対象アプリケーションのウィンドウをアクティブ(最前面)にして何も操作をせず(スタック内容の変動は生じさせる)、次に当範囲検索ダイアログをアクティブにしてから、[値不動]で絞り込みを行うと、スタック領域分のヒットを多く取り除くことが可能になります。 |