10

カジュアル ゲームでよくあるエクスプロイトは、システム クロックを人為的に進めて、ゲームプレイを先に進めることです。このようなユーザー クロックの進歩は、iOS デバイスのアプリでどのように検出されるのでしょうか?

  • ネットワーク通信を含まない
  • 時計が進んでいる間、アプリが開いている (実行中または一時停止中) と想定してはなりません
  • クロックの進行を検出する必要があります。クロックのロールバックを検出するだけでは不十分です

理想的には、ソリューションが再起動に対して堅牢であることですが、それは要件ではありません。

4

3 に答える 3

1

GPS データのその部分が公開された場合、CoreLocation がこれを行うことができるという事実について考えていました。しかし、それは私に考えさせられました。

私の唯一の(とてつもない)提案は、何かをバックグラウンド処理に入れることです。これは、たとえばバックグラウンドで位置を追跡するなど、特定の小さな理由のいずれかでなければなりません。その副作用として、通常のタイマーでクロックの変更を検出してみてください。Apple は、位置情報を使用しておらず、バックグラウンド処理を悪用する単なる理由であることは明らかであるため、拒否する可能性があります。

ネットワーキングを含まないソリューションは実装が非常に難しいため、なぜそれを使用しないのだろうか。

于 2011-08-19T13:48:06.253 に答える
0

ユーザーがネットワークにアクセスせずに手動で時計を進めたかどうかを確実に判断することはできないと思いますが、もちろん、ユーザーが時間を遡ったかどうかを確実に判断することはできます。そして、これは物理的に不可能であることがわかっているため、彼らが時計を操作してごまかしたと推測できます。

これが意味するのは、待機期間を必要とするアプリ内アクションをトリガーし、アプリを終了して時計を進め、アプリを再起動して待っていたものを取得する通常のプロセスではないということです。時計を実際の時間に戻しますか?

これが実際に当てはまる場合、@smgambel による提案に基づいて構築するには、起動ごとに物理時間と現在のタイムゾーンを保存し、以前に保存された時間とタイムゾーンと比較できます。時間が以前に保存された時間より遅れており、デバイスのタイムゾーンが変更されていない場合、ユーザーが時計を操作したと安全に想定できます。

于 2011-08-19T14:22:51.160 に答える