【发布时间】:2020-12-12 09:44:57
【问题描述】:
请问如何检测作弊引擎?
这是我发现的:
- 进程名称
- 进程主窗口标题
- 进程图标文件 (?)
- 处理 EXE 文件哈希
- 处理 EXE 完整路径
你知道其他方法吗?
【问题讨论】:
标签: security anti-cheat
请问如何检测作弊引擎?
这是我发现的:
你知道其他方法吗?
【问题讨论】:
标签: security anti-cheat
我不是这个领域的专业人士,但我认为您提到的参数都不可靠。请记住,它是一个开源软件,因此所有参数都可以轻松更改(自定义构建)来欺骗你。
我认为像 CE 这样的所有程序最常见的方面是DLL Injection(这是一个 windows 的术语,但在其他操作系统中也有类似的技术)。虽然这只是 CE 提供的功能之一。
因此,您必须检查进程地址空间中所有已加载的 DLL。您知道应该有什么以及其他任何内容注入到您的进程中。您可以通过Process Explorer(确实存在可用于自动检测的相关 API(即,无需用户与图形软件交互),但对不起,我不是 Windows 人)。如果您想了解更多信息,有一个很好的 article by Chris Hoffman。
如果有人提出更好的答案,我很高兴听到。
【讨论】:
你可以使用CreateToolhelp32Snapshot这个api你可以获得系统中运行的每个进程信息,你可以使用EnumWindows来获取windows名称你可以Detour hookLoadLibraryA和LoadLibraryExA来检测是否有dll 被注入并使用IsDebuggerPresent 和CheckRemoteDebuggerPresent 来阻止进程调试
【讨论】:
你说的大部分是外部扫描,基本上只是扫描作弊引擎的某些方面来检测它。
如果您打算检测它以进行反作弊,那么您提到的方法很不走运,因为所有所说的东西都很容易被欺骗,如果您开始开发反作弊,我建议检测代码注入或十六进制修改之类的东西.
如果您在一个项目中工作只是为了检测 CE 的功能并且您不专注于停止作弊引擎,那么您可以编写一个脚本来检测进程名称或 PID,对于 EXE 文件哈希和 EXE 完整路径这些 arn '不可靠,因为它们可以轻松更改整个脚本历史记录并通过图标文件检测进程,您也很不幸,因为您需要知道进程名称或 PID 以获取有关进程的信息并 RIP 图标以读取它然后匹配图像。
窗口标题也确实不可靠,因为在内存黑客和其他与 CE 相关的东西时,CE 标题会发生很大变化。
进程名称也很不可靠,因为 CE Title 会在内存黑客等情况下发生变化。
检测 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#。
【讨论】: