首页 > 其他分享 >谈谈游戏中如何防外挂和防破解

谈谈游戏中如何防外挂和防破解

时间:2023-08-07 23:01:16浏览次数:33  
标签:协议 外挂 CD 谈谈 跳跃 服务器 破解 客户端

前言

这篇文章写于2018年一直在草稿箱,当时在某厂做手游,现在回过头来看,这些方法依然有用。

对于一些外挂软件,现在我们借力AI,针对性上报玩家的行为序列log,通过AI分析是否外挂,然后把数据交由运营处理。


在我开发一款大型mmoarpg过程中和服务器主程讨论游戏中防外挂、防破解的实现和改动,讨论内容主要有如下:

防加速

服务器验证,客户端配合


内存数据加密

客户端内存加密,Unity的AssetStore上插件可实现。

尤其是对于奖励,领取条件判断及二次领取服务器一定要做检验,不要依赖于客户端。客户端所有数据都可以被修改。


协议CD

防止频繁的请求某个协议(300毫秒~1000毫秒内只响应一次)

【修改内容】

1.所有的协议都增加了CD限制,例如CS_MAP_MOVE走路协议,CD间隔是200毫秒,服务器每次收到协议后先检查和上次的间隔,如果间隔小于CD*0.8,则可以认为是网络阻塞或外挂,服务器拒绝处理协议。具体限制向服务器同学拿最新的协议CD配置。

【影响点】

1.客户端所有的协议发送。

【测试点】

修改影响到了协议收发函数对于CD限制的逻辑,以及功能模块协议限制逻辑。

测试需要验证指令是否能正常发送,同时功能模块协议限制是否正常


协议加密

在协议头增加字节数


防WPE重复发包

防重复领取,及重复进入。


监控非充值途径获得货币

所有的货币都有来源


移动防加速

有几点注意:

1、程序这边做了1.5倍的容错(速度时间1.5 > Client 移动)

2、当跳跃的时候,忽略该判断,走跳跃自己的判断

3、当判断前端发送的位置存在异常的时候,会被拉回上一个点

测试哥需要测试,走,疾走,一边跳跃一边行走时候是否有异常

防加速有以下几个修改点:

1、人物移动协议防加速,该检测逻辑放在玩家进程

2、人物强制矫正位置协议防加速,该检测逻辑放在玩家进程

3、增加人物传送点传送到下一个点位置协议,该协议功已经制定但是需要前端先行,故这部分还没做开发。

4、宠物和召唤物移动协议防加速,该检测放在场景进程

5、增加宠物和召唤物召回协议,该协议的检测暂时屏蔽,需要前端支持了该协议后,后端开启限制

测试需要过一下

玩家 移动,跳跃,传送点跳跃

宠物和召唤物 移动,召回等操作

后面补充了一下几个机制:

1,跳跃的时候行走,使用新的行走协议

2,普通行走处理了避免粘包,或者前端卡顿出现同时发送协议到后端但又属于正常情况的发送的情况

3,玩家冲锋或者被别人推移的时候,增加了容错时间段,该时间段内不处理异常的行走数据包

4,增加了传送点传送监控

5,玩家传送点跳跃落地后,增加了容错时间段,该时间段内不处理异常的行走数据包

6,前端在卡顿的时候,会导致发送行走包路程不符合要求的情况,后端做了容错次数


反外挂加速

当前冲锋技能可以穿越地图边缘的阻挡墙

后端做了优化,在释放冲锋,或者被boss击退的时候,有0.4秒的时间内,使用强制矫正协议能把角色正常拉回来,而不是把角色还原到不可走点

【系统漏洞】未限制加速

描述:未限制加速,导致攻速加快、移速加快

修复一下问题:

1,单独技能CD无效问题

2,人物死亡后,宠物释放技能攻击无效问题

3,增加了技能释放硬直时间

网络波动状态下容易被拉回


标签:协议,外挂,CD,谈谈,跳跃,服务器,破解,客户端
From: https://www.cnblogs.com/zhaoqingqing/p/17612988.html

相关文章

  • Sublime Text 4 破解教程,内含激活码(亲测有效)
    给大家分享一个SublimeText4免费注册方法,亲测可用,希望能帮助到大家,上面是我激活成功的截图。前言SublimeText是一个轻量、简洁、高效、跨平台的编辑器。SublimeText具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。S......
  • mysql密码破解
    mysql破解密码1.设置mysql免密登陆#vim/etc/my.cnf.d/mysql-server.cnf#主配置文件[mysqld]下面添加以下内容[mysqld]skip-grant-tables#免密的登陆#重启mysql#systemctlrestartmysqld2.查看数据库中用户的密码,此时是加密状态mysql>selecthost,user,au......
  • IDEA破解安装
    IDEA破解安装下载文件安装idea,点击exe文件进行安装注意勾选记住自己的安装目录,安装完成直接点击finsh将此文件复制到安装目录下的bin目录下将此文件以记事本的方式打开在最后一行添加此代码-javaagent:D:\ProgramFiles\JetBrains\IntelliJIDEA2021.3\bin\JustAgen......
  • 从一道面试题来谈谈Golang中的 ==
    写这篇文章的时候,已经离我找工作有一段时间了,但是觉得这道题不管是面试还是日常的工作中,都会经常遇到,所以还是特意写一篇文章,记录下自己对Golang中==的理解。如文章中出现不对的地方,请不吝赐教,谢谢。注意,以下文章内容是基于go1.16.4进行演示的,如果和你验证时,结果不一致,可能Go......
  • 谈谈 Kafka 的幂等性 Producer
    使用消息队列,我们肯定希望不丢消息,也就是消息队列组件,需要保证消息的可靠交付。消息交付的可靠性保障,有以下三种承诺:最多一次(atmostonce):消息可能会丢失,但绝不会被重复发送。至少一次(atleastonce):消息不会丢失,但有可能被重复发送。精确一次(exactlyonce):消息不会丢失,也不会被......
  • Access 谈谈数据导出语句 DoCmd.OutputTo
    官方文档:DoCmd.OutputTo方法(Access)|MicrosoftLearn看上去挺复杂的,其实主要看第一和第三个参数.不想去研究的朋友,下面这几行代码,应该够用了'将报表导出为PDF代码DoCmd.OutputToacOutputReport,"报表名称",acFormatPDF,,True'将报表导出为Excel代码D......
  • 暴力破解管理员密码
    先抓包抓包完修改为clusterbomb然后转到intruder然后点击右边的add添加账号密码,然后在点击payloads将字典添加进去点击右上的start开始破解开始破解结束后点击length查看各个长度就能找出正确的账号密码......
  • 谈谈 Vuex 模块化的缺点
    Vue项目经常需要用到Vuex,Vuex利用响应式,在不同的组件之间传递数据已经相当方便了,但是在使用模块化的过程中还是有点复杂,主要集中在两点:访问state,action,mutation,getter时候,必须使用模块名作为前缀基本没有代码提示假设,store的目录结构是这样的:想要dispatch一个action......
  • 谈谈对Object.defineProperty的理解
    在Vue2实现数据和页面的绑定和双向绑定使用的就是Object.defineProperty方法,然后看到Vue-Router源码的时候发现了一个有趣的事情.就是:通过代理B得到了A对象,其实是相当于B和A其实都指向了同一个地址值,我们在使用Vue的时候去改变或者拿取值一直都是通过A去拿的,在Vue里面他代理......
  • 谈谈企业进行税务风险管理的必要性
    税务风险是指企业在税务管理中,由于涉税行为未能正确有效地遵守税法规定,而导致企业出现经济损失以及企业形象受损的可能性。企业税务风险的来源主要有两个方面:1.企业的纳税行为不符合税收法律法规的规定或对相关的税务政策未能全面理解,应纳税而未纳税、少纳税,从而面临补税、罚款、......