Tag: 反作弊

如何保护客户端反作弊

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