スコアがサーバーに送信される C++11 ゲームを作成しています。スコアを単純なフロートとして保存しているため、Cheat Engineなどのソフトウェアを使用している人は、スコアがサーバーに送信される前にスコアの値を簡単に変更できます。
この種の攻撃からゲームを保護するにはどうすればよいですか?
スコアがサーバーに送信される C++11 ゲームを作成しています。スコアを単純なフロートとして保存しているため、Cheat Engineなどのソフトウェアを使用している人は、スコアがサーバーに送信される前にスコアの値を簡単に変更できます。
この種の攻撃からゲームを保護するにはどうすればよいですか?
そもそもクライアント側で何かをする必要がある場合は、気になるデータ(または可能であればすべてのデータ)を暗号化します。
サーバーに重要なものを計算させる方がよい場合があります。たとえば、Call of Dutyでは、サーバーが誰を撃つかを決定して、個々のプレーヤーのコンピューター/レイテンシーなどを決定する必要があります。関与しません。
ローカルPCのみのゲームを実行していて、最後にスコアをアップロードしたいだけの場合、サーバー計算はオプションではありません。その場合、あなたは本当に暗号化に固執し、そもそも重要な値を難読化する必要があります。できることはたくさんあります。100%クライアント側で計算した場合、防弾になることはおそらくないでしょう。
値が改ざんされていないことを保証できる方法は実際にはありません。あなたができることは、サーバーが「これが可能かどうか」を判断できる十分な情報をサーバーに送信することです。 Man ate、またはレベルごとの数と各レベルを完了するのにかかった時間など。詐欺師が必要なすべての余分なデータを再現できることは不可能ではありませんが、より多くのデータを送信している場合、そうすることがはるかに難しくなります.
ただし、ソフトウェアでいつでも利用できるデータは、「デバッガ」タイプのアプリケーションによって変更される可能性があります。それについてあなたができることは何もありません。