プログラム データをテキスト ファイルに保存するという大雑把な方法を知っています。問題は、誰でもテキスト ファイルにアクセスして操作できることです。たとえば、ゲームの進行に応じて変化するゲーム データを保存および読み込みたいとします。そのようなデータを保存し、ゲーム プログラム内でのみアクセスできるようにして、他の人が操作できないようにする方法はありますか?
2851 次
3 に答える
8
アイデアは、人間が読み取れないようにデータをフォーマットすることです。これは、いくつかの方法を使用して行うことができます。
- データをバイナリとして保存します。これにより、人間がファイルを読み取るのが難しくなるため、16 進エディターまたは同様のプログラムを使用する必要があります。また、ある値がどこで終わり、別の値が始まるかを確認することも困難になります (テキスト ファイルでは、これは空白で示されます)。これが持つもう 1 つの利点は、ファイルがはるかに小さくなることです。
- データ暗号化。データはさまざまな方法で暗号化できます。これはかなり安全なオプションですが、暗号化は遅くなる可能性があるため、非常に大量のデータの場合、データを保存/ロードする必要がある速さによっては最適ではない場合があります. 暗号化/復号化キーをどこかに保存するという問題もあります (おそらくファイル自体に、またはプログラム内の定数として)。
- 難読化。これは、物事を読みにくくすることを指す広義の用語です。たとえば、2 つの文字列をインターレースして、両方を読み取れないようにすることができます。難読化には、多くの場合、プログラムによって使用されず、ハッカーになる可能性のある人を混乱させるだけの情報であるジャンク データの割り当てが含まれます。
- 妥当性チェック。誰かがファイルを変更し、何をしているのかわからない場合、プログラムに目に見える影響を与える可能性が非常に高くなります。このようにして、ファイルをいじるだけで、プログラムがどのように反応するかを確認できます。これに対抗する 1 つの方法は、すべてのデータが論理範囲内にあるかどうかを確認することです。データは、さまざまな方法で難読化または暗号化して、ファイルに複数回保存することもできます。データが異なる場合、ファイルが改ざんされていることがわかります。
于 2013-07-04T01:50:53.190 に答える
6
データはバイナリ ファイルに保存する必要があります。しかし、人々はとにかくそれを変更することができます (Diablo2 で私のキャラクターのスキル ポイントやステータス ポイントを頻繁に変更するように:D) ので、ハッシュ サムを計算してデータ内に保存するアルゴリズムを見つけることを検討する必要があります。
于 2013-07-04T01:39:38.747 に答える
3
データをバイナリ ファイルに保存できます。c++ オブジェクトとの間でビットを読み書きするだけです。
于 2013-07-04T01:34:48.700 に答える