さちこ(ホームセンター大好き) 説明書 ===操作方法=== 本ツールを起動してから初回検索までの操作箇所は、だいたい「ウィンドウ左側を上から下へ」という感じです。 ウィンドウ左側 ■「プロセス選択」 メモリ検索の対象にするプロセスを選びます。 リストの中身をダブルクリックで選択しても良いですし、シングルクリックなどで選択してからOKを押しても良いです。 新たにプロセスを選択すると、それまでの検索結果は無効になります。 なお、64ビットOSで動かした場合、プロセスリストの横に「ALL」というチェックボックスがあると思います。 チェックがOFFの状態では、32ビットプロセスしか表示されません。64ビットプロセスも表示したい場合は、チェックをONにして下さい。 ■「検索開始アドレス」「検索終了アドレス」 メモリ検索およびターゲットメモリ記憶の対象にするアドレスを指定します。 16進数で入力します。 入力した後にフォーカスを移動すると、適当に補正されることがあります。 対象となるメモリは、読み書き可能な領域のみです。書き込み不可の領域は対象外です。 ■「ウィンドウタイトルを↑に変更」 検索動作とは直接関係ありません。ウィンドウタイトルを変更します。 0文字にすることも、空白文字にすることもできます。 多重起動時にそれぞれのウィンドウを区別するために使用しても良いですし、ボタンは押さずに単なるメモ欄として使用しても良いでしょう。 ■「Search」タブ あまり凝った検索処理をするのでなければ、「Exec」タブではなく「Search」タブを使うほうが楽です。 trueまたはfalseをreturnする処理を、検索条件入力欄に記述して、「検索」(または「絞り込み検索」)ボタンを押して下さい。 初期状態では、検索条件入力欄に return (CPEEK4(AD) == 497) と記述されています。 これは、4バイトの整数を検索する場合の記述です。 「(本ツールのキャッシュメモリ経由で該当アドレスからプロセスメモリを4バイト読み出して)その内容を4バイトの整数として解釈して、497と等しければ、(そのアドレスを検索結果とする)」の意味です。 2バイト整数で100以上200以下であれば return (CPEEK2(AD) >= 100) and (CPEEK2(AD) <= 200) ターゲットメモリ記憶時から4増えた値の場合は return (CPEEK4(AD) == MPEEK4(AD)+4) など、色々できます。 偶数アドレスだけを検索結果にしたい場合は if (bit32.band(AD,1) == 1) then return false end return (CPEEK2(AD) == 999) などとすることも可能ですが、処理速度の面では「Exec」タブを使用して2バイトごとのループ処理にしたほうが良いでしょう。 また、ここで挙げた例では、読み出しが失敗した場合については考慮していません。 "SachikoTypeC_Lua.txt"や"SachikoTypeC_Lua_Sample.txt"も参照して下さい。 検索中は一切の操作ができません。検索中止もできません。 ■「Exec」タブ 「Search」タブでは、検索開始アドレスから検索終了アドレスまでの読み書き可能領域を1バイトずつ処理します。 ・偶数アドレスだけを調べたい ・読み取り可で書き込み不可の領域も調べたい などの場合は、「Exec」タブを使用して下さい。 ただし、検索条件の記述だけではなく、Luaで実行する内容を丸ごと記述する必要があります。 また、検索目的ではなく、単純なプロセスメモリダンプや、プロセスメモリに関係なくLuaスクリプトのテスト実行環境として使うことも可能です。 "SachikoTypeC_Lua.txt"や"SachikoTypeC_Lua_Sample.txt"も参照して下さい。 何らかの処理結果を表示したい場合は、変数 RET に代入して下さい。ただし、何らかのエラーが発生した場合は、RETの内容ではなくエラーの内容が表示されます。 実行中は一切の操作ができません。実行中止もできません。 ■「ターゲットメモリ(再)記憶」 ターゲットプロセスの現在のメモリの内容を取得して、後で検索の比較条件として使用する為に、ツール内のメモリに保存しておきます。 「検索開始アドレス」「検索終了アドレス」の範囲内のアドレスが対象です。 対象となるメモリは、読み書き可能な領域のみです。書き込み不可の領域は対象外です。 消費メモリ量は、ターゲットプロセスの状態に依存します。 また、解放される前に再びこのボタンを押すと、古い保存内容は解放されます。 ■「ターゲットメモリ記憶領域解放」 「ターゲットメモリ(再)記憶」で保存しておいたメモリを解放します。 ウィンドウ右側 ■「検索結果」 検索結果のアドレス一覧が表示されます。 内部で記憶するのは最大1048576件、表示するのは最大30000件です。 アドレスをクリックすると、そのアドレス・そのアドレスの記憶時の値・そのアドレスの現在の値が「簡易書き込み機能」に反映されます。また、ウィンドウ右下の「値表示欄」にも反映されます。 ■「1バイト/2バイト/4バイト」ドロップダウンボックス 「簡易書き込み機能」のデータサイズを指定します。 ■「簡易書き込み機能」グループ 「アドレス」は16進数で入力します。 「現在の値」に入力できる値は整数のみです。先頭に0xを付けると、16進数で入力できます。 「リロード」を押すと、そのアドレスの記憶時の値・そのアドレスの現在の値が表示されます。記憶されていない場合や、現在のメモリから読み取りできなかった場合にはそれぞれの値の欄に何も表示しません。エラーは出しません。 また、「アドレス」に入力後にフォーカスを移動しても、「リロード」を押すのと同様の結果になります。 「書き込み」を押すと、アドレスに「現在の値」を書き込みます。現在の値の入力値がデータ型の範囲を超える場合でもエラーは出しません。適当に処理して書き込んでしまいます。書き込み自体ができなかった場合にはエラーを出します。 表示内容の自動更新機能はありません。 ■「値表示欄」 検索結果のアドレスリストまたは簡易書き込み機能のアドレスの内容を表示します。 現在の値と記憶時の値それぞれについて、1バイト整数・2バイト整数・4バイト整数として解釈した場合の10進表記と、16進ダンプを4バイト分表示します。 読み取り専用で書き込み不可のアドレスでも、表示します。読み取りできなかった部分に関しては表示しません。 表示内容の自動更新機能はありません。 ===その他=== ■入力欄や表示欄の大きさ SearchやExecの入力欄や表示欄は、ウィンドウサイズを変更するとそれに応じて大きさが変更されます。 また、「実行コード入力欄」と「RETの内容(またはエラーの内容)表示欄」の境界線は上下に動かすことが可能です。 ■仕様、制限事項 lua-5.2.1.tar.gz のソースを組み込んでいます。 検索処理には時間がかかります。入力内容によっては、莫大な時間がかかる可能性があります。 検索中や実行中は一切の操作ができません。中止もできません。 ■「検索開始アドレス」「検索終了アドレス」 初期値のアドレスで見つからない場合は検索終了アドレスを大きくしたり、ターゲットプロセスのメモリマップがある程度判明している場合は検索範囲をそれに合わせて狭くしたりしてみて下さい。 ■多重起動可能 このツールは多重起動を制限していません。 複数のパラメータを同時に独立して検索したい場合は、多重起動で対応して下さい。 ただし、メモリの消費量には注意して下さい。 多重起動したウィンドウそれぞれが、「ターゲットメモリ(再)記憶」の内容および「検索結果」を独自に保持しますので ■注意点 途中でターゲットプロセスが終了したときの動作は未確認です。 メモリが足りない時の動作は未確認です。 現状の実装では、メモリを無駄遣いしています。 Vista以降で使う場合、ターゲットプロセスによっては、本ツールを「管理者として実行」する必要があります。 Vista以降で使う場合、本ツールをProgram Filesフォルダ以下やWindowsフォルダ以下などに置いた時の動作は未確認です。 「互換モードでこのプログラムを実行する」を利用して動かした時の動作は未確認です。 ■その他 ツールの名称は、実在の人物の名前や行動とは一切関係ありません。物語の登場人物とも関係ありません。 作者の名称は、実在のゲーム(の登場キャラクター)とは関係あります。 ツールの紹介文や説明書には登録商標等の記述も含まれますが、明記するのは面倒なので省略します。 Luaの著作権やライセンスの表示は "Lua_License.txt"(UTF-8) に独立させてあります。 ■配布場所(2012年09月09日現在) http://milfa.akari-house.net/sachiko_c.html (ツールの配布場所) http://milfa.akari-house.net/ (トップページ) ■更新履歴 ・2012/09/09 初公開