-3

私はいくつかの方法を試し、ウェブ上のいくつかのチュートリアルに従いましたが、まだ何も役に立ちませんでした. 私がやりたいのは、ゲーム用の簡単なアンチチート プログラムです。ソース コードで定義されているプログラムを名前でスキャンし、16 進コードを読み取り、文字列または 16 進値を検索するだけです。例: cheatengine.exe が実行されている場合、このプロセスの 16 進コードをスキャンします。16 進コードに 0x328934 が見つかった場合は、プログラムを閉じます。これは可能ですか?助けてくれてありがとう。

4

1 に答える 1

0

何も見つからなかったことに驚いています...

using System.Diagnostics;
using System.IO;

string[] definedPrograms = { "cheatengine.exe", "otherhacktool.exe" };

void stopCheats()
{
    Process[] processList = Process.GetProcesses();
    foreach (Process process in processList)
    {
        foreach (string definedProgram in definedPrograms)
        {
            if (Path.GetFileName(process.MainModule.FileName) == definedProgram)
            {
                //Kill the other program
                process.Kill();
            }
        }
    }
}

プロセスメモリの読み取りと16進コードのスキャンに関しては、定義された16進コードを2次元配列に格納できますが、そもそもそれらを取得する方法がわかりません。

また、この実装はあまり安全ではないことも知っておく必要があります... 文字通り、チート エンジンの exe 名を別の名前に変更すると、プログラムはそれを認識しません。少なくとも、ファイル名ではなくexeのmd5ハッシュを確認するか、exe全体をプログラムに保存して、2つのプログラムのバイトを比較することをお勧めします...

これで問題が完全に解決したわけではないことは承知していますが、正しい方向に進むことを願っています...

于 2016-08-14T12:34:14.857 に答える