Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保客户端防欺诈_Java_Minecraft_Anti Cheat - Fatal编程技术网

Java 如何确保客户端防欺诈

Java 如何确保客户端防欺诈,java,minecraft,anti-cheat,Java,Minecraft,Anti Cheat,首先, 我想表明,我知道从客户端发送的任何信息都不可信,因为它们可能被欺骗。我感兴趣的是通过隐蔽性来阻止99.9%的潜在骗子的安全方法,以及实时检测绕过安全的程序的能力 对此,我有一些想法,包括通过允许客户端根据服务器的请求(通过TCP)扫描来验证它正在保护的游戏和任何潜在作弊应用的文件和内存检查和,以检测内存注入作弊和/或作弊内存占用。因此,旁路黑客必须监听通过SSL发送给它的所有TCP信息,然后通过分解加密/解密函数来解除消息的加密,以了解它想要什么。类似地,客户端本身可能是自我改变的,允许

首先,

我想表明,我知道从客户端发送的任何信息都不可信,因为它们可能被欺骗。我感兴趣的是通过隐蔽性来阻止99.9%的潜在骗子的安全方法,以及实时检测绕过安全的程序的能力

对此,我有一些想法,包括通过允许客户端根据服务器的请求(通过TCP)扫描来验证它正在保护的游戏和任何潜在作弊应用的文件和内存检查和,以检测内存注入作弊和/或作弊内存占用。因此,旁路黑客必须监听通过SSL发送给它的所有TCP信息,然后通过分解加密/解密函数来解除消息的加密,以了解它想要什么。类似地,客户端本身可能是自我改变的,允许它根据需要随机添加/删除功能(但由服务器保留),这样骗子就很难学会如何绕过它。这可能毫无意义

我只发现这对更有经验的人来说是中等难度的,所以我愿意接受其他可能难以绕过的方法

我只对可能的实现感兴趣,而不是对如何实现客户端的抗热性感兴趣,我只想让它变得非常困难

添加了minecraft和java标记,这是针对minecraft的,我知道社区足够大,有人可能会打败我的系统,但我希望通过不断更新和更改,我可以通过独创性和毅力打败他们

编辑:我发现了这篇文章:我正在添加他的建议,以避免重复,因为我正在寻找比显而易见的想法更多的想法(我不确定他的建议是否可以绕过)

1) 打开所有其他进程,并挂起它们的WriteProcessMemory函数,以便它们无法写入游戏中的内存 过程正确完成这一步将阻止90%的作弊和 欺骗引擎

2) 做同样的事情,钩住各种鼠标和键盘模拟 功能。这将阻止许多Aimbot和其他类型的应用程序 自动化机器人

3) 连接到您的应用程序中的VirtualProtectEx/VirtualAllocEx/etc函数 游戏本身的进程和监控哪些模块正在改变保护 级别或分配新内存块。你必须狡猾地对待我 这是为了防止在您的 游戏有很多分配,但它是可以做到的

4) 挂接到LoadLibrary函数并监视所有 动态加载,以防止DLL注入

5) 在游戏连接上使用一些轻量级多态编码

6) 使用一些反调试技术来防止调试器 附加到您的进程。谷歌反调试,你应该 能够找到很多东西

7) 使用定制的专用PE封隔器,以防止有效拆卸 你的游戏

8) 连接到OpenGL或Direct3D函数和方法中 透明度和阿尔法混合

9) 如果使用着色器,请对着色器和着色器常量进行校验和 价值观

10) 对玩家角色使用其他遮挡剔除技术 以防止在视线到达时渲染它们 它们被其他几何体阻止。这可能对你的工作有帮助,也可能没有帮助 性能,但它将防止许多Wallhack


我个人认为观察记忆等等是没有意义的。我可以想象,当有人实现protocoll并制造一些垃圾时,您也需要处理它,这也可能会让您的服务器崩溃

但你是对的,它可以检查内存中的坏软件,这通常是由骗子使用的,例如像电子射击游戏中的wallhacks

我认为你需要检查来自客户端的数据是否有效,以及对欺骗的反应

关于您的更新:

请不要挂接所有其他程序这有点疯狂,而且它可能会让你的程序被检测为根工具包或类似的东西。

如果你想让你的客户尊重你和游戏,你应该尊重你的客户,并意识到你所看到的游戏客户端机器可能被用来存储有价值的信息

允许客户端扫描服务器随机提供的内存的任何部分

客户端本身可能是自更改的,允许它根据需要随机添加/删除功能

<>请注意,你不是在客户端机器中打开攻击向量。阅读“随机给出的记忆的任何部分”听起来很可怕。你可以通过散列一个(不是小的)内存块并检查一个已知值来减少这种情况

让服务器发送“随机”代码可能会使您的软件看起来像反病毒/安全工具的病毒/僵尸网络。它还使客户机完全有可能被利用

更新: 1) 打开所有其他进程,并挂起它们的WriteProcessMemory函数

如果您这样做,并且注入的代码中有一个bug,则可能会破坏客户的整个机器。这似乎很激进。您运行的是什么版本的Windows?有什么权限?我敢肯定,黑客可以安排从一个你没有权限钩住的进程(比如一个你在正常用户进程中运行的管理进程)运行他的漏洞攻击。出于明显的原因,您还需要钩住
GetProcAddress

4) 钩住LoadLibrary函数并监视动态加载的所有DLL,以防止DLL注入

这并不像听起来那么糟糕,因为您只需要在本地流程中执行

6) 使用一些反调试技术来防止调试器附加到进程

当然值得去做(如果你有时间的话),但这只是一次体验式的减速