ゲーム改造中級者講座

改造コードを見つけるプロセス

改造コードを見つけるにはそれに対応したツールを使う必要があります。
あとになってくれば分かりますがゲーム機などにあるメモリの内容を保存できるだけの記憶領域が必要になるからです。
また、改造コードを見つける為にはある程度、コンピュータの知識も必要とします。
このページでは改造コードを見つける為に必要な知識とそのプロセスを説明していきます。

 コンピュータ(ゲーム機やPC)の仕組み

コンピュータやゲーム機はCD-ROMやHDDから直接データを読み込んでゲーム画面にしているわけではなくて、データをメモリに一旦データを読み込んでからCPUで処理しています。
このため、現在画面に映し出されているゲームのデータはすべてメモリ上に存在するといえます。

  • 経験値、レベルなどのステータス
  • 今どこを歩いているかなどの位置情報
  • キャラクターがどのような状態にあるか
  • 画面表示のための画像情報

など、多様な情報が詰まっています。

 メモリ

ここでちょっとメモリの話を。
メモリはデータを格納できる揮発性の記憶媒体です。
一般的にハードディスクやCD-ROMよりも高速にデータの読み書きができるため、CPUがデータのやりとりをするのはメモリとなります。
例えばゲームの画面が切り替わるときなどに「Now Loading...」なんて表示されることがありますが、これは次のゲーム画面などを構成するのに必要なデータをCD-ROMなどからメモリに書き出しているのです。
メモリは高速にアクセスできるので、メモリに書き出したデータとCPUだけで処理ができればゲームはストレス無く動作します。

 じゃあ、メモリの内容が書き換えられれば…

と考えた人がいたんですね。どこかに。
先ほども書きましたがメモリは揮発性の記憶媒体です。
このため今メモリに展開されているデータは書き換え可能なのです。
そうやって開発されたのがPARやX-Tなどの改造ツールといわれるものなのです。

 どこにどんなデータがあるか?

メモリでもなんでもそうですが、デジタルデータを記憶する記憶媒体(HDDやCD-ROMなど)は必ずアドレスが存在します。
そしてデータそのものは必ずアドレスと組になって存在しています。
そういう風に格納されていないと、いざデータを取りにいくときにどこにどういうデータが格納されているか分からなくなってしまうからです。

 データがある場所はいつも同じなのか?

データはよほど頻繁に変わる必要性のあるデータでない限り、ゲーム中を通してほとんど同じところに存在しています。

例えば経験値などのデータのアドレスが頻繁に変わるようなゲームを作ろうとするとアドレスを変えるためのプログラムを作らねばなりません。
また、そのデータを読み取ろうとする側はそのアドレスを知る為のプログラムを通してアドレスを取得してからデータを取得しなくてはなりません。

プログラムはそもそも無駄を省いた作りにしていくのが普通です。
なぜかといえば、今ゲームしているその画面を表示している中で1秒間に想像を絶する回数の処理が行われているからです。
例え大したことのない処理であってもそれが数千回も行われれば目に見えて処理速度が遅くなります。
ゲームでストレスを感じるとユーザーが離れ、ひいてはゲームが売れなくなります。

 では、どうやって探そうか…


数値サーチ

経験値のような簡単な数値データの場合、探すのは非常に簡単です。

  1. 経験値が表示されているときなどにメモリ内にその経験値とデータ(値)をもつアドレスを抽出します。
  2. 1回戦闘などをはさみ経験値を変化させます。
  3. 先ほど抽出したアドレスの中から現在の値と同じデータをもつアドレスを抽出します。

ゲーム中に同じ値変化をする場所はいくつもあるので、これを何度か繰り返して振るいにかけていくとおのずと経験値を格納しているアドレスが導き出されます。

違いサーチ

今、キャラクターが地上にいるか空中にいるかなどの状態は数値とするのが難しいです。
このような場合、以下のように違いがある部分をすべてサーチしていきます。

  1. 現時点のメモリの内容をすべて抽出します。
  2. ゲーム中で状態を変化させます。
  3. 値が変化したアドレスを抽出します。
  4. またゲーム中で状態を変化させます。
  5. 前回から値が変化したアドレスを抽出します。

この3〜5を繰り返すことによって振るいにかけていきます。

改造コードを探すにはある状態のメモリのアドレスを抜き出し、探したいと思う部分の状態を変化させ、またメモリサーチというのを繰り返して行います。

芋づるサーチ

でも、これとは別にもうひとつの探し方もあります。
例えばRPGなどのステータスで、

  • 知恵
  • 敏捷性
  • 器用さ

などと並んでいた場合、これらのステータスのアドレスは隣り合っている可能性が高いです。
このためまず「力」のアドレスを探し値を変化させ、隣のアドレスの値も変化させると「知恵」も変化しているということが多々あります。

これはプログラム経験のある方はある程度分かるかと思いますが、キャラクターのデータなどは構造体やクラスになっていることがほとんどです。
特に複数のキャラクターが操作対象キャラクターになるRPGなどだとこのようなデータはほぼ間違いなく構造体の配列(やクラスの配列)になってます。
ですので、特にRPGなどの場合は見つかった値から隣などを変化させていくとサーチしなくてはならない回数を減らすことができたりします。

 PCゲームでもできますよ

PCのゲームだともっと簡単にこれらのことができます。
バイナリエディタというソフトが世の中にはたくさんあります。
このなかで、メモリ上のバイナリデータを参照できるバイナリエディタも存在します。
バイナリエディタには通常検索機能がありますし、メモリを書き換える機能もあります。

改造ツールのようなツールが無くても上記のようなバイナリエディタをフリーウェアで探すことができれば、PCゲームでの改造ツールの代わりになるのです。

 ネットワークゲームではできない?

ネットワークゲームでは上記までの改造はほとんどできないものと思ってください。
ネットワークゲームには必ずといっていいほどサーバーが存在します。
ゲームは常にサーバにあるデータと今手元にあるデータが正しい状態にあるかをチェックしています。
このためメモリ上のデータを改ざんした場合は管理会社に見つかりアカウント剥奪などの措置がとられますし、そもそも約款などに禁止事項として記載されています。
さらにネットワークゲーム上での改造は他のユーザーに迷惑がかかるのでマナー面からもおすすめできません。

このページに対するコメント


  • 改造ツールは、どのようにして、手に入れるのですか - お願い (2004年12月15日 21時13分29秒)
  • PSのものなどであれば大手家電量販店などにも置いています。 - TAKE2 (2004年12月16日 20時15分08秒)
  • 「数値サーチ」に「アドレスを抽出」とありますが、どうやってやればよいのでしょうか? - みく (2005年01月20日 17時56分22秒)
  • サーチ機能のある改造ツールであれば説明書にやり方は載っていると思います。 - TAKE2 (2005年01月21日 18時08分51秒)
  • サーチ機能が無いものの場合は諦めて、雑誌やWEBに載るコードを使ってください。 - TAKE2 (2005年01月21日 18時10分13秒)
  • ゲームデータ−を改造したソフトは通信できるの - ???? (2005年09月21日 19時00分49秒)
  • どのゲームのことを言っているか分かりませんが、通常ネットワークゲームではプレイヤーの情報はサーバ側に保存されます。サーバは通常堅固なセキュリティに守られているので容易にゲームデータを改造することはできません。ってそういうことをやると「不正アクセス防止法」によって罰せられます。 - TAKE2 (2005年09月22日 11時58分28秒)
  • なかなか勉強になりました。上級編はないんですか。 - 名無しさん (2005年12月14日 18時08分57秒)
  • 上級編は今のところありません。だって自分が上級者じゃないから…(^^; - TAKE2 (2005年12月17日 14時40分53秒)
  • 体験版でできた改造が製品版でできなくなってるんですが・・・何故でしょうか? - 名無し無双 (2007/04/07 20:44:14)
  • ↑たとえば1000の金があったとしますなので1000と検索しますそした金を500に減らして500と検索しますですがしても検索結果が0になってしまいます - 名無し無双 (2007/04/07 20:45:45)
  • 体験版ではできたのですが・・ - 名無し無双 (2007/04/07 20:52:21)
  • それはなんらかの対策が入ったんでしょうね〜。例えば昔だったらDQ6とかでステータスの値に22だか21だかのXORを掛けていたなんてケースもあります。これを回避するためには「違いサーチ」を使うしかありません。上の例だとだんだん金を減らしていって、その都度違いをサーチしていって対象の値を絞り込む感じですね。その場合、1000という値が必ずそれに対応する16進数「3E8」であるとは限りません。 - TAKE2 (2007/04/09 00:49:32)
  • わけが分かりません。もっと簡単に説明してください( ̄ー ̄) - N.K (2011/07/31 16:48:24)
  • 何がわからないのか教えて貰えないと教えることもできません。全体的に言葉の意味がわからないというようなことであれば、残念ですがこの記事を読むにはまだ知識が足らないようです。「初心者講座を読む」+「プログラムを組んだことがある」くらいの経験がないと難しいかもしれません。 - TAKE2 (2011/07/31 23:35:42)
  • 「ネットワークゲームではできない?」の項目に文章、「さらにネットワークゲーム上での改造は他のユーザーに迷惑がかかるのでマナー面からもおすすめできません。」を追加しました。 - もっぷ (2011/08/09 23:19:32)
  • TAKE2さんのコメのおかげで、DQ6のステ見つけられた!まだExpと金だけど、 xor 4126かかってた。。 - take (2012/09/09 10:05:29)
  • あー、数字は間違っていたみたいですね〜。すみません。 - TAKE2 (2012/09/09 23:14:32)
  • DSの改造ツールはどうやって手に入れるのですか? - 名無しさん (2012/10/06 14:55:16)
  • 手始めにこのへんでもご覧になってください。購入はamazonからでも可能です。 - TAKE2 (2012/10/07 00:11:07)
  • バイナリエディタを使い所持金やステータスではなく、アイテム等数字ではないものを探すときはどうすればいいのですか? - ああああ (2012/10/22 00:52:40)
  • アイテムに所持数のあるものならば、その数から追えばよいかと思います。 数のないものでアイテムスロットに1つしか所持できないものは、ステータス等「数」のあるものからアドレスをずらしながら追っていくか、スロットが8つあるとかなら8つ埋めたデータと8つすべてをなくしてしまったデータとを比べて8つぶんのデータが連続でなくなっている(0x00以外から0x00になっている等)アドレスの塊などを探してみるとよいのではないでしょうか。 - TAKE2 (2012/10/23 00:36:58)
  • そういう方法もあるのですね。ありがとうございます。 - ああああ (2012/10/23 01:06:07)
  • 難しそーww - kamabuki (2013/05/19 22:14:16)
  • ePSXeでティアリングサーガの体験版をしているのですか、製品版とコードが違って困っています。無限行動とか自分でコード検索するアプリ(?)というか無料のソフトってありますか?それか体験版のコードが載ってるサイト知ってたら教えて下さい。 - rurouni (2014/03/06 21:52:05)
  • ePSXe って確かエミュレータですよね。だとすれば、プロセスのメモリ内部を見られるバイナリエディタ(例えばHeなど)で、自分で探すこともできるのではないかと思います。 - TAKE2 (2014/03/09 00:38:50)
  • ePSXeですか。それならOSがXPの人なら国内製のEasyGameをオススメです。普通の10進数だけしか考えなくていいので私もそうでしたが初心者でも簡単にサーチできて数値を書き換えられますよ。同梱のマニュアルも理解しやすいし入門用には超オススメのメモリエディタです。64bitOS用ならもう少し難しくなりますが改造の館さんにあるMECCの使用をオススメします。こちらも国内製で現役バリバリのツールです。 - 通りすがり (2014/11/07 00:44:24)
  • あ、書き忘れましたがEasyameですがベクターにあるのですが一応シェアという事になってますが、じつは毎回起動のたび5秒間待つのを我慢するだけで他はなんの制約もなく使えるので実質フリーとして使えますよ。 - 通りすがり (2014/11/07 00:51:39)
お名前: コメント:

[カテゴリ: ゲーム > ゲーム改造]