オフラインとオンラインの両方のコンポーネントがあるゲームで、保存されたデータが編集されていないことを確認する


8

私はゲームデザインを計画する前の計画段階にあり、オフラインコンポーネントとオンラインコンポーネントを使用するゲームで、人々がセーブを編集できないようにする賢明な方法があるかどうか疑問に思っていました。

オフラインコンポーネントを使用すると、プレーヤーがゲームをプレイできるようになり、オンラインコンポーネントを使用すると、他のプレーヤーと対戦できるようになるため、オフラインで利点を得るには、人々がソースコードを編集したりファイルを保存したりしていないことを確認する必要があります。オンライン中。

.NetまたはJavaのいずれかで開発される可能性が高いゲーム。どちらも残念ながら簡単に逆コンパイルできます。

回答:


10

クライアントコードを簡単に逆コンパイル/リバースエンジニアリングできることは、ほんのわずかな障害です。進取的なハッカーは、C#のようなハイレベルで平凡な逆コンパイル言語が登場する前に、実行可能ファイルを(悪意を持って、非悪意で)何年にもわたって曲げてきました。あいまいさのみによるセキュリティは、まったくセキュリティではありません。

ユーザーのマシン上のすべてのデータ(コードまたは通常の資産データ)は、本質的にすでに侵害されています。あなたは本当にそれから身を守ることはできません-データを編集してほしくないのなら、それを彼らのマシンに置かず、あなたのサーバーに保存してください。同様に、クライアントのコードを変更したくない場合は、クライアントが有用なものを制御できないようにしてください。

それがオプションではない場合(たとえば、マルチプレイヤーが完全にピアツーピアである場合)、関連するアセットのハッシュを計算するなどの操作を実行し、ハッシュが一致する場合にのみ人々が互いに遊ぶことを許可できます。はい、誰かが実行可能ファイルを慎重に編集して別のハッシュを返すようにすることもできますが、問題となるのは、自分のアセットが他のアセットと一致しないため、問題のあるプレーヤーが比較的迅速に非同期化し、ゲームから切断することです。プレーヤー'。

「マジョリティルール」タイプのテストを使用して、シミュレーションが他のプレーヤーと同期しなくなったプレーヤーを切断して、「ホスト」プレーヤー(ゲームを開始した人)に同点投票を与えることもできます。


3

データがすべてクライアント側で生成されている場合、これについてできることは何もありません。ソフトウェアによって行われた編集と、ソフトウェアを装った誰かまたは他の何かによって行われた編集との違いを見分けることはできません。

あなたが試すことができる1つの抑止力は、ソフトウェアのキーを使用して保存ファイルを暗号化することです。残念ながら、ユーザーが保存ファイルを編集するのに十分であれば、ソフトウェアでキーを見つけるのにも十分です。

セーブをクライアントのマシンに保存しないことで、人々がセーブを編集するのを止めることができます。それらをサーバーにアップロードすることによって-しかし、それは彼らがハッキングされた保存を最初にアップロードすることを止めません!オンラインゲームは、サーバーで常に信頼できるゲーム状態を維持することでこの問題を解決しますが、オフラインモードでは機能しません。

だから、本当に、答えはノーです-あなたのゲームがデータを編集、不明瞭化、または暗号化するためにできることはすべて、ハッカーによっても行われる可能性があります。


これはJoshがすでに言ったこととほぼ同じだと思いますが、インターネットが停止していて、最初に入力した30分前に投稿できませんでした。
Kylotan、

1

私たちが現在のゲームの開発を始めたばかりの頃、私たちもオフラインプレイモードにしたかったのです。プレイヤーがオフラインでゲームレベルをプレイできるようにし、オンラインになったときに、どういうわけか彼らの進行状況を同期させるというアイデアでした。それで、私たちはどのようにして不正行為を防ぐことができるかについて長い間そして一生懸命考えました。結論は次のとおりです。できません。プレーヤーがオフラインでプレイして、不正行為を行わなかったことを100%確認する方法は本当にありません。


1

ファイルのダウンロードで使用される簡単な解決策の1つはハッシュです。保存ファイルをハッシュして、この「指紋」をどこかに保存します。ファイルをロードしたら、ファイルをハッシュし、指紋と照合します。一致しない場合、ファイルは変更されています。

もちろん、誰かがあなたのコードを逆コンパイルした場合、あなたができることは何もありません。この回答の場合、これは、変更された保存ファイルのハッシュも保存できることを意味します。

別のオプションは、どこかのサーバーにフィンガープリントを送信することです。エンドユーザーは、保存ファイルを変更した場合、フィンガープリントを手動で変更できません。これは、iTunesがiPhone画像を復元するときに行うことと似ています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.