脱机外挂原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
脱机外挂原理
文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-
脱机式外挂:
完全脱离游戏客户端程序,可以与游戏服务器自由通讯的外挂程序,开发难度最大, 普通的100多开,对游戏的危害最大 ,严重破坏游戏市场、影响玩家正常游戏、缩短游戏运营周期.
正常开发流程:
解决反调试保护措施
分析游戏启动参数
逆向分析出游戏加解密算法
逆向分析出地图等资源信息
分析登陆封包,实现脱机登陆及获取角色属性、装备、物品、技能相关信息
具体功能封包分析
整合寻路算法,实现基本挂机
根据工作室需求,完善功能
反外挂杂谈
⑴一些常规反外挂关注点及个人建议
㈠脱机挂以及内挂开发首先必须解决游戏反调试保护,目前主流思想是驱动层进行调试器进程检测、标志位检测,HOOK重要函数等方法以及给游戏执行文件加猛壳利用壳的功能实现反调。
个人观点:驱动保护方法可大大提高外挂的制作门槛,但综合效果却并不是很好.驱动开发代价高昂、破坏游戏的兼容性和稳定性、对于专业的外挂团队根本无效. 君不见DNF的玩家挂、工作室挂,AION的脱机挂依然很安逸地挂着.普通外挂开发团队或自己分析或通过购买工具方式解决驱动保护,顶尖的开发团队的技术人员可能比国内90%以上的游戏公司反挂技术人员都要多而且更专业解决驱动保护也是不在话下。
有财力有技术实力的大公司可以加入驱动保护,中小游戏公司还是能免则免吧,简单的驱动起不到效果、复杂的驱动功能完善且兼容性、稳定性好可不是容易的事,况且底层的操作也不是必须的,相关的操作放到Ring3层处理、搞点猥琐手段效果亦不错.
㈡对游戏的启动参数进行加密(针对脱机挂及智能工作室内挂).
个人建议: 启动参数加密是比较容易忽视的地方,加密函数中利用GetTickCount之类获取变参,灵活应用注册表或文件操作,判断游戏是否从官方程序启动,再对相关代码段VMP
㈢检测防多开(针对脱机挂及智能工作室内挂)
个人建议:多开检测也是比较容易忽视的地方,很多游戏只是一个简单的FindWindow、CreateMutex,有等于无,此处应多方法灵活处理,VMP依旧是必须的
㈣代码完整性校验
个人建议:CRC之类算法对自身的完整效验勾挂函数的完整效验,一些重要代码段另外单独校验,校验相关代码段VMP,必要的话返回服务器中验证
㈤游戏登陆相关封包处理
个人建议:游戏的登录封包尽量复杂化,不同的封包类型中部分数据采用多重加密是必要的,多个端口乱序通讯,这些登陆分包是一次性的不用太担心算法效率问题,而此操作却可以大大增加逆向难度;另简单说明一下,如很多游戏登陆会使用MD5进行相关验证,但多是直接对密码进行加密,逆向者用PEID 的Krypto ANALyzer知道用了这个算法,到网上随便找个MD5算法不用修改就能通过,效果甚微,而如果从服务器下发部分随机密钥A再与本地固定密钥B与密码组成密钥C再用MD5加密,在MD5加密的基础上再加个可逆算法处理,这样验证强度就强多了,本人初次逆这样个流程时候就觉得很痛苦,再VMP下,嘿嘿效果就达到了
㈥敌意进程、模块扫描
个人建议:可以多启线程进行相关操作,但放在主进程中扫描依旧是必须的,不需要太早扫描,不需要太频繁扫描,扫描结果返回值的多样化,扫描结果向服务器报告但在客户端是不需要立刻体现,此处灵活点,极尽猥琐,你可以很好的使用反外挂这把双刃剑,老规矩相关代码VMP.
外挂黑名单的获取:
A:玩家挂,直接搜索或购买
B:工作室挂,无间道、靠道友、声势浩大的反外挂奖励活动(这招效果不错,毕竟工作室的员工也想发笔横财,虽然不一定能拿到奖励…)
C:其它,多接触些有点名气的外挂代理
㈦客户端失去响应
个人建议: 一定时间客户端没有反应断开连接,这个时间能短就短,调试过的都知道,这样调试起来痛苦多了
㈧图片答题机制
个人观点:图片答题实现起来容易,却可以大大增加写外挂的难度、成本。
目前外挂应对方法
A:算法解析
B: 自建图库
C:人工答题(工作室挂一般都把图片传到指定答题机器上)
所以图片本身要处理的复杂点,噪点之类多多益善,基本断绝算法解析的希望;图片经常更新,或者写个小算法一个图片重复使用,让外挂的图库成为鸡肋,把外挂逼到人工答题这条路上,这样外挂难度、工作室成本就上去了,老规矩图片验证相关代码VMP。
⑵综合反外挂
曾经看到一个说法“做外挂与反外挂技术上是对等的,完全靠技术手段是反不住外挂的,最好的反外挂系统是游戏本身”,对此,我深表认同.反外挂应该从策划、技术、法律等多方面进行.
㈠策划方面:
RPG类个人比较推崇征途、剑侠类似的模式
A:打怪获取经验较低,游戏自带内挂,解决了很多没时间练级的玩家需求(我就属于此类玩家,愿意花钱去玩游戏,但没空玩游戏,购买高级账号总是被无耻卖家找回,还搭上装备,默哀下…);从反外挂的角度,我建议此类游戏内挂带最基本的挂机功能即可,吃药的、捡物的、技能的通通不带,应让此功能成为内挂开发者的鸡肋,不然开发内挂可就容易多了
B:
游戏中打怪、极大部分任务获取的游戏币是绑定的,绑定游戏币购买的物品同样是绑定的,可用于交易的货币只有有限的途径可以获取,目前我接触到得几个这类模式的游戏,工作室都是靠这些有限的途径打钱,官方一次大变动就可能导致外挂作者放弃或工作室放弃。
聪明的策划朋友们,发挥你的想象力,在游戏内容、游戏模式上多下功夫
㈡技术方面:
上面已经罗列了一些技术方面关注点,再者我认为单纯靠技术是防不住外挂的,就结合游戏、外挂再简单介绍下
游戏的交易、镶嵌、邮寄等系统必须严格检测:
现在的游戏市场竞争激烈,出现大的公开的此类漏洞可能直接毁掉游戏,若是自己公司开发的游戏,有可能的话直接代码层的审查,逻辑检测、溢出检查、对不正常的数据判断等等,对于无法看到代码的游戏通过逆向明文发包函数、分析出相关报文结构,用错误的逻辑、特殊处理的封包对这些系统进行完全检测(服务器是否可以对这些明显封包异常做些惩罚措施?)。
内挂多是注入DLL到游戏进程中,新起个外挂主线程,工作室内挂控制台的实现,可否根据其实现过程、特点(主窗口句柄类名、线程ID等等)做些对应措施?
除去服务器验证,游戏的另一张王牌强制更新是否妥善利用,内挂开
发者怕游戏更新什么、脱机挂开发者又怕游戏更新什么?
对于P2P类的网游,极尽你的能力在反调、随机函数保护、属性验证
方面下功夫吧,不然什么样的BT功能不能实现?。