免責事項:私は経験のプログラミングゲームはありません、彼らのためだけに詐欺を作ります。
健康のような重要な変数を計算して&のサーバー側で、そのデータをクライアントに複製します。また、ピックアップはサーバーによって検証されなければなりません。弾薬をサーバ側に置いた場合、クライアント側であればPickUp(ammoCrate)を呼び出します。
あなたは誰も止めることはありませんが、90%の人々が不正行為をやめようとするのを止めるには十分迷惑なものにすることが重要だと思います。あらゆるゲームに必要な基本的なものがいくつかありますし、一般的なゲームが詐欺師によって破壊されるのを避けなければならないより高度な保護があります。
時間とともに変化する基本的なXORのようなアルゴリズムを使用して、正常性などの一般的に変更された値を暗号化します。キーのアドレスも変更し、ポインタを使用して、ポインタを6層以上深くします。これは、詐欺師がスクリプトを作成し、パターンスキャンを使用して、ほとんどの人を止めるチートテーブルを使用するように強制します。
IsDebuggerPresent()を使用して、接続されているデバッガを検出し、プロセスを終了します。チートエンジンで "Find What Accesses"を実行してデバッガをアタッチすると、デフォルトオプションを使用するとIsDebuggerPresentによって検出されます。
:
PEB* GetPEB()
{
#ifdef _WIN64
return (PEB*)__readgsword(0x60); //64 bit
#else
return (PEB*)__readfsdword(0x30); //32bit
#endif
}
は、デバッガフラグを読む
これは夢中にしてパッチを適用することができ、次のステップは、手動でPEBポインタを取得しますProcess Environment Block
にBeingDebuggedフラグをチェックすることです
bool IsDebugFlagSet(PEB* peb) { if (peb->BeingDebugged == 1) return true; else return false; }
もし彼らがIsDebuggerPresにフックしているなら最初のバイトをチェックし、それが相対的なjmp(x86の例)であるかどうかを調べることができます。
チェックすると、ディスク上のバイトをメモリのバイトと比較して比較することができます。フック:
bool IsHooked(char* functionName, char* dllName)
{
BYTE* functionAddress = (BYTE*)GetProcAddress(GetModuleHandle(dllName), functionName);
return (*functionAddress == 0xE9);
}
その他のトリック:
フックのLoadLibrary()& LDRLoadDLL()と不正のDLLをメモリーするためのプロセスを実行している
スキャンをロードするからそれらを停止デバッガは、あなたがあなたのゲームを保護するために、商業anticheatまたはカーネルモードドライバを使用することができますこれらのトリックを越えて
を添付することはできませんので、ブラックリスト
に対してCreateToolHelp32Snapshotを()を使用して、イメージ名またはイメージのパスを比較することにより、編集者は、すべてのデバッグレジスタを埋めます上記のヒントは平均的な人を止めるでしょう。
しかし、ユーザがバイナリファイルとソースコードだけを持っているゲームでさえ、チートエンジンのようなユーティリティを使用して悪意のあるエンドにプログラムのメモリを編集することは可能です。 –
一般に、人々は自分のマシン上でプログラムを編集することができます。あなたができるベストは、しばしば他の人々のマシンを守ることです。 –