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