セーブデータをいくら暗号化しても、実行中の変数が保持している値を直接書き換えられては意味がありません。
変数を確保しているということは、メモリにそのデータがあるということです。
メモリからその値を探し出して直接変更すれば改竄出来てしまうのです。
うちのサイトで配布している四聖龍神録Plusのデータ改ざん方法が
こちらのウェブサイトに掲載されていました。
ではこれに習って四聖龍神録Plusのデータを改竄してみましょう。
(自分が作ったゲームの改竄方法をお伝えするのもなんだか変な話ですが。。)
まず、改竄するツールをダウンロードします。
スペシャルねこまんま57号
そして四聖龍神録Plusを起動し、スペシャルねこまんま57号を起動します。
今、お金が30113貯まっています。
このお金を増やしてみましょう。
実行ファイルを選択したら、「メモリ検索」をクリックします。
10進数を意味する「10」をクリックし、所持金額である「30113」を入力し、「通常検索実行」をクリックします。
すると、30113に該当する値がこの実行ファイルに73件ヒットしました。
今回は所持金額がたまたま特殊な値だったので、少ないですが、2とか、8とかだとものすごい数ヒットします。
では、少しゲームをして、所持金を若干増やしてみましょう。
今、所持金が「30117」になりました。
「30117」を入力して「通常検索実行」を選択すると絞り込み検索出来ます。
1件絞り込めました。これが所持金額を保持しているメモリの番号に違いありません。
それでは先ほどのメインウィンドウに戻ります。
メモリの番地は「00AF8744」です。
上に書かれているのが変更前「A5750000」です。これは4バイトリトルエンディアン表記なので、0x75A5=30117を意味します。
では「A5760000」に変更して更新を押して下さい。
そうすると、何の対策もしていなければ、所持金額が変更出来てしまいます。
・・・が!
四聖龍神録Plusでこれをやるとこんなウィンドウが出ます。
四聖龍神録Plusは「Money」の値を改竄チェックをしているので、所持金額を改竄しようとするとこのようなウィンドウが出ます。
しかし改竄チェックをしているのはMoneyの値のみなので
残機数などを改竄しようとすると、上で紹介したサイトに書かれているような結果(見事に変更されてしまう)になってしまいます。
(脆弱な部分ばらしてしまった・・。)
「メモリの値を直接書き換えてるんだから手の施しようが無いのでは?」という疑問もわくかも知れませんが、
案外いくつか対策が打てます。
でもそれをここに書いちゃ四聖龍神録Plusがまた改竄されてしまうではないか!
ということでその対策は秘密です。
・・・なんてことはなく、別の章で、対策の方法をお伝えします。
本章では、メモリの値を直接変更するツールを使うといとも簡単に改竄出来てしまうことをご紹介しました。
- Remical Soft -