Re: ファイル名が同じでも中身が違ってたら ( No.1 ) |
- 名前:匿名 日時:2024/08/05 17:29
セーブデータを圧縮する、チェックサムやCRC32を仕込むなどでしょうか
改ざん対策にもなります
今はChatGPTがログインなしで使えるので聞いてみるとよいと思います。
|
Re: ファイル名が同じでも中身が違ってたら ( No.2 ) |
- 名前:管理人 日時:2024/08/05 23:21
> 極端な話ですが、たまたまデータ個数等が一致していた場合めちゃくちゃな値がロードされてゲームが始まってしまう気がします
一番簡単な対処としてはファイルの先頭の4バイトに必ず 0x19 0xF4 0xBB 0x68 という数値を入れておく、
など決めておいて、ファイルの先頭の4バイトがこの4つの数値ではない場合は正しいセーブデータではないとして
エラー扱いにする、という方法があります
ただ、それだけではたまたま先頭の4バイトが 0x19 0xF4 0xBB 0x68 のファイルが置かれて
しまった( そんな偶然はほぼ無いと思いますが… )場合は期待した結果は得られませんし、
悪意を持って改造セーブデータを作ろうとする人などでは先頭4バイトだけ値が正しければ他の部分は
自由にパラメータを弄れてしまうので、その対策として匿名さんも仰られているような
チェックサムやCRC32の値などをセーブデータに含めて正しいセーブデータかどうかを判断します
( まあどんな対策をしても技術力のある人には破られてしまうのですが…
( ちょっとだけ知識がある人が改造しようとするのは防ぐことができます ) )
|
Re: ファイル名が同じでも中身が違ってたら ( No.3 ) |
- 名前:通りすがり 日時:2024/08/06 10:29
匿名様
管理人様
ありがとうございます
ファイル先頭数バイトでの識別が手軽で簡単そうなので使わせて頂きます
しかしやはり知識がある人にはどんなに対策をしても突破されるとの事なので、そこは相手の裁量に委ねるしかないのですね…
ただデータを改ざんしてプレイされるだけならいいのですがそれが原因でデバイスに不調や故障などが起きた時に(起こるかわかりませんが)プログラム側の責任として苦情を言われないかが心配になります、
こちらからは相手がデータを改ざんしてプレイしたかを判断する事は不可能かと思うので
一応自分の中では、ファイル入力においてはあくまで受け取る側が読み込むデータ量を決めるので領域外へのデータの代入等は起こらないって認識なんですが合っていますか?
|
Re: ファイル名が同じでも中身が違ってたら ( No.4 ) |
- 名前:管理人 日時:2024/08/07 02:16
> 一応自分の中では、ファイル入力においてはあくまで受け取る側が読み込むデータ量を決めるので領域外へのデータの代入等は起こらないって認識なんですが合っていますか?
はい、読み込むデータ量が固定の場合は領域外へのデータの代入等は起こりません
ただ、例えば『ファイルの8バイト目からの4バイトの値は所持しているアイテムの数で、
その先には所持しているアイテムの情報が保存されている』というようなセーブデータの場合
データが改ざんされて『アイテムの数』が保存されている4バイトの領域に 1000000000 のような異常な値が書き込まれていたら
セーブデータ読み込みプログラムは 1000000000個のアイテムの情報をファイルから読み込もうとして
領域外へのメモリアクセスが発生してしまうかもしれませんので、読み込むデータ量がセーブデータの内容に
応じて変化するような場合は『所持アイテムの数が100個以上だったら不正データとしてエラー扱いにする』などの
処理を組む必要があります
|
Re: ファイル名が同じでも中身が違ってたら(解決) ( No.5 ) |
- 名前:通りすがり 日時:2024/08/07 06:30
成程…そういった対処も必要になるのですね
現時点ではその様なパターンは全く想定していなかったので助かります
起こり得る外部からの改ざんにはプログラム側でしっかり対策をしないといけないとよくわかりました
どうもありがとうございます。とても参考になりました
|
Re: ファイル名が同じでも中身が違ってたら ( No.6 ) |
- 名前:通りすがり(解決) 日時:2024/08/07 06:32
解決を付けるところを間違えてました、すいません
|