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

改造コードを見つけるプロセス
改造コードを見つけるにはそれに対応したツールを使う必要があります。
あとになってくれば分かりますがゲーム機などにあるメモリの内容を保存できるだけの記憶領
域が必要になるからです。
また、改造コードを見つける為にはある程度、コンピュータの知識も必要とします。
このページでは改造コードを見つける為に必要な知識とそのプロセスを説明していきます。
コンピュータ(ゲーム機やPC)の仕組み
コンピュータやゲーム機は CD-ROM や HDD から直接データを読み込んでゲーム画面にしている
わけではなくて、データをメモリに一旦データを読み込んでから CPU で処理しています。
このため、現在画面に映し出されているゲームのデータはすべてメモリ上に存在するといえま
す。
・経験値、レベルなどのステータス
・今どこを歩いているかなどの位置情報
・キャラクターがどのような状態にあるか
・画面表示のための画像情報
など、多様な情報が詰まっています。
メモリ
ここでちょっとメモリの話を。
メモリはデータを格納できる揮発性の記憶媒体です。
一般的にハードディスクや CD-ROM よりも高速にデータの読み書きができるため、CPU がデータ
のやりとりをするのはメモリとなります。
例えばゲームの画面が切り替わるときなどに「Now Loading...」なんて表示されることがあります
が、これは次のゲーム画面などを構成するのに必要なデータを CD-ROM などからメモリに書き出
しているのです。
メモリは高速にアクセスできるので、メモリに書き出したデータと CPU だけで処理ができれば
ゲームはストレス無く動作します。
じゃあ、メモリの内容が書き換えられれば…
と考えた人がいたんですね。どこかに。
先ほども書きましたがメモリは揮発性の記憶媒体です。
このため今メモリに展開されているデータは書き換え可能なのです。
そうやって開発されたのが PAR や X-T などの改造ツールといわれるものなのです。
どこにどんなデータがあるか?
メモリでもなんでもそうですが、デジタルデータを記憶する記憶媒体(HDD や CD-ROM など)は
必ずアドレスが存在します。
そしてデータそのものは必ずアドレスと組になって存在しています。
そういう風に格納されていないと、いざデータを取りにいくときにどこにどういうデータが格納
されているか分からなくなってしまうからです。
データがある場所はいつも同じなのか?
データはよほど頻繁に変わる必要性のあるデータでない限り、ゲーム中を通してほとんど同じと
1
ころに存在しています。
例えば経験値などのデータのアドレスが頻繁に変わるようなゲームを作ろうとするとアドレス
を変えるためのプログラムを作らねばなりません。
また、そのデータを読み取ろうとする側はそのアドレスを知る為のプログラムを通してアドレス
を取得してからデータを取得しなくてはなりません。
プログラムはそもそも無駄を省いた作りにしていくのが普通です。
なぜかといえば、今ゲームしているその画面を表示している中で1秒間に想像を絶する回数の処
理が行われているからです。
例え大したことのない処理であってもそれが数千回も行われれば目に見えて処理速度が遅くな
ります。
ゲームでストレスを感じるとユーザーが離れ、ひいてはゲームが売れなくなります。
では、どうやって探そうか…
■数値サーチ
経験値のような簡単な数値データの場合、探すのは非常に簡単です。
1. 経験値が表示されているときなどにメモリ内にその経験値とデータ(値)をもつアドレス
を抽出します。
2. 1回戦闘などをはさみ経験値を変化させます。
3. 先ほど抽出したアドレスの中から現在の値と同じデータをもつアドレスを抽出します。
ゲーム中に同じ値変化をする場所はいくつもあるので、これを何度か繰り返して振るいにかけて
いくとおのずと経験値を格納しているアドレスが導き出されます。
■違いサーチ
今、キャラクターが地上にいるか空中にいるかなどの状態は数値とするのが難しいです。
このような場合、以下のように違いがある部分をすべてサーチしていきます。
1. 現時点のメモリの内容をすべて抽出します。
2. ゲーム中で状態を変化させます。
3. 値が変化したアドレスを抽出します。
4. またゲーム中で状態を変化させます。
5. 前回から値が変化したアドレスを抽出します。
この 3 ∼ 5 を繰り返すことによって振るいにかけていきます。
改造コードを探すにはある状態のメモリのアドレスを抜き出し、探したいと思う部分の状態を変
化させ、またメモリサーチというのを繰り返して行います。
■芋づるサーチ
でも、これとは別にもうひとつの探し方もあります。
例えば RPG などのステータスで、
・力
・知恵
2
・敏捷性
・器用さ
・運
などと並んでいた場合、これらのステータスのアドレスは隣り合っている可能性が高いです。
このためまず「力」のアドレスを探し値を変化させ、隣のアドレスの値も変化させると「知恵」も
変化しているということが多々あります。
これはプログラム経験のある方はある程度分かるかと思いますが、キャラクターのデータなどは
構造体やクラスになっていることがほとんどです。
特に複数のキャラクターが操作対象キャラクターになる RPG などだとこのようなデータはほぼ
間違いなく構造体の配列 ( やクラスの配列 ) になってます。
ですので、特に RPG などの場合は見つかった値から隣などを変化させていくとサーチしなくては
ならない回数を減らすことができたりします。
PC ゲームでもできますよ
PC のゲームだともっと簡単にこれらのことができます。
バイナリエディタというソフトが世の中にはたくさんあります。
このなかで、メモリ上のバイナリデータを参照できるバイナリエディタも存在します。
バイナリエディタには通常検索機能がありますし、メモリを書き換える機能もあります。
改造ツールのようなツールが無くても上記のようなバイナリエディタをフリーウェアで探すこ
とができれば、PC ゲームでの改造ツールの代わりになるのです。
ネットワークゲームではできない?
ネットワークゲームでは上記までの改造はほとんどできないものと思ってください。
ネットワークゲームには必ずといっていいほどサーバーが存在します。
ゲームは常にサーバにあるデータと今手元にあるデータが正しい状態にあるかをチェックして
います。
このためメモリ上のデータを改ざんした場合は管理会社に見つかりアカウント剥奪などの措置
がとられますし、そもそも約款などに禁止事項として記載されています。
さらにネットワークゲーム上での改造は他のユーザーに迷惑がかかるのでマナー面からもおす
すめできません。
このページに対するコメント
・改造ツールは、どのようにして、手に入れるのですか - お願い (2004 年 12 月 15 日 21 時
13 分 29 秒 )
・PS のものなどであれば大手家電量販店などにも置いています。 - TAKE^2 (2004 年 12 月
16 日 20 時 15 分 08 秒 )
・「数値サーチ」に「アドレスを抽出」とありますが、どうやってやればよいのでしょう
か? - みく (2005 年 01 月 20 日 17 時 56 分 22 秒 )
・サーチ機能のある改造ツールであれば説明書にやり方は載っていると思います。 TAKE^2 (2005 年 01 月 21 日 18 時 08 分 51 秒 )
・サーチ機能が無いものの場合は諦めて、雑誌や WEB に載るコードを使ってください。 TAKE^2 (2005 年 01 月 21 日 18 時 10 分 13 秒 )
・ゲームデータ−を改造したソフトは通信できるの - ???? (2005 年 09 月 21 日 19 時 00
分 49 秒 )
・どのゲームのことを言っているか分かりませんが、通常ネットワークゲームではプレイ
3
ヤーの情報はサーバ側に保存されます。サーバは通常堅固なセキュリティに守られている
ので容易にゲームデータを改造することはできません。ってそういうことをやると「不正
アクセス防止法」によって罰せられます。 - TAKE^2 (2005 年 09 月 22 日 11 時 58 分 28 秒
)
・なかなか勉強になりました。上級編はないんですか。 - 名無しさん (2005 年 12 月 14 日 18
時 08 分 57 秒 )
・上級編は今のところありません。だって自分が上級者じゃないから…(^^; - TAKE^2 (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」であるとは限りません。 - TAKE^2 (2007/04
/09 00:49:32)
・わけが分かりません。もっと簡単に説明してください (  ̄ー ̄ ) - N.K (2011/07/31 16:48:24)
・何がわからないのか教えて貰えないと教えることもできません。全体的に言葉の意味がわ
からないというようなことであれば、残念ですがこの記事を読むにはまだ知識が足らない
ようです。「初心者講座を読む」+「プログラムを組んだことがある」くらいの経験がな
いと難しいかもしれません。 - TAKE^2 (2011/07/31 23:35:42)
・「ネットワークゲームではできない?」の項目に文章、「さらにネットワークゲーム上での
改造は他のユーザーに迷惑がかかるのでマナー面からもおすすめできません。」を追加し
ました。 - もっぷ (2011/08/09 23:19:32)
・TAKE^2 さんのコメのおかげで、DQ6 のステ見つけられた!まだ Exp と金だけど、 xor
4126 かかってた。。 - take (2012/09/09 10:05:29)
・あー、数字は間違っていたみたいですね∼。すみません。 - TAKE^2 (2012/09/09 23:14:32)
・DS の改造ツールはどうやって手に入れるのですか ? - 名無しさん (2012/10/06 14:55:16)
・手始めにこのへんでもご覧になってください。購入は amazon からでも可能です。 TAKE^2 (2012/10/07 00:11:07)
・バイナリエディタを使い所持金やステータスではなく、アイテム等数字ではないものを探
すときはどうすればいいのですか ? - ああああ (2012/10/22 00:52:40)
・アイテムに所持数のあるものならば、その数から追えばよいかと思います。 数のないもの
でアイテムスロットに 1 つしか所持できないものは、ステータス等「数」のあるものから
アドレスをずらしながら追っていくか、スロットが 8 つあるとかなら 8 つ埋めたデータと
8 つすべてをなくしてしまったデータとを比べて 8 つぶんのデータが連続でなくなってい
る (0x00 以外から 0x00 になっている等 ) アドレスの塊などを探してみるとよいのではない
でしょうか。 - TAKE^2 (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 など ) で、自分で探すこともできるのではないかと思います。
- TAKE^2 (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)
4