文章已迁移到新博客 http://cwqqq.com/2017/12/06/online_game_security_resist
游戏才刚上线没多久,就遭遇了众多游戏工作室一波接一波的外挂洗礼。游戏工作室很喜欢新游戏,因为新游戏没有太多对抗外挂的手段和技术,漏洞也较多,而且新游戏会不断烧钱导量,游戏工作室也借机找到了大量的客户。

在经历了一番实战,或多或少总结了一些经验和技巧,这里和大家做个分享。文章分别从常见外挂对抗、安全日志对抗、安全预警对抗、策划层面对抗、其他技术对抗探讨网络游戏外挂的对抗措施。(本文, csdn 没有开花的树)

常见外挂对抗

这里列举下网络游戏影响较大的3类外挂,分别做说明:

1、产生经济利益的

a. 利用游戏漏洞获取经济利益
游戏漏洞,这是最常见且最致命的外挂了。尽管做了足够多的代码review、大量的测试,还是无法完全避免漏洞的出现。
对付这种外挂,比较常用的对抗策略是:
1、玩家收益预警,高出预估值的收益做预警
2、安全日志的记录,遇到玩家作弊,能快速定位问题,热修复
3、根据玩家举报,查看被举报玩家数据及日志。(这个看似没用,实际效果显著。游戏中的获利最终要转化成现金,这样他们就要给玩家推销)
b. 利用运营弱点获取经济利益
游戏为了增加留存,某些场景必然实打实给玩家送福利。工作室就利用这些场景反复刷获益。
对付这种外挂,比较常见的对抗策略是:
1、划分新手区,高等级玩家无法到新手区
2、限制没充值的,且刚注册不久的玩家
3、限制领奖次数(这是广义的,除了游戏中明确每人只能领几次,还包括内定限制)

2、减少重复劳动的

游戏为了增加玩家的在线时长,有很多重复性的劳动,比如任务打怪200只、收集道具50个。像这些,外挂可以帮玩家自动打怪,自动收集道具,自动交任务,自动接任务,然后再重复这个过程。
对付这种外挂,比较常见的对抗策略是:
1、适当增加内挂,即游戏内置的自动挂机
2、增加此类任务的随机性,变换任务数量、场景
3、随机增加一些确认对话框,如验证码

3、影响游戏平衡的

这种外挂,在竞技类游戏较为常见,如CF透视外挂、CF自动瞄准、LOL野怪计时、LOL技能闪避、王者荣耀透视外挂。像这些外挂,影响了游戏平衡。
对付这种外挂,比较常见的对抗策略是:
1、加强客户端对外挂的检测
2、根据外挂盈利点优化游戏,如LOL增加了野怪刷新提示
3、内存数据加密 (自定义的安全类型,用来代替语言原生的int、string等类型进行数据存储,还可重载运算符。这种可以有效对抗内存修改器)
4、客户端加壳(增加反编译的成本,减少游戏被反编译的可能性)
5、协议加密(增加修改协议的成本)

安全日志对抗

安全日志有别于游戏日志,是关系到游戏经济、游戏公平的玩家行为日志。
为什么要有安全日志?
你知道一个玩家有问题,但没有日志支撑,你不知道他怎么获利的,是否真的不符游戏规定。另外,还可以根据这个玩家的特征,找到其他作弊玩家。
安全日志采集那些数据:
根据玩家的获利点:
1、游戏币:游戏币的获得与使用,需要记录理由、增量、总量、时间
2、道具:道具的获得与使用,需要记录理由、增量、总量、时间
3、技能:比如技能释放次数、技能释放的最大范围,技能命中目标总数、单个技能命中目标最大数、单个技能的获利值、技能消耗的能量总数、技能的最大伤害、技能的总伤害
4、怪物:怪物的产出数量、被击败数量、受创值、受创次数、初始地图位置、被击败位置
5、玩法:每个玩法的情况,包括初始游戏币、结束时间、分数、获得游戏币,获得道具、对局时长、客户端对局时长
6、交易:交易双方的信息、交易道具、交易游戏币、时间
当然,安全日志不止这些,需要根据不同游戏,制定不同的安全日志。

安全预警对抗

这是在安全日志的基础上做的预警,比如刚注册当天没充值就获利1亿游戏币,这种玩家就需要预警了。预警的目的在于查找可能作弊的玩家,提醒运营人员发现作弊玩家,就好像美剧《疑犯追踪》
安全预警的手段主要有两种:
1、线上预警:线上即时预警,对一些对局、或产出数值严重超过预警值的要预警,这种是线上统计,在玩家上报分数及发奖时hook处理
2、离线预警:作弊玩家收益可能不是一两局比赛就得到了,可能要累计一段时间反复刷获得大量收益。所以要离线分析,通过分析安全日志,定制一些规则找到这些玩家。
根据作弊玩家的行为:
1、贫民富翁:刚注册当天没充值就获利巨额游戏币
2、一夜暴富:一天获得的游戏币数额超过同等玩家N倍,且没有充值、没有交易
3、明目张胆:对于排行榜前N名的玩家重点关注
4、百战百胜:没有玩家是百战百胜的,屡次都是前几名,这样的玩家多数是有问题的
5、雨后春笋:刚放出去的功能还没有受到实战考验,出错的可能性很大,要监控产出,针对一个功能设置当日产出预警值
当然,安全日志不止这些,需要根据不同游戏,制定不同的安全日志。

帐号封禁对抗

如果确定了玩家行为严重违反了游戏规则,就要考虑封禁玩家。封禁主要的好处是,将作弊太猖狂的玩家踢出众人视野。同时封禁的存在,相当于告诉玩家别使用外挂。除了这两个,还可以有效对抗游戏工作室转移资产,提高作弊成本。有一大部分工作室是靠售卖游戏货币、道具、高级游戏账号为生,而经营工作室又需要大量的成本,购置机器、网络、员工、游戏账号等,如果大量账号被封,可能会导致工作室周转遇到问题
封禁类别:
1、限制登录:限制玩家无法登录游戏,也就是封号。短时间封禁、永久封禁
2、限制玩法:限制玩家获得收益、限制分数上榜
3、限制聊天:屏蔽不良信息
封禁的难点是,怎么筛选出有作弊的玩家,避免误伤正常玩家:
1、刚注册,就有作弊行为,是封禁的重点,特别是收益巨大的
2、长时间在线的,每天日活跃达到15小时以上,甚至23小时以上
3、充值较大的玩家,就算使用过作弊器,影响不大的,也可以忽略。(毕竟是衣食父母,适当给于提示或警告)
4、同个设备号,或同个ip的多个玩家帐号都有作弊数据
5、游戏日志、或安全日志有较多的作弊日志

策划层面对抗

1、增加交易成本,限制玩家交易
增加交易成本是很有效的,工作室通常就利用多个小号刷,再汇总到一起售卖。限制的方法很多,如等级开放(30级开启),或VIP2开放,需充值多少钱可达到。或交易扣手续费
2、玩法(或功能)设定数值上限
每一关的最大分数,每个技能的最大伤害等,就算属性过多或其他理由,也要计算好这个上限,做出限制。不要单纯为了体验的东西,太大放宽这个限制。
3、玩法(或交易)次数限制
玩法如每人每天只能玩3次,交易如VIP2每天可交易2个道具、VIP3每天可交易5个道具。
4、限制较大收益路径,必须有时间成本
工作室经常都会研究出最快获利的路径,定制外挂获利。那么这个收益路径,必须要有时间成本,比如虽然是概率出,但还是限制了一天最多一次。
5、降低重复性任务所获得收益
很多外挂是通过长时间刷来累计收益,正常玩家不会长时间重复无脑劳动。对于同一种任务的收益,应该随时间增加而减少
6、适当提供自动挂机功能
游戏中很多任务是重复性的,可以适当提供自动挂机。

其他技术对抗

1、客户端加壳(增加反编译的成本,而且,不同版本加壳做一点变化)
2、通信加密(增加修改协议的成本,而且,密匙要不定期更新。或者,密匙可做成动态的,比如自增1)
3、内存数据加密 (自定义的安全类型,用来代替语言原生的int、string等类型进行数据存储,还可重载运算符。这种可以有效对抗内存修改器)
4、协议通信频率限制(限制同一个协议两次请求的间隔)
5、防加速(客户端连接服务器后,服务器把当前时间发给客户端,以后客户端发协议都加上自己算出的服务器时间,服务器检测到这个时间超过了实际时间,就认为加速)
6、顶号、重复登录处理(必须将上次登录踢出,并且数据保存完毕后,才允许本次登录)
7、关键数据服务器校验(如技能CD、移动速度及位置)
8、定期上报客户端核心资源或者配置文件md5,服务端做校验
9、客户端配置文件、资源文件加密
10、协议过期(避免截取客户端发包,重复发送)

最后语

写到最后发现,这是我第一篇不怎么讲技术的文章,我很少谈及游戏设计、开发经验、职业规划等,可能以后会花点精力搞下。毕竟技术只是帮你开启新世界的大门,而过程和结局怎样,还要靠你怎么运用它。

以上原创文字内容著作权归博主没有开花的树所有,转载需要作者同意

参考:http://blog.csdn.net/mycwq/article/details/54287869

网络游戏开发之安全对抗相关推荐

  1. 用 Unity 进行网络游戏开发(一)

    用 Unity 进行网络游戏开发(一) 这是我之前写的了,一直保存在电脑里,现在学习写博客.希望多和大家交流,共同进步,文章中说得不好的地方请指出,谢谢! 使用Unity3D进行网络游戏开发 一.Un ...

  2. 用Unity进行网络游戏开发(一)

    这是我之前写的了,一直保存在电脑里,现在学习写博客.希望多和大家交流,共同进步,文章中说得不好的地方请指出,谢谢! 使用Unity3D进行网络游戏开发 一.Unity3d简介      Unity3d ...

  3. 低成本动作捕捉解决方案及虚幻VR网络游戏开发

    大家好,我叫人宅,很高兴和大家一起分享一下本套直播课程. 课程名称:元宇宙VR技术研发 低成本动作捕捉解决方案及虚幻VR网络游戏开发 主要介绍: 在过去我们做动画,需要具备动画师能力才可以去做,K了一 ...

  4. 大型C++网络游戏开发视频教程

    国内首部大型C++网络游戏开发教程(300+课时,MINI快跑.水果忍者.DirectX技术.传奇游戏3) 课程讲师:今夜有风 课程分类:游戏开发 适合人群:初级 课时数量:343课时 用到技术:C+ ...

  5. Siki_Unity_4-4_丛林战争_Socket/TCP网络游戏开发

    Unity 4-4 丛林战争(Socket/TCP网络游戏开发) 任务1:素材.演示.Prerequisite 使用c#的有关TCP的底层API进行服务器端的开发(直接通过socket进行通信) 功能 ...

  6. 网络游戏开发-基本设计

    网络游戏开发团队 网络游戏开发团队是一个怪异的团队,因为他们需要"乌托邦式的梦想 "(pie-in-the-sky)创造力和扎实(down-to-earth)的技术相结合.这要求这 ...

  7. 2D网络游戏开发(网络篇)(十)

    2D网络游戏开发(网络篇)(十)   作者:akinggw 前言   其实,我也很想将游戏开发简单化,可不管我怎么努力,游戏开发还是那么难,还是涉及那么多知识.同样,在这里,我也希望我的翻译和讲解能够 ...

  8. 2D网络游戏开发(网络篇)(一)

    2D网络游戏开发(网络篇)(一)   来源: ChinaUnix博客 日期: 2006.05.26 11:16 (共有0条评论) 我要评论   作者:akinggw "2D网游开发" ...

  9. 2D网络游戏开发(网络篇)(五)

    2D网络游戏开发(网络篇)(五)   作者:akinggw   在第四篇中,我们学习了如何使用raknet进行服务器和客户端的连接,在这一篇中,我们将讲解如何让客户端和服务器进行通信,比如说聊天. 好 ...

最新文章

  1. 女士做软件测试的利弊有哪些?
  2. Keras【Deep Learning With Python】LSTM 循环神经网络解决Regressor回归问题
  3. mfc 使用画笔画线
  4. C语言中compile time assert的实现
  5. 总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
  6. Opera 发布新技术 Opera Unite
  7. linux连接wifi账户密码忘了怎么办,路由器账户密码忘记了怎么办_无线路由器密码忘记了怎么找回-系统城...
  8. html怎么防止表单重复提交,js防止表单重复提交的解决方法
  9. python安装requests第三方模块
  10. PHP代码中的情话,php语言编程情话
  11. Android系统性能优化(46)---Android Lint
  12. 在經歷了8個Beta版和1個RC版後
  13. dq坐标系下无功功率表达式_基于数学形态学的谐波检测
  14. 自然语言处理——基于预训练模型的方法——第2章 自然语言处理基础
  15. 计算思维是利用计算机,计算机思维论文
  16. 使用 Visio 绘制卷积示意图
  17. 原生js与css3实现简单翻页动画
  18. sin n次方 x 的降幂公式
  19. java 调用弗雷_JAVA 学习笔记
  20. 太阳能路灯实际功率怎么计算?

热门文章

  1. Redis6在Liunx系统下的安装、启动和关闭
  2. OpenVINO™场景文字识别与同步与异步推理
  3. 计算机虚拟化(HCIA)
  4. 传智播客2014王保明Linux培训系列教程
  5. 【华人学者风采】汪建军 华北电力大学
  6. Kubernetes弹性伸缩与监控
  7. c++第一课 输出“Hello word”
  8. 微众银行除了电话客服之外,还有一种联系方式要知道
  9. 基于 AT89C51 单片机的数字时钟设计
  10. PYqt5制作登陆界面