クライアントコードを簡単に逆コンパイル/リバースエンジニアリングできることは、ほんのわずかな障害です。進取的なハッカーは、C#のようなハイレベルで平凡な逆コンパイル言語が登場する前に、実行可能ファイルを(悪意を持って、非悪意で)何年にもわたって曲げてきました。あいまいさのみによるセキュリティは、まったくセキュリティではありません。
ユーザーのマシン上のすべてのデータ(コードまたは通常の資産データ)は、本質的にすでに侵害されています。あなたは本当にそれから身を守ることはできません-データを編集してほしくないのなら、それを彼らのマシンに置かず、あなたのサーバーに保存してください。同様に、クライアントのコードを変更したくない場合は、クライアントが有用なものを制御できないようにしてください。
それがオプションではない場合(たとえば、マルチプレイヤーが完全にピアツーピアである場合)、関連するアセットのハッシュを計算するなどの操作を実行し、ハッシュが一致する場合にのみ人々が互いに遊ぶことを許可できます。はい、誰かが実行可能ファイルを慎重に編集して別のハッシュを返すようにすることもできますが、問題となるのは、自分のアセットが他のアセットと一致しないため、問題のあるプレーヤーが比較的迅速に非同期化し、ゲームから切断することです。プレーヤー'。
「マジョリティルール」タイプのテストを使用して、シミュレーションが他のプレーヤーと同期しなくなったプレーヤーを切断して、「ホスト」プレーヤー(ゲームを開始した人)に同点投票を与えることもできます。