【问题标题】:Making a simple anticheat in C#用 C# 做一个简单的反作弊
【发布时间】:2016-12-20 21:16:58
【问题描述】:

我已经尝试了一些方法并在网络上遵循了一些教程,但没有任何帮助。我想做的是为我的游戏制作一个简单的反作弊程序。它所要做的就是按名称扫描源代码中定义的程序,读取它的十六进制代码并搜索字符串或十六进制值。示例:如果 cheatengine.exe 正在运行,请扫描该进程的十六进制代码。如果在十六进制代码中找到 0x328934,则关闭程序。这可能吗 ?感谢您的帮助。

【问题讨论】:

  • 是的,有可能。但这个问题对于 StackOverflow 来说太宽泛了。

标签: c# hex readprocessmemory anti-cheat


【解决方案1】:

我很惊讶你没有找到任何东西......

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 个程序的字节...

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多