LZ以前开过几个服务器。后来因为各种原因都关闭了。。
其中最大的问题就是各种作弊了。
相信很多玩家对各种作弊手段都表示十分厌恶。

后来LZ就想要不自己做个可以防止作弊的服务器吧。虽然LZ的水平很差,但是在强大的baidu的帮助下进度还不错。
在这里和大家讨论下防作弊的几种方法。看看还有没有什么bug会被利用到。

首先想要防止作弊需要具备以下几个条件:
1、专用启动器
2、自有服务器

为什么需要以上2个条件呢?
原因在这里!

专用启动器:
专用启动器主要用于检测游戏文件的合法性,说的简单点就是屏蔽一切可以作弊的文件。比如修改过的jar文件,透视材质,找矿mod等等。防作弊的登陆器需要有以下几个功能:
1、启动检测。必备功能!需要检测游戏文件是否可以作弊,如果可以作弊的话就自动关闭游戏。LZ建议采用hash值对比手段来实现这个功能。
2、文件夹监控。必备功能!用于监控启动游戏后材质包和mod文件夹下的文件变化。如果是被添加了用于作弊的程序则自动关闭游戏。
3、进程保护。用于保护启动器进程,防止玩家启动游戏后强行结束登陆器或文件夹监控进程,然后就可以放透视材质包啦。保护的方法有2种,一种是本地保护,检测到启动器被关闭的话自动关闭游戏。另外一种是远程保护,服务器检测到玩家的启动器被关闭就自动将该玩家踢下线。

自有服务器
自有服务器主要用于建立验证服务器。用于验证玩家账号和游戏文件的合法性。
1、hash值验证。主要用于保存文件hash值,用于玩家启动时对比文件合法性。
2、账号验证。很简单的服务,主要是强迫玩家注册。可有可无的功能。


防作弊的核心手段就是以上几点了。
后来LZ想了下发现有一个更好的防作弊手段了。
相信这里所有人都玩过网络游戏。而网络游戏的防作弊手段LZ觉得可以拿来参考。
同样都是专用启动器,强制玩家使用规定的游戏文件,已防止作弊。唯一存在差异只是在服务器端不同而已。
网络游戏有登录服务器,可以检测玩家的数据封包来确定数据的合法性,而MC则没有办法做到。
因为我们无法去修改MC的核心文件,来改变数据封包,无法让指定服务器的数据封包有独特性。
后来LZ查询相关资料后发现还是有办法解决的!
那就是利用MC原有的正版验证程序来实现这个功能。玩家通过正版验证后MC的正版服务器会给玩家一个随机代码(--accessToken 这个变量,有兴趣的朋友可以去baidu看看就明白了),然后玩家登录的时候会附上这个代码,而服务器端则会通过随机代码和玩家id来判断该玩家是否是正版的,从而给予登录权限。
我们要做的就是自建一个验证系统。

那么接下来就简单多了。我们在启动器内设置账号系统,强制玩家注册登录。登录后服务器给该id分配一组随机代码,并发回到玩家客户端。玩家在启动的时候附上该代码。然后我们在服务器上搭建一个网关转发程序。所有连接服务器的数据在这里需要经过验证ID和代码,符合的话转发到真正的服务器端口上。不符合的话断开。

这样一个完美的防作弊服务器就算搭建完毕了!!!


PS:以上只是思路,LZ也写的差不多了。仅供有一定功底的朋友参考。
PS2:对于不懂编程的朋友可以发表各种意见,看看LZ是否还有遗漏。上面的方法是否还会被突破作弊。