今天面试问道客户端反作弊的问题
客户端了解到作弊工具有:
(1)减速类:有的安卓手机可以设置cpu渲染速度,从而使得游戏减速,之前玩微信的飞机大战试过减速去玩
(2)内存修改:烧饼修改器、八门神器、 可以搜索具体数值,还可以通过变化趋势进行模糊搜索
(3)修改代码:叉叉、UU助手 这个我了解不多
(4)直接修改本地的资源文件
1.减速器作弊
(1)减速的检测
用系统api时间计算每帧的间隔时间 好像系统时间也会改变 汗。。。 用服务器时间也会有延迟和流量的问题 (时间最好是100帧 比较长的时间的间隔)
有一个说法是这样的:
系统的sleep函数不能被减速,使用sleep 休眠一秒,那么必然现实中时间是超过或者等于一秒,如果使用系统函数获取的到sleep前后的时间不足1秒,就说明系统被减速了。
2.内存修改
对关键数据进行加密 关键数据附近的非关键数据 如果可以看得出变化趋势的 最好也加密 防止搜索到非关键数据之后再地址偏移之后得到关键数据的地址
例如 32bit整数 4字节 4个byte
先把整数拆成4个字节 之后每个字节跟一个随机的byte数进行异或 也可以先异或一个整数再拆分 存在buffer里面
3.修改代码:
4.直接修改本地的资源文件:
每次打开游戏 都对资源文件做MD5或者其他的文件指纹 跟服务器的做匹配校对
【附】:后台反作弊
客户端数据上报,根据数值成长公式这些 计算数据之间的关系 有个范围的 如果客户端数据的关系超过范围就视为作弊
这个范围就要事先或者是从用户数据中得到