如何检测作弊引擎



我想问你如何检测作弊引擎

这就是我发现的:

  • 进程名称
  • 进程主窗口标题
  • 进程图标文件(?(
  • 处理EXE文件哈希
  • 处理EXE完整路径

你知道其他方法吗?

我不是这个领域的专家,但我认为你提到的参数都不可靠。请记住,这是一个开源软件,所以所有这些都可以很容易地更改(自定义构建(来欺骗您。

我认为像CE这样的程序最常见的方面是DLL注入(这是一个windows术语,但在其他操作系统中也有类似的技术(。尽管这只是CE提供的功能之一。

因此,您必须检查进程地址空间中所有加载的DLL。您知道应该存在什么,其他任何东西都被注入到您的流程中。你可以通过Process Explorer进行检查(确实有相关的API可以用来自动检测(即无需用户与图形软件交互(,但很抱歉我不是Windows用户(。如果你想阅读更多,Chris Hoffman有一篇很好的文章。

如果有人能想出一个更好的答案,我很高兴听到。

您可以将CreateToolhelp32Snapshot与此api一起使用,您可以获取系统中运行的每个进程信息,您可以使用EnumWindows获取窗口名称。您可以Detour hook LoadLibraryA和LoadLibraryExA来检测是否有dll被注入,并使用IsDebuggerPresent和CheckRemoteDebuggerPresents来阻止进程调试

你说的大多数都是外部扫描,基本上只是扫描作弊引擎的某些方面来检测它。

如果你计划检测它的反作弊,那么你的运气不好,因为你提到的方法很容易被欺骗,如果你开始开发反作弊,我建议检测像代码注入或十六进制修改这样的东西。

如果你在一个项目中只是检测一个函数的CE,而你没有专注于停止欺骗引擎,那么你可以写一个脚本来检测进程名称或PID,对于EXE文件哈希和EXE完整路径,这些是不可靠的,因为它们可以很容易地在整个脚本历史中更改,对于逐个图标文件检测进程,你也很不幸运,因为你需要知道进程名称或PID来获取进程信息,并RIP图标来读取它,然后匹配图像。

窗口标题也确实不可靠,因为当内存黑客攻击和其他与CE相关的东西时,CE标题会发生很大变化。

进程名称也非常不可靠,因为当内存被黑客攻击时,CE标题会再次更改。

检测CE的一种可靠方法是检测其调试器,尝试检测CE何时将其调试器连接到进程,并扫描CE注入和使用的未知库。

对于检测CE,我建议您尝试检测CE调试器的基本地址,您也可以尝试检测某些程序集的移动,如这里的

alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)
newmem:
// NULL
originalcode:
mov [ecx+38],eax
mov eax,[edx+3C]
exit:
jmp returnhere
"process.exe" +B5B23
jmp newmem
nop
returnhere:

这是CE调试器使用的代码注入脚本

这只是你需要检测的一个样本,但你需要一个非常优化的脚本和快速脚本来尝试扫描汇编字节和地址的过程,以找到特定的字节数组。如果你要这样做,我建议用C++或C#进行编码,Python在这种情况下是不可靠的,因为你需要扫描内存地址,并且使用当前用于Python的内存黑客库工具集,它在这种情况中不起作用,所以我推荐C++或C#。

最新更新