〜はじめに〜やっと、プログラム改造です。第1回で逆アセンブラやプロセスエディタを紹介したので、いきなりそれらを使っても良いのですが 今回はプログラムで使われているメッセージを書き替えるという基礎的な内容で行きたいと思います。 プログラムで使われているメッセージ実行ファイルをバイナリエディタで覗くと、アスキーダンプ(バイナリエディタの右側)に、「バージョン情報」とか「**が開けません」のような文字列が見られると思います。 実行時に表示されているメッセージはここを参照しているものですので、もちろん、 この部分を書き替えてしまえば、任意のメッセージを表示させることが可能になります。 …それだけのことです(笑 今回のターゲットウインドウズには、ゲームとしてマインスイーパというのが付属しています。(OEM版Win98だとカスタムインストールしないと入りませんけど…) WINDOWSフォルダに WINMINE.EXE というファイルがあれば当たりですんで、 それをどこか別フォルダにコピーしてください。 (無くても「コントロールパネル→アプリケーションの追加と削除」でインストールできます) バイナリエディタで開いたら、アスキーダンプにそれらしい文字列が表示されるまでスクロールします。 ちなみに、作成時刻が98年06月12日、データサイズが24,251バイトの場合、 オフセット 00005746以降に見つかります。 では、それを任意のメッセージに書き替えてしまいましょう。 バイナリエディタStiringを使えば、アスキーダンプ部分に直接入力できますのでオススメです。 ただし、「絶対に、元の文字数を越えないように」気をつけましょう。 増えた分だけ後のメッセージの位置がズレて、データが壊れてしまいます。 あと、元の文字数よりも少ないメッセージを書き込むのなら、余った部分を 00 に書き替えてください。 (代わりにスペースで埋める…という手もOKです) …というわけで、その方法を使って書き替えた結果が以下の画像です。 ま、こーいうこともできる〜ということで… さいごにおっしゃ、この知識の応用でゲームのキャラの台詞を書き替え〜〜…なんてことは、滅多にうまくいきません(苦笑 この方法では、必ずメッセージがプログラムに格納されている必要があります。 あくまで「パラメータと同じく、プログラムも書き替えることができる」という考え方を 覚えるために紹介したもので、実践ではあまり使わないのであしからず〜です。 ってわけで、次回から逆アセンブラを使った内容を紹介してゆきます。 ではでは。 >>NEXT STEP |