バックグラウンド
私はかなり長い間、Android ゲームでプレイヤーがチートをしているという問題を抱えていました。厳格なシングルプレイヤー ゲームでは、これは大きな問題にはなりませんが、私のゲームにはマルチプレイヤー バトルとグローバル ハイスコア リストが含まれているため、正当なプレイヤーが不正行為のためにプレイを停止する原因となっています。
彼らがどのようにだますか
詐欺師は、 Gamecihと呼ばれる root ユーザー向けのアプリを使用します。Gamecih を使用すると、ユーザーはアプリを一時停止し、変数の値を変更してから、アプリを再開できます。つまり、私の場合、彼らはゲームを一時停止し、「健康」を 74 兆に変更してから、マルチプレイヤーの全員からがらくたを追い出します。これは、Gamecih を使用して Fruit Ninja (私のゲームではありません) をチートする方法を示すビデオです。
考慮された方法
- コードの難読化。難読化は変数の値を変更せず、変数名のみを変更するため、これは機能しません。これは、詐欺師が現在のヘルスと同じ値を持つ変数を見つけて、その変数を変更できることを意味します。
- コードの難読化 + ゲッターとセッターの値の変更。このように、健康は実際には実際の健康価値を表していません。getter メソッドでは、return health*10; のようなことを行います。セッターでは health=input/10; を実行します。もちろん、これはもっと複雑になる可能性があります。
私が欲しいもの
考慮された方法 2 を使用する必要があると主張することもできますが、繰り返しますが、ハッキングを防止するものではなく、ハッキングを難しくするだけです。理想的には、人々が Gamecih を使用して不正行為を行っていることを検出し、「Darn you, you nasty hacker」というポップアップを表示して、アプリケーションを閉じたいと考えています。プレイヤーがオフラインでもプレイできるようにしたいので、サーバーに依存するソリューションは望んでいません。可能であれば、コードの難読化も避けたいと考えています。