第一的,
我想表明我知道从客户端发送的任何信息都不能被信任,因为它可以被欺骗。我对通过默默无闻的安全方法来阻止 99.9% 的潜在作弊者以及检测确实绕过安全的程序的能力很感兴趣。
我对此的一些想法包括验证它所保护的游戏以及任何潜在的作弊应用程序的文件和内存校验和,方法是允许客户端根据服务器的请求(通过 TCP)进行扫描,以检测内存注入作弊和/或作弊内存占用。因此,绕过黑客必须侦听通过 SSL 发送给它的所有 TCP 信息,然后通过反汇编加密/解密函数来解密消息以了解它想要什么。同样,客户端本身可能会自行更改,并允许它根据需要随机添加/删除功能(但由服务器保留),这样作弊者就很难学会如何绕过它。这可能毫无意义?
我只发现这对于更有经验的人来说难度适中,因此我对其他可能难以绕过的方法持开放态度。
我只对可能的实现感兴趣,而不是如何不可能有客户端反作弊,我只是想让它变得非常困难。
添加了 minecraft 和 java 标签,它适用于 Minecraft,我知道社区足够大,有人可能会击败我的系统,但我希望通过使用不断的更新和更改,我可以通过独创性和毅力击败他们。
编辑:我发现了这篇文章:如何防止我们的(多人)游戏中的作弊行为?我正在添加他的建议,以免重复,因为我正在寻找比显而易见的想法更多的想法(我不确定他是否不可绕过)
1)打开所有其他进程,并hook它们的WriteProcessMemory函数,使它们无法写入您游戏进程中的内存。正确完成这一步将阻止 90% 的所有作弊和作弊引擎。
2)做同样的事情,挂钩各种鼠标和键盘仿真功能。这将阻止许多瞄准机器人和其他类型的自动化机器人。
3) 在您的游戏自己的进程中挂钩 VirtualProtectEx/VirtualAllocEx/etc 函数,并监控哪些模块正在更改保护级别或分配新的内存块。当您的游戏进行大量分配时,您必须巧妙地处理这一点,以防止它过于占用 CPU,但这是可以做到的。
4) 挂钩 LoadLibrary 函数并监视任何动态加载的 DLL,以防止 DLL 注入。
5) 在你的游戏连接上使用一些轻量级的多态编码。
6) 使用一些反调试技术来防止调试器附加到您的进程。谷歌反调试,你应该能找到很多东西。
7) 使用定制的专有 PE 打包程序来防止对您的游戏进行有用的反汇编。
8) 连接到处理透明度和 alpha 混合的 OpenGL 或 Direct3D 函数和方法。
9)如果使用着色器,校验和你的着色器和着色器常数值。
10) 对玩家角色使用额外的遮挡剔除技术,以防止他们在视线被其他几何体阻挡时被渲染。它可能对你的表现也有帮助,也可能没有帮助,但它会防止许多墙黑客。