講座01 〜プログラム改造とは? 〜

〜はじめに〜

最近はゲーム改造もメジャーとなったもので、こんなコンテンツ作らなくても、
どこからでも同様の情報が手に入るようになりました(時代ですねぇ…)。
でもまぁ、もともと情報公開が目的ですんで、気にせず書いてみますです♪

〜「パラメータ改造」と「プログラム改造」〜

改造コード雑誌の売り文句を見ると、
「いきなりレベル99に!」とか 「全キャラパラメータMAX!!」
のようなことが、でかでかと書いていたりします。
パラメータ改造を使えば、気軽に能力値を変更できるので便利ですね。

で、もしプログラム改造に対し、同様の売り文句をつけるとすると…
「激遅メッセージを撃沈。ノーウェイト化!!」
「開発者気分を堪能。デバッグモード出現!!」
といった感じでしょうか。
つまり、製作者が考えたとおりのストーリーを辿るはずの流れに細工を仕掛け、
自分の思うがままにプログラムを動作させる…というのが目的なわけです。

何が出来るのか?

上記でも例を挙げましたが、当然ながらこの程度では終わりません。
仮に、加算するというプログラムを減算するに書き替えたとすると、イベントをひっくり返すことができます。
敵を倒すと所持金が減ったり、買い物をすると所持金が増える〜…といった感じですね。

結局、もともとのプログラムを利用するという点に変わりはありませんが、パラメータ改造より
柔軟性に関して優れている〜というのが利点です。

必要なものは?

データを書き替える方法として、バイナリエディタによるファイルの編集や、
プロセスエディタによるメモリ空間の編集などの方法があります。
そして、プログラム解析には逆アセンブラを必要とします。

逆アセンブラとは?

一般的に、市販されているゲームなどのプログラムは、「VisualC++」などの開発用ソフトウェアで
作られており、最終的に完成されたものがユーザーへ販売されます。
ですが、プログラムの元であるソースファイルまで同封するなんてことは滅多にありません。
(たま〜〜に例外もありますが…)

となれば、我々の手元にあるのは完成された実行ファイルだけですが、完全に機械語…
「普通、人には理解できない言葉」という状態になっています。
これをひとまず「人に分かる言葉にする」ためにあるソフトウェアが逆アセンブラです。
使用すると、文字通りアセンブラ言語で記述されたリストを出力することができます。

改造に必要な「ツール」を手に入れる

バイナリエディタは数多くの方が公開されており、VECTORに行けば、無難なものをゲットできます。
シェアウェア(もしくは市販品)ならば、NON-STANDARDで改造に特化されたものが手に入ります。
フリーウェアならば、DDS2's PAGEで、複雑なデータに特化したものが手に入ります。

プロセスエディタは、公開している人がかなり少ないです。
有名どころであれば、上記でも紹介したNON-STANDARDで体験版が公開されているExSTANDや、
デバッグ能力を大幅に拡張したDBxSTAND(書店で購入可能)などがあります。
とりあえず自分はこれを使っていますが、フリーウェアのものを公開している方も居ますので、
自分なりに使いやすいものを探してみてくださいな。

そして逆アセンブラですが、これまた数が少ないです。
自分は基本的に、Disassemという海外製の逆アセンブラを使っていますが、たま〜〜に出力ミスを
起こすことがあるので、その時には国内産のDiswinという逆アセンブラを使っています。
ま、これも使いやすいと思えるものを見つけましょう。

〜さいごに〜

今回は紹介に留めておきましたが、次回からは実践に入ります。
それまでに、ツールを手に入れておくことをオススメします。

>>NEXT STEP