私は Facebook でいくつかの小さなフラッシュ ゲームを持っています。チートエンジンで不正行為を防ぐにはどうすればよいですか? 私の swf ファイルは、スコアを php でデータベースに送信します。チート エンジンを使用してフラッシュ ゲームのハイスコアをハッキングしてほしくありません。これらの問題を回避する最善の方法は何ですか?
前もって感謝します..
私は Facebook でいくつかの小さなフラッシュ ゲームを持っています。チートエンジンで不正行為を防ぐにはどうすればよいですか? 私の swf ファイルは、スコアを php でデータベースに送信します。チート エンジンを使用してフラッシュ ゲームのハイスコアをハッキングしてほしくありません。これらの問題を回避する最善の方法は何ですか?
前もって感謝します..
私が使用する2つの方法は次のとおりです
SpeedHackウォッチドッグ
http://www.bjoernacker.de/flash/detecting-the-cheat-engines-speedhack-in-as3/
このクラスを使用して、ユーザーが CheatEngine を使用してフレーム レートを下げているかどうかを判断します。
別の方法では、変数をプロキシに格納するためのボールト クラスを作成します。このボールトは変数を別の名前空間 (チート エンジンが変更できない名前空間) 内に格納します。
http://troyworks.com/blog/2007/08/05/introspection-in-as3-use-of-namespace/
簡潔な答え; できません。
長い答え; 大変な作業です。1 つのオプションは、ゲームのサーバー側ポートを作成し、すべてが決定論的であることを確認し、すべてのプレイヤー アクションを送信してサーバー側ポートで検証することです (失敗した検証はすべて破棄します)。
スコアに乱数を追加し( 100 としましょう)、それをどこかに表示するときに減算します。この後、SWF ファイルを難読化します。したがって、次のようなものがあります:myScores = 100;。スコアが 15 の場合、メモリには 115 という数字があり、115 ではなく 15 を探します。次に、115 から 100 を引き、表示される実際のポイントを取得します。swf を逆コンパイルしないように保護することが重要です (難読化するソフトがたくさんあります)。PHPに送信するときに、独自の暗号化/復号化関数も実行します;)
それらのいくつかはサーバー上で確認でき、ユーザーの手順を確認できますが、ハイスコアを再生してゲームが有効かどうかを確認するよりも、ゲームを記録してスコアで保存することもできます。