0

看到简单的钩子示例,我能够为 openProcessMemory 创建一个钩子,以防止某些黑客攻击某些游戏。我面临的情况是,一些黑客做得如此之快,以至于我无法及时进行注射。例如:进程A(黑客)进程B(游戏)进程C(反作弊)

A的进程打开游戏的进程内存,写入期望的数据,然后自己关闭,不给C进程的时间,注入A,钩子openProcessMemory捕捉黑客试图打开游戏进程的时刻。当黑客等待用户输入时,此过程运行良好,因为给反作弊者时间做他的工作。

所以,这里有一些问题:有没有办法通过 c# easyhook 知道游戏内存何时会被黑客修改?当前挂钩 openProcessMemory (opm)、writeProcessMemory (wpm) 或 readProcessMemory (rpm),但存在描述的问题。

当某些相关方法(opm、rpm 或 wpm)在目标进程中执行某些操作时,该目标进程是否可以根据相关方法激活另一个 winApi 功能?

摘要:我正在挂钩注入器进程。它可以在反作弊有时间上钩时起作用。我想在游戏过程中制作钩子,这导致我进入注入器过程。

4

1 回答 1

1

我建议不要挂钩您不拥有的进程,这不是解决您问题的正确方法。

正确的解决方案是发布一个驱动程序,该驱动程序使用 ObRegisterCallbacks 来阻止对您的进程的访问。每次请求进程句柄时,您都使用 ObRegisterCallbacks 创建回调。当调用 OpenProcess() 时会发生这种情况,然后当请求游戏/反作弊进程的句柄时,您将剥离句柄权限(读取和写入)。这是您可以创建的最有效的反作弊解决方案,它将立即阻止 99% 的黑客,他们甚至无法连接作弊引擎。虽然制作驱动程序可能听起来很复杂,但这个驱动程序相对简单并且需要有限的编辑。

这是微软示例源代码

有没有办法通过 c# easyhook 知道游戏内存何时会被黑客修改?当前挂钩 openProcessMemory (opm)、writeProcessMemory (wpm) 或 readProcessMemory (rpm),但存在描述的问题。

您无法从您自己的进程中检测到 ReadProcessMemory 或 WriteProcessMemory。

您可以在每个进程中全局挂钩它们(我不推荐),并通过针对您自己的进程的句柄进行过滤,如果它们确实针对您的进程,则返回。

或者,您可以遍历系统上所有打开的进程句柄,找到对您的游戏进程具有写入权限的进程句柄,然后终止这些进程。这通常被认为在用户模式下是不可能的,但它是,向您展示如何做到这一点的源代码可在此处获得

我正在挂钩注射器进程。它可以在反作弊有时间上钩时起作用。我想在游戏过程中制作钩子,这导致我进入注入器过程。

采用 Guided Hacking Injector 的注入器方法:

在此处输入图像描述

您可以在游戏进程中挂钩 LoadLibrary、LdrLoadDLL、LdrpLoadDLL 以停止注入,但您将很难阻止手动映射,因为它不使用正常的 DLL 加载 API。您可以挂钩 VirtualAllocate() 和 VirtualProtect() 来检测手动映射,但这需要大量定制。直接使用系统调用可以绕过这个。

所有用户模式保护都可以轻松绕过,这就是我推荐 ObRegisterCallbacks 驱动程序的原因。

于 2021-02-05T04:54:21.923 回答