当前课程知识点:游戏程序设计 > 第十七章 《游戏逻辑服务器和反外挂》 > 17.2 外挂与反外挂(上) > 17.2 外挂与反外挂(上)
第二部分了就是外挂与反外挂了一个部分
首先我们来看一下为什么会有外挂
首先我们看一下中国其实游戏市场的规模
游戏市场2018年游戏市场这个由
中国游戏市场实际销售收入
2144.4亿元
这么大一个盘子
然后中国游戏用户人数
2018年有6.26亿
就说这么多的用户
这么大的利润肯定带外挂
肯定就想来分一杯羹
然后那什么叫外挂呢
这个是维基里面的定义,外挂指的就是
通过修改游戏的代码或者数据
严重破坏游戏平衡性
扰乱游戏规则
影响游戏体验感的第三方非法程序
但是我给它一个广泛的一个定义吧
我认为就是破坏游戏公平性的
辅助工具就是外挂
目前根据腾讯的
就是腾讯安全部的一个调查
我们发现东南亚和南美和俄罗斯地区
也是游戏外挂高发区
不过中国才是使用外挂用的
最厉害的一个地方
那么其实现在玩家为什么会使用外挂呢
那我们看一下腾讯安全部
对DNF的一个调查
60%的玩家认为副本太难打不过
只能用挂
那30%的玩家认为
30%的玩家刷PK打不过想用挂虐人
10%的玩家认为功能炫酷想试一试
我大概简单说一下吧
这个是一个传送了一个挂
就是因为很多MMO里面他是有这样的
播不了视频
这个很多MMO里面他是这样的
这都有个车夫传送吗
就是我可能从A地图
我就和它车夫对话
我就可以传到B地图去
这样
很多很多关键的地图都布个车夫
或者做个传送端之类的
这个以前我们出现的一个情况就是
就是玩家
我们代码里面代码里面没有减
就是忘了
就是忘了也好漏了也好
没有检查玩家和那个车夫的一个
NPC的一个距离
然后但是客户端显示有检查了
客户端让你点到那个车夫
才能打开那个面板
但是如果外挂它用外挂
它就要客户端直接把包发上来
我在A车夫那里
我要传送到哪个另外一个哪个地图
那我们当时服务器就检查下扣钱
钱是够了
我们就把他直接给传走了就给传出去了
那么就导致的玩家他想传到哪里
都可以的属于异传
当时所遇到的一个挂
这个挂呢
是一个PK的被PK
但是PK系统的一个挂
就是A和BA站在走着走着
或者参加一个什么战斗
A走着走着它突然没人打
突然开始掉血
然后就突然就死了
然后后来我们才发现
然后对它施法的那个人
他们两个并不是在视野里面
就是说
其实两个在客户端
客户端层面是互相看不到了
不过它呢
也是用外挂发包上来就说
刚才我说那个PK那个往回回顾一下
就是技能ID和目标ID
说白了
这个目标还的它随机填
为什么它就随机填
填一个上来
我们可能当时就没有检查到两个目标ID
是不是互相在互为视野里面
那么我们只是找的到
因为他们又在同一个地图里面
距离也是也是OK的
那么其实他们就互相看不到了
但是
他是因为当时是没有检查这个嘛
以后就又被他用外挂发包上来了
然后就开始那个玩家开始掉血
最后就死了
之后就影响了战斗了一个公平性了
然后这个也是一个宝石玩法了
一个武器玩法的一个
一个挂当时也是也是这样
某个我们很多游戏里面
它可以用些低级的宝石
可以合成一个高级的宝石出来是吧
但是我们当时的那个服务器端它没有判断
没有做好检查
就是那个来源的低级的来源
宝石是否符合
就是我指定用宝石
才能合成出这个高级宝石
但是只是客户端判断了服务器忘了判断
正常来说客户端那个拉不近呢
但是它可能是用发包了
发包的方式或者破解了客户端什么
他用了几个很廉价的宝石
来合成了一个高级宝石
可以卖到钱了
而且所以这时候
这经济系统就被破坏掉了
那时候就紧急追逃了
所以这些都是这几个挂
都是当时我们是绕开了我们的客户端
发包上来了
还有这个就是我们当时
我们当时有皇城站
我们有皇城站
我们在这里就报名
申请皇城站
因为现在所有服务器的做法都是这样
你报名的时候先是 怎么说呢
先扣钱
因为
然后再发到其他模块去
继续说啊
你要报名这个之类的
但是他可能用了
当时是用了一个
他的号是不符合的
他也是绕过了客户端
要的客户端发包上来了
然后我们就先扣了钱
然后去其他模块里面去判断它不符合
是不是
是不是国王
如果不是国王退钱
但是我们退钱后忘了return,没有退出(流程)
然后又判断了另外一个条件
是不是符合不符合又退钱又忘了return
所以它当时要了客户端
本来他是报不了名的
他要了客户端发了包上来被他尝到甜头了
我发现我报名
你扣我的2锭银子
但是给我返回了6锭
我发现我好像赚了我这样
我不停续
但是就是这一点也有也被搞了
但是也是被搞了这个寄售银子
这个没有被搞
但是是我们
好在我们我们发现了
发现了没搞
就是我们寄售银子的就是说白一点
就是游戏里面的一些金钱的一些交易吗
我们可以把一下把银子卖出去换金子
或者把金子卖出去换银子
他如果我们这里勾选
我们卖银子的时候勾选了获得绑定
它就不扣手续费了吗
不扣手续费
但是如果这里就是因为这里有一个坑
如果你发上去
因为所有服务器都是先扣钱
如果发下去检查通不过
我们又给你返钱,给你返钱的话
但是如果
他勾了这一点
那其实没有扣他的手续费了
但是返的时候统一逻辑
就是把手续费一起给他返了
而且返的更多
所以这是
当时我们差点出问题
但是好在我们发现了这个问题
在我们比玩家更早发现了这个问题
我们就填了这个坑了
所以这个就是我们
我们以前遇到了一些问题
然后我再说这个打金工作室很多
很多游戏都会遇的到
基本上这个很恐怖
因为他批量上号
你很多
你们现在的QQ号是吧那么多QQ号
他们批量上
批量上以后批量一群人
体验做一样的东西去打金
就是在刷游戏里面的一些货币
一些小物品呢
就拿出去交易
所以大家看一看
这是我从安全组那边拿了图
手机墙一批手机在这里
一起进行操作同步器
你看同步器一个人操作
N个客户端一样的操作
还有用单片机是吧
甚至还有些更离谱一点的
它其实脱离了客户端
直接破解了客户端直接脱离客户端
即将破解你的协议
收你的消息发包收包
就连客户端都不需要
但是破解了就是一个收发包了一个脚本
那些更可怕更可怕
然后这个被
如果被工作室盯上了这个游戏
就有点麻烦了
首先第一
它会破坏它经济系统
因为他打了钱是吧
他们底下可能通过底下的平台
例如刚才也有老师说到
在上午老师说到
说到站在聊天框里面说说什么交易
什么元宝之类的底下
和你们底下交易就把这个线上了
游戏里面线上经济系统给破坏了
然后侵占游戏资源你上了那么多号
我导致普通玩家上不了号
因为你把战线可能把服务器资源都沾满了
再下个服务器可能只能承载个几万人
你就把服务器撑满了是吧
那这可能影响游戏口碑
这点肯定不用说的了
现在来回顾一下我刚才举的例外挂
可以作弊成功
其实大家刚才听到我说
其实我刚才前面举的几个例子
这些都是我们服务器有bug
对吧服务器有bug
他如果绕过客户端了
它就把这个bug给利用起来了
然后一些异常情况
我们可考虑的不够全面
就是该防的
该判断了
我们没有判断的住
然后这个无法保证消息来源
可靠性是什么了
最后我看它说了
被打金工作室
你这个可能用的是一个脱机挂
但是我们不知道服务器只负责收包
你的包的具体是你的内容是正确的
我就认为是正确了
我不确定你这个包是脱机挂
还是来于单片机还是哪里来的
那么现在我们能做的一点有什么呢
我总结了有这么几点可以怎么应付呢
首先一
谨慎的编码风格
谨慎的编码风格怎么说呢
其实这一点不能说是反外挂
这一点就怎么了
怎么说呢
你该
该判断指针(是否为空)
你的数组该判断页件
该判断数组是否越界
其实就是一个编码的良好习惯
避免他(外挂)用发包的方式发些非法数据上来把程序给搞写越界了
写错误了
写崩溃了
首先要保护好
你的程序能够正常运行
第二完善的监控告警
例如包括现在腾讯都有很多
这样的部门就是介入了
介入了一下实时的一个分析
就是如果某个玩家的产出
产出它突然飙升了
我们就会有告警或者这个玩家的产出
它比普通玩家像对普通玩家来说
它很有异常
我们都会有告警
所以这个就是
告警能帮助我们及时的发现问题这个
然后
提高外挂的作弊成本
和下面几点我在下面的点会展开说
就是提高外挂的作弊成本
和限制外挂的一个获利收入
还有个打金打金工作室了
在最后面三点我好过我这下一样我会详细展开来说
总机归根到底一点就是你只要使得
它的作弊成本大于它的收益
那么外挂就不会
就不会再做了
因为它的
成本大于收益
那它还做来干什么呢
只有亏钱的嘛
所以这就觉得它捞不到便宜
就可以限制住外挂了
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题