-3

我尝试了一些方法并在网上遵循了一些教程,但没有任何帮助。我想做的是为我的游戏制作一个简单的反作弊程序。它所要做的就是按名称扫描源代码中定义的程序,读取它的十六进制代码并搜索字符串或十六进制值。示例:如果 cheatengine.exe 正在运行,请扫描该进程的十六进制代码。如果在十六进制代码中找到 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();
            }
        }
    }
}

至于读取进程内存和扫描十六进制代码,您可以将定义的十六进制代码存储在二维数组中,但我不知道如何首先获得它们。

此外,您可能应该知道这种实现不是很安全......您可以将作弊引擎的 exe 名称更改为不同的名称,而程序将无法识别它。我建议您至少检查 exe 的 md5 哈希而不是文件名,或者甚至将整个 exe 存储在程序中并使其比较 2 个程序的字节...

我知道这并没有完全解决问题,但我希望它能为您指明正确的方向......

于 2016-08-14T12:34:14.857 回答