如果你玩过刀塔传奇,你会发现它用的是短连接,每次需要连接服务器的时候才连接,处理完之后就直接断开连接了。所以你会发现,如果你先进入战斗,然后断开网络,那么你还是能继续战斗的。战斗结束后才会再一次连接服务器确认战斗结果。
好了,那么客户端作弊怎么办呢?比如我直接改了数据告诉服务单我赢了,服务端怎么知道这个是假造的呢?
首先,我们可以推断客户端源代码是无法反编译的。刀塔传奇是基于cocos2d-x的,不管是用lua还是c++,反编译得到的只能是汇编,我们可以认为这基本是无法获得源代码的。当然如果你觉得有汇编达人能够再一次反编译出来,那么我相信大部分游戏是无法依赖客户端的。这里我们基于最基本的假设就是这是非常困难的,而这个也是让客户端处理战斗过程的基本保障。
既然无法知道源代码,那么客户端要怎么作弊呢?
第一种是修改内存。比如把客户端运行的钱的内存地址找到,改成很大的一个数值,然后继续操作。当然我们相信钱这么重要的数值服务端肯定有存储的,这里只是举个例子,毕竟战斗结果或者战斗数值这种东西可能就放在客户端判断了。为了防止内存地址被找到,我们需要做的就是加密。没错,对这些重要的数值加密,当然运行的时候是会解密出来运行。不过这样的话即使修改了那些解密的数值也是没有意义的,因为实际的数值