問題タブ [anti-cheat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
web-services - モバイルゲームの不正行為を防止する UTC 時間の Web サービス
モバイル デバイスの時計を進めることで、「時間の不正行為」を防止したいと考えています。ゲームがネットワーク接続を要求しても問題ありません。多数の「時間 Web サービス」関連のリソースを調べた後、少し迷っています。www.gettime.com/utcのようなものにリクエストを送信し、結果を解析してゲームで使用したいだけです。
この目的で使用するのに適した Web サービスは何ですか?
ゲームは起動時に一度だけ utc 時間を要求することに注意してください。NTP サーバーを使用する必要があるように見えますが、どれが適切な選択かわかりません。URL はアプリにハードコードされるため、適切な選択を行うことが重要です。
encryption - レベルがランダムに生成されるゲームでデイリー チャレンジを作成するにはどうすればよいですか?
私は現在、レベルをランダムに作成するゲームを作成していますが、Spelunky のように、デイリー チャレンジ セクションで全員が同じレベルをプレイできるようにすることに興味があります。
最初は、クライアントが日付に基づいてシードを決定できるようにすることを考えましたが、日付はローカルで偽装される可能性があります。
parse.com の無料アカウントにアクセスできるので、クラウドでコードを実行し、結果が返されることを期待できます。そのため、現在の日付に基づいてクラウド コードにハッシュを要求することを検討しましたが、サーバーに毎日のスコアではなくそのレベルのスコアを送信している間に、別のレベルをプレイするように偽装される可能性があります。
次に、サーバーで日付を暗号化し、クライアントで復号化することを考えましたが、対称暗号化を使用すると問題が発生する可能性があります。それで...おそらく非対称暗号化を使用しますか?
ここでもっと簡単な解決策がありませんか?これは自分自身を複雑にしすぎているように感じますが、よくわかりません。この種の問題に対して一般的に受け入れられている解決策はありますか? しばらくグーグルで検索しても何も見つかりませんでした。
PS: 関連する場合に備えて、unity3d を使用しています。
memory - 別のプロセスがアプリケーションのメモリを読み取っているかどうかを検出する方法
別のプロセスがアプリケーションのメモリを読み取っているかどうかを検出することは可能ですか? もしそうなら、これを達成する方法の例を教えてもらえますか? (C++ の例は素晴らしいでしょう)
ありがとうございました
c# - チート エンジンが実行時に文字列を表示するのを回避するにはどうすればよいですか
私は CheatEngine で遊んでいましたが、クライアント側のアプリケーションですべての文字列を表示できることがわかりました。チート エンジンが実行時に文字列を認識しないようにするにはどうすればよいでしょうか。私は知っているあらゆる種類のアプローチを試しましたが、文字列があるときはいつでも CheatEngine が表示できます。これを防ぎたい、または少なくとも CheatEngine が代わりに暗号化された文字列を視覚化するようにします。
c++ - コード生成によるチート防止
このアンチチート手法は、プライベート サーバー (公開されていない実行可能ファイル) を使用するマルチプレイヤー ゲームで機能しますか?
クライアントがゲームを開始すると、毎日自動更新されます (ランチャーを使用)。サーバーも自分自身を更新します。実際のパッチがない限り、更新はゲームオブジェクトのメモリ レイアウト、ネットコード、およびシェーダーの変更のみで構成されます。これは、(C++) クラスを自動生成およびランダム化する自動システムを使用して行われます。おそらく、偽のオブジェクトを階層に追加して、オブジェクトの識別を難しくすることもできます。
このようにして、クラッカーよりも速くゲームを更新し、リバース エンジニアリング、更新、および新しいチートの公開/更新を行うことを望んでいます。
これは機能するのでしょうか、それともハッカーはこのメカニズムを回避できるのでしょうか? 彼らはこの作業を毎日行うでしょうか、それともある時点で自動化できるでしょうか? このシステムを改善するにはどうすればよいですか?
実行可能ファイルの関数呼び出しをたどり、そのコードからポインターオフセットを抽出することで、レイアウトを多かれ少なかれ簡単に抽出できるため、メモリレイアウトのランダム化は長期的には役に立たないようです。したがって、これを効率的に防ぐには、呼び出しの構造とコード自体もランダム化する必要があります。
それを行う良い方法はありますか?それは自動クラッキングに対してまったく機能していますか?
javascript - JavaScript ゲームでチートを防ぐには?
まず、100% 確実な解決策はないことを私は知っています。この質問は何度も聞かれています。
これらの投稿は私のお気に入りの 1 番目と2 番目ですが、古すぎて効果的な解決策がありません。
JavaScript、HTML5、および CSS3 でソーシャル ゲームを作成しており、canvas を使用しています。セキュリティ上の理由から、ユーザーがデバッガ ツールを使用しているかどうかを検出する方法を知りたいと思っていました。ユーザーが何らかの値、速度などを変更しようとしているかどうかを防ぐために..しかし、これらのほとんどはPHPで処理できます。
私のゲームはリアルタイムゲームです。
これはいくつかの反チートのアイデアの非網羅的なリストです:
- サーバー側でポイントを獲得するたびに値をチェックして、一貫性があるかどうかを確認します。
- 各値を暗号化し、サーバー側で復号化します。
- 値ごとに異なるハッシュを持ち、ユーザーがゲームをロードするたびにランダムにします。
- スクリプト ファイル全体を縮小してエンコードします。
- ユーザーがデバッガーを使用しているかどうかを検出し、ゲーム中にウィンドウのサイズを変更しているかどうかを確認します (ただし、ゲームをロードする前にデバッガーを開くことができます..)。
- ゲームの完全なリプレイを送信するページを作成し、矛盾がないかチェックします。
- サーバーへのリクエストごとにスクリプトを送信し、ユーザーが変更した場合に備えて元のスクリプトと比較します。
- 縮小したスクリプトを HTML ページ内に配置し、リクエストごとに元のスクリプトを送り返して実際のスクリプトを置き換えます。
- クライアント側にタイマーを置き、値が一貫しているかどうかを確認するために必要なときにサーバー側に時間を送信します(これを行うには、スコアが設定した最小時間と一致するかどうかを計算できます。たとえば、時間は47秒です。スコアは 1000 で、40 秒と 50 秒の間のゲームではスコアが 1500 を超えることはできないため、この場合はすべて問題ありません)。
もちろん、リストするソリューションは他にもたくさんあります。
ソリューションごとに、デバッガー ツールにアクセスできます。デバッガー ツールの使用を完全に防止する適切な方法はありません。したがって、ユーザーがチートしないように 100% 防止する方法はありません。
少なくとも、これらすべてのソリューションをグループ化することで、ほぼチート対策を行うことができます。完全に機能するシステムがなくても、チートを行うユーザーはごく一部であり、ゲームでチートを行う方法についてのチュートリアルが確実に見つかるので、それぞれのユーザーが解決策を見つけることができます。それが起こる時。