我目前有一个多人游戏,玩家开始使用内存编辑来取消攻击动画,使攻击包来的更快,或者使攻击比正常的快很多。
是的,一个更好的设计会很理想,但这可能需要一段时间。我想弄一个可以快速完成的临时修复方法。
我的想法是
EnumWindows
检查窗口类,如果检测到已知的内存编辑器,则会停止游戏。EnumWindows
将在每次攻击时执行。(针对客户端)ReadProcessMemory
读取正在运行的进程并找到已知内存编辑器的标志。那么问题是,以下任何一个方法是否可以工作,以及如何完成。
ReadProcessMemory
或 OpenProcess
(虽然我认为这不会有效,因为这些函数被内存编辑器调用,而不是我的游戏)。ReadProcessMemory
在我的self(游戏)上,检查它们正在改变的地址,检查是否在正常范围内,然后退出。如果数值不在正常范围内就退出。我知道这样做是徒劳的,因为知道自己在做什么的作弊者仍然可以绕过所有这些。但我的游戏只有大约600名活跃玩家,我相信他们只是有些 scriptkiddies
. 我想这个简单的对策对于我这样的小游戏来说应该足够了。不过当然,设计上会有修正。
绕道ReadProcessMemory或OpenProcess并退出时调用?
这些都不是在你的进程中被调用的,所以在本地钩住它们不会有任何作用。 你需要钩住每一个正在运行的进程,这是不推荐的。
在我的self(游戏)上读取ProcessMemory,检查它们正在改变的地址。检查是否数值不在正常范围内,然后退出。
你不需要ReadProcessMemory,你在自己的进程里面。 只要正常检查数值就可以了。
你应该在服务器上计算这些值,如果你不想让客户端的能够操作这些值,那么就把这些信息复制到客户端,然后覆盖它们。
你也可以在你的客户端添加一个反调试库来防止大多数人操纵你的进程。 在这里,你可以在你的客户端添加一个反调试库,以防止大多数人操纵你的进程。 是个不错的选择