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