【发布时间】:2012-11-29 09:23:36
【问题描述】:
首先,
我想表明我知道从客户端发送的任何信息都不能被信任,因为它可以被欺骗。我对通过隐蔽性来阻止 99.9% 的潜在作弊者以及实时检测确实绕过安全性的程序的能力感兴趣。
我对此的一些想法包括通过允许客户端根据来自服务器的请求(通过 TCP)进行扫描来验证它所保护的游戏以及任何潜在的作弊应用程序的文件和内存校验和,两者都是为了检测内存注入作弊和/或作弊内存占用。因此,绕过黑客必须侦听通过 SSL 发送给它的所有 TCP 信息,然后通过反汇编加密/解密函数来解密消息以了解它想要什么。同样,客户端本身可能会自行更改,并允许它根据需要随机添加/删除功能(但由服务器保留),这样作弊者就很难学会如何绕过它。这可能毫无意义?
我只觉得这对于更有经验的人来说比较困难,所以我对其他可能难以绕过的方法持开放态度。
我只对可能的实现感兴趣,而不是如何不可能有客户端反作弊,我只是想让它变得非常非常困难。
添加了 minecraft 和 java 标签,它适用于 Minecraft,我知道社区足够大,有人可能会击败我的系统,但我希望通过使用不断的更新和更改,我可以通过独创性和毅力。
编辑:我发现了这篇文章:How to prevent cheating in our (multiplayer) games?,我正在添加他的建议,以免重复,因为我正在寻找比显而易见的想法更多的想法(我不确定他是否不可绕过)
1) 打开所有其他进程,并钩住它们的 WriteProcessMemory 函数,这样它们就无法写入游戏中的内存 过程。正确完成这一步将阻止 90% 的所有作弊和 作弊引擎。
2) 做同样的事情,挂钩各种鼠标和键盘仿真 职能。这将阻止许多瞄准机器人和其他类型的 自动化机器人。
3) 挂钩到您的 VirtualProtectEx/VirtualAllocEx/etc 函数 游戏自己的进程并监控哪些模块正在改变保护 级别或分配新的内存块。你必须狡猾 这是为了防止它在你的 游戏做了很多分配,但可以做到。
4) 连接到 LoadLibrary 函数并监视任何 DLL 动态加载,以防止 DLL 注入。
5) 在您的游戏连接上使用一些轻量级的多态编码。
6) 使用一些反调试技术来防止调试器 附加到您的流程。谷歌反调试,你应该是 能找到很多东西。
7) 使用定制的专有 PE 打包程序来防止有用的反汇编 你的游戏。
8) 连接到您的 OpenGL 或 Direct3D 函数和方法 具有透明度和 Alpha 混合。
9) 如果使用着色器,校验和你的着色器和着色器常数 价值观。
10) 对玩家角色使用额外的遮挡剔除技术 以防止它们在视线到达时被渲染 它们被其他几何图形阻挡。它可能对您有帮助也可能没有帮助 性能也很好,但它会防止许多墙黑客。
【问题讨论】:
-
该列表是阻止 99.9% 作弊者的列表。是的,该列表中的所有内容都是可绕过的,因为您可以做的所有事情都是可绕过的。
-
我仍然讨厌通过默默无闻来投票的安全性。默默无闻也会惹恼合法玩家/用户。
-
添加 Denuvo、Steam 和其他一些保护。撒上仙尘,聘请牧师和营销人员。而且它最终还是会被打破。请参阅刺客信条和其他的。
标签: java minecraft anti-cheat