操作上の基本注意事項
操作上の基本注意事項 目次
●プロセスの選択●エディットボックスでの数値入力
●エディットボックスでの入力字数
●検索・書き込み・置換での特殊なデータ入力
●改造コード実行・置換実行の自動更新間隔について
●プロセスメモリ上のメモリエリアのアクセス属性
●選択アドレス
●各種操作用ダイアログの重複表示
●栞(しおり)情報の保持
●テキストファイルでのインポートやエクスポート
●UTF-8形式の文字列の処理
●ウィンドウの位置とサイズを復元・最小化状態での終了
プロセスの選択
当ソフトウェアはプロセスメモリエディタです。プロセスメモリエディタは、実行されているアプリケーションのみ操作可能ですので、解析対象ソフトウェアを起動後に当ソフトウェアを起動してプロセスを選択してください。なお、当ソフトウェアを解析対象ソフトウェアよりも先に起動した場合は、解析対象ソフトウェアを起動後に、当ソフトウェアのプロセス選択ダイアログで[リスト更新]ボタンを押してプロセスのリストを再取得してください。 32ビット版のソフトウェアのプロセスを解析する場合は32ビット版の「UsaMimi.exe」あるいは新型32ビット版の「UsaMimi32.exe」を起動して使用し、64ビット版のソフトウェアのプロセスを解析する場合は64ビット版の「UsaMimi64.exe」を起動して使用します(詳細)。32ビット版のソフトウェアのプロセスを解析するために64ビット版の「UsaMimi64.exe」を起動する必要はありません。また、同梱のPEエディタ「UMPE.exe」や「UMPE64.exe」を使って解析するプロセスを選択する必要もありません。Windows 7の64ビット版など、64ビット版OS上では、「UsaMimi.exe」や「UsaMimi32.exe」でプロセス一覧で表示されるのは32ビット版のソフトウェアのプロセスのみです。ただし、「UsaMimi.exe」では、ポップアップメニューの「PID総当たりでプロセスリスト作成」により、あるいは実行環境によっては、本来表示できないプロセスが取得できることもあります。基本的に32ビット版の「UsaMimi.exe」と「UsaMimi32.exe」では64ビットのプロセスを操作できないため、「UsaMimi.exe」や「UsaMimi32.exe」が表示するプロセス一覧からは64ビットのプロセスを選択しないでください。 当ソフトウェアでは、コマンドラインオプションを使って、対象プロセスを自動的に選択させることができます。 「C:\APP\UsaMimi\UsaMimi.exe /UsaTest2.EXE」といった形式で解析対象プロセスの実行可能ファイル名を指定することで、当ソフトウェア起動時に該当プロセスを自動で選択するようにしました。複数のプロセスで、指定した名前の実行可能ファイルが使われている場合は、最初に認識したプロセスを解析対象プロセスとして自動で選択します。指定する実行可能ファイル名の判断時には大文字・小文字を区別しません。指定する実行可能ファイル名がスペースを含んでいる場合は、API関数によるコマンドラインオプション取得が不正確になるため、実行ファイル名を「/"コピー ~ UsaTest2.EXE"」というように""でくくってください。 この機能は、同じ解析対象ソフトウェアを繰り返し起動するケースや、他のプログラム解析ツールと当ソフトウェアとの連携を想定して実装しました。いったんこの機能で解析対象プロセスを指定して当ソフトウェアを起動した後は、「Ctrl+O」キー押し下げだけで指定した実行可能ファイル名のプロセスを再オープンします。 基本的に、コマンドラインオプションの指定は、ショートカットあるいはランチャーで行います。また、以下のような内容のBATファイルを作成することでも指定可能です。 例:「start.bat」ファイルの記述例(テキストファイルとして記述する) start E:\APP\UsaMimi\UsaTest2.EXE start E:\APP\UsaMimi\UsaMimi.exe /UsaTest2.EXE 解析対象アプリケーションがフルスクリーンのゲームの場合の対処は、[基礎用語 フルスクリーン]を参考にしてください。 解析対象ゲームがJAVAやFLASHで作成されている場合は、そのゲームを実行する、インターネット・エクスプローラ(iexplore.exe)等のブラウザやFLASH専用プレーヤーのプロセスを解析対象プロセスに指定します。JAVAの場合、実行ファイル「javaw.exe」を対象プロセスとするならば、対象が32ビット版の「javaw.exe」か64ビット版の「javaw.exe」かに応じて、当ソフトウェアも「UsaMimi.exe」と「UsaMimi64.exe」を使い分けてください。 解析対象ゲームが16ビットアプリケーションの場合、Windows2000/XPなどのNT系OS上では仮想DOSマシン(VDM)で実行されます。そのため、プロセスリストでは仮想DOSマシンの実体である「ntvdm.exe」を選択してください。 実行環境がWindows Vista以降のOSならば、OSによるセキュリティ上の制限のため、当ソフトウェアを管理者権限で起動しないと全てのプロセスを表示できません。Windows Vista以降における管理者権限での起動方法については、「Windows Vista以降での使用について」を参照してください。 32ビット版の「UsaMimi.exe」で、もしも解析対象プロセスが起動されているにも関わらず、プロセスリストを更新しても表示されない場合は、まずポップアップメニューの「PID総当たりでプロセスリスト作成」あるいは「パフォーマンスデータでプロセスリスト作成」で解析対象プロセスが表示・選択可能か試してください。それでも解析対象プロセスが表示されない場合は、プロセスリスト取得用API関数がフックされている可能性があるため、「Kernel32.DLL/Ntdll.DLLモジュール書き替えによるAPIフックを解除」や「SDT(Service Descriptor Table)書き替えによるAPIフックを解除」でAPIフックの解除を試行してみて下さい。また、 「キーフック」機能を使用して「アクティブウィンドウを持つプロセス」を「プロセス取得」で特定しプロセスリストに追加・選択する方法もあります。 当ソフトウェアをスペースキーを押した状態で起動すると、プロセスリストは表示しません。 |
エディットボックスでの数値入力
数値を入力するエディットボックスで、進数を指定していない場合は、入力値を以下のように認識します。また、数値は必ず半角で入力して下さい。 ・数値の前に「0x」をつければ16進数 ・数値をそのまま入力すれば10進数 ・数値の前に「0」をつければ8進数 「16進数」という指定がある場合は、「0x」は不要です。基本的に、プロセスメモリ上のアドレスやメモリエリア範囲サイズを設定する場合は16進数で行います。 |
エディットボックスでの入力字数
一部の数値入力用エディットボックスでは、誤入力防止のため、あえて入力字数を制限しています。そのため、入力字数上限まで入力されている場合は、既に表示されている文字を入力する字数分削除する必要があります。 |
検索・書き込み・置換での特殊なデータ入力
ここで解説している、特殊なデータ入力に対応しているのは以下の機能です。 ・「通常検索」 ・「範囲検索(64Bit Mode)」内の「通常検索」 ・「リージョン検索」 ・「置換」 ・「選択アドレスへの直接書き込み・選択範囲の一括書き換え」 ・「10/16進数表形式入出力」 ・「固定化書き換え」 ・「構造体編集」 (注):「範囲検索(64Bit Mode)」や「リージョン検索」など、機能によっては、以下の「入力チェック」ボタンはありません。また、文字列の改行や「文字列終端にNULLを付加」には対応していません(バイト列使用で対処可能)。 まず、書き込むデータの種類(数値のサイズや文字コードなど)の指定に間違いがないかを十分に確認して下さい。たとえば数値指定に問題があった場合に、変換不可だから数値ゼロを意図して指定したと認識するケースがありえます。必要に応じて入力したデータがデータの種類に対して問題ないか否かを、「入力チェック」ボタンで確認することもできます。数値やバイナリデータ(ビット列・バイト列)は半角で入力します。 書き込むデータが整数ならば、整数値は10進数での入力に加え、"0x"で16進数を指定することもできます。ただし32ビット版「UsaMimi.exe」では、QWordを16進数で指定した場合は0x7FFFFFFFFFFFFFFF以上の値は正確に認識されませんので注意して下さい。また、負の値を指定する場合は必ず「符号あり」にチェックを入れて下さい。なお、同梱する多倍長整数演算・進数変換ソフト 「UMECappend」(同梱UMECappend.exe)が、64ビット以上の整数の演算や進数変換およびバイト列表示にも対応していますので、「64ビット以上の整数を16進バイト列化して検索や書き換え」など、必要に応じて併用されることをお勧めします。 整数・実数ともに、数値1つだけの入力に加え、半角スペースで数値を区切ることで、複数の数値を連続したもの(シーケンス)として一度に入力することができます。不要なスペースや改行があると数値の変換エラーが生じますので注意して下さい。書き込むデータが実数ならば小数点以下の指定も可能です。なお、指数を用いた実数の数値指定には対応していません。また、実数の16進入力は誤入力の可能性を考慮してエラーと判断するようにしました。 文字列を入力する場合は、必要に応じて「文字列終端にNULLを付加」にチェックを入れて下さい。入力文字列には改行を使用することもできます。なお、文字列を""で囲む必要はありません。 ビット列やバイト列での入力は、1バイト単位のバイナリデータに変換して検索・置換を行います。入力内容に1バイト分に満たないデータがある場合は、その部分は無視されます。 1バイト単位のバイナリデータへの変換にあたり、入力されたビット列文字列のうち、"1"と"0"以外の文字は無視します。 また、入力されたバイト列文字列のうち、16進数値の表示に使用する文字以外の文字は無視します。 ●DWordの整数入力例 0x12 100 0x01f4 5000 1234567 ●Doubleの実数入力例 1 10.25 1000000.258 ●ビット列入力例 1111_0000_1010_0000 ●バイト列入力例 7F88FF_FFFFEF_00000F |
改造コード実行・置換実行の自動更新間隔について
改造コードと置換の自動更新間隔は、本来秒数を入力するよう設定していますが、"A"(この場合は「A」のみ入力、「"」は入力不要)などの特殊な文字を入力することで0.1~0.9秒を指定できるようにしました。また、未入力や入力文字が認識できない場合は、0.5秒間隔で更新するようにしています。 ただし、1秒未満といった高頻度のメモリ書き替え等は、操作対象プロセスのパフォーマンス等に悪影響を及ぼす可能性があります。プログラム書き替えを用いた、プログラム側によるデータ更新の無効化等、代替策を検討されることをお奨めします。 ●更新間隔入力例と更新間隔(実際の入力は半角の数字または下記アルファベットのみ、「"」は入力不要) "0" = 0.1秒 "A" = 0.2秒 "B" = 0.3秒 "C" = 0.4秒 "D" = 0.5秒 "E" = 0.6秒 "F" = 0.7秒 "G" = 0.8秒 "H" = 0.9秒 "I" = 1分 "J" = 1時間 |
プロセスメモリ上のメモリエリアのアクセス属性
プロセスメモリ上の各メモリエリアには、「読み取り」「書き込み」「実行」「書き込みコピー」の組み合わせによるアクセス属性が設定されています。このアクセス属性で書き込み属性がない場合は、プロセスメモリへ書き込みができません。ただし、実行属性により、書き込み可能になるケースもあります。 なお、アクセス属性はメニューの[編集]→[指定メモリエリアのアクセス属性変更]で変更可能です(新型32ビット版「UsaMimi32.exe」と64ビット版「UsaMimi64.exe」ではメニューの「デバッグ」→「メモリ領域の確保とアクセス属性変更」 )。また、同様の操作を改造コードの[アクセス属性変更型改造コード]でも行うことが可能です(UsaMimi.exeのみ)。利便性向上のため、新型32ビット版「UsaMimi32.exe」と64ビット版「UsaMimi64.exe」では、書き込みのアクセス属性が無くても強制的に書き込めるようにしています。 |
||
選択アドレスを含むメモリエリアのアクセス属性は、以下の記号でステータスバー右端に表示します。また、アクセス属性が読み書き可能な場合はダンプ表示ウィンドウでバイナリデータを黒色で表示し、同様に書き込み属性がない場合は緑色、アクセス不能な場合は赤色で表示します。 E:実行 R:読み取り W:書き込み C:書き込みコピー |
選択アドレス
通常検索や文字列抽出などの機能では、現在の選択アドレスをベースに処理を行います。ダンプ表示ウィンドウの表示アドレスと選択アドレスを混同しないよう注意してください。また、アドレスが選択されていない場合は、アプリケーション最小有効アドレスを選択アドレスの代わりに使用します。 現在の選択アドレスはステータスバーに表示されます。 アドレスの選択は、バイナリデータ表示部上だけでなく、バイナリデータ対応テキスト(ASCII)表示部上でも可能です。 |
各種操作用ダイアログの重複表示
操作の安全性確保のため、検索用ダイアログ等の各種操作用ダイアログは、同じダイアログを複数表示することはできません。また、一部のダイアログは、すでに表示されている場合にさらに同じダイアログを開こうとすると、元のダイアログを閉じるようにしています。 |
栞(しおり)情報の保持
プロセスメモリ上で設定された栞のアドレス情報は、当ソフトウェアが終了するまで保持します。そのため、操作対象プロセスが終了し、全てのダンプ表示ウィンドウを閉じた後に、新たに選択された操作対象プロセスに栞が引き継がれます。この仕様は、対象プロセスの切り替えを想定したものです。また、「選択アドレスへの直接書き込み・選択範囲の一括書き換え」の対象アドレスも同様に保持されます。 |
テキストファイルでのインポートやエクスポート
32ビット版の「UsaMimi.exe」では、Windows
95といった旧OSとの互換性保持の理由により、テキストファイルでのインポートやエクスポートはWindows
ANSI形式のテキストとして行います(新型32ビット版と64ビット版ではUnicode形式)。そのため、インポート操作で、UnicodeやUTF-8形式で保存されたテキストファイルを読み込ませると誤作動を起こします。もし、改造コードを含むテキストファイルなどで正常にインポートできない場合は、そのテキストファイルをいったんテキストエディタでオープンしてから、文字列のコピーと貼り付けで取り込んでください。あるいは、同テキストファイルをWindows
ANSI形式で保存し直してからインポートしてください。 以下の機能でテキストファイルのインポートを行います。 ・改造コード実行 ・特定アドレス格納値の状況推移を表示 ・パラサイトルーチン作成 |
UTF-8形式の文字列の処理
Windows 95では、OS本来の仕様としてUTF-8形式の文字列を処理できません。そのため、Windows
95上では、当ソフトウェアが行うUTF-8形式の文字列に対する各種処理は失敗します。 なお、「The Microsoft Layer for Unicode (MSLU)」を導入すればWindows 95上でもUTF-8形式の文字列を処理可能になります。しかし、Windows 95上では、通常UTF-8形式の文字列は使用されません。 |
ウィンドウの位置とサイズを復元・最小化状態での終了
当ソフトウェアの正常終了時には、その時点でのウィンドウの位置とサイズを記録し、次の起動時にそのウィンドウの位置とサイズを復元します。ただし、正常終了時にウィンドウの左上端がどのモニターにも表示されない異常な位置にあった場合は、次の起動時にはウィンドウサイズの復元は行いません。 当ソフトウェアのウィンドウを最小化した状態で終了すると、その最小化した状態のウィンドウ情報が保存されるため、次の起動時には最小化状態で起動します。最小化状態からウィンドウのサイズを元に戻す操作は、タスクバー上での右クリックから行うことができます。 |