欢迎来到天天文库
浏览记录
ID:26634074
大小:495.85 KB
页数:29页
时间:2018-11-28
《代理游戏反外挂思路》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、代理游戏反外挂思路演讲者:nbw简介代理游戏反外挂简介常见外挂和反外挂策略网游交互流程简介游戏分析的技巧代理游戏保护技术代理游戏举例代理游戏反外挂简介代理游戏优点游戏成熟,有专门的开发公司与成熟的外服运作经验;bug少。很多被代理的游戏在外服已经运作,漏洞已明显减少;推广容易。很多代理游戏已被玩家群体所了解认可代理游戏缺点无源代码,修改周期长、可控性差;反外挂不容易,很多代理游戏反外挂系统在外服运作已经被外挂群体占领;bug修复困难。没有代码情况下,很难定位、修复bug。常见的外挂类型(II)内挂1、修改通
2、讯数据;2、模拟键盘鼠标;3、调用游戏自身函数和数据;(I)脱机脱离游戏运行的脱机外挂已可以方便被打击,难以生存;随同游戏一起运行的辅助外挂逐渐流行;(III)模拟挂外挂不修改通讯协议,仅靠加强加密算法和通讯数据检测很难查出。可采用反外挂策略2、加强游戏本身完整性检测,减少游戏内部被利用;1、加强服务端策略性检测;3、对游戏关键数据进行保护;4、对游戏关键函数进行混淆。结合本次议题,主要分享如何在无源代码情况下(即代理游戏),通过对游戏进行分析,实现2、3、4种方案。网游交互流程简介怪物信息人物信息NPC信
3、息物品信息其他攻击怪物其他物品相关NPC交互人物交互玩家外挂1服务器外挂21.客户端与服务器交互流程网游交互流程简介外挂和反外挂都关心客户端与服务端交互的数据处理,而非游戏图形引擎。与windows的消息处理一样,与服务端交互的数据也有自己的数据处理机制。A、状态机形式B、功能函数形式C、以上二者结合以上架构的实现并没有特定方式,可能由单独的线程来实现,也可能不同线程进行配合,数据的组织也多样化。需要设计人员或分析人员进行确认,从而方便在无游戏代码情况下对客户端进行针对性保护。2.客户端数据处理流程S1S5
4、S4S3S2Fun1网游交互流程简介状态机不停运行,检测各个标记位,发现标记位变化,则进入相应处理。Fun2重点是对状态标识位的分析与参数的分析3.状态机原理简介网游交互流程简介游戏本身没有专门的数据处理线程,而是对客户端的鼠标键盘IO操作进行响应,如检测到鼠标点击,则判断是否在地图上,如果是走路行为,则转入走路函数。这种形式的数据处理一般从客户端发送函数分析上层调用就可以简单找到相关功能函数。4.功能函数调用简介网游交互流程简介//走路函数VoidWalk(DWORDx,DWORDy){SetState(
5、_GOWALK);//设置自动机状态位TargetPoint(x,y);//设置走路坐标参数}既有状态位修改,也有功能函数调用。实质上是对状态位的封装。避免直接引用状态位,引发不可测错误。重在找出设计人员的原始调用接口,而不是断章取义拼凑函数内部代码。5.状态机结合功能函数调用游戏分析技巧1.游戏的数据结构外挂有自己的算法,游戏内的数据结构和数据才是操作目标。通常关键数据:Player属性结构、怪物链表、物品链表、地图信息表、其他相关链表。常用的数据结构:数组、链表、二叉树。数组可能有一维数组、二维数组;链
6、表可能有动态链表、循环链表等;二叉树一般是平衡二叉树,方便进行有序查找。游戏数据结构和内存位置泄露非常危险!游戏分析技巧(1)1、寻找程序员留下的调用接口外挂会尝试调用程序员设计的函数接口实现外挂功能,即简单又稳定。反外挂人员也应该从此处入手;2、检查调用处次数利用反汇编器,查找对发送函数的调用次数,根据调用次数判断。如给服务器发送数据的函数,被引用次数一般非常多。3、利用不同功能寻找调用接口如不好判断走路函数接口,则可以进行不同方式的走路,如每种方式都会调用某函数,则极可能是程序员预留的接口;4、利用不同
7、状态寻找关键函数如不好寻找地图障碍点判断函数,则可以试图走向可达位置和不可达位置两种情况,对两次代码流程比较,二者流程分离的位置就是障碍点判断位置。游戏分析技巧(2)5、留意游戏内非常规功能如:a、游戏内自带的辅助性工具,其功能实现接口可能被外挂利用;b、游戏内快捷按键功能能被利用;c、“人物跟随”等其他非正常功能可能被利用。6、信息打印产生的信息泄露如:游戏内显示人物属性界面,会打印人物所有信息,如果找到打印函数,在此处分析往往会把人物所有信息都获取到游戏分析技巧(3)7、数据结构的查找如:每种数据结构
8、都可能会有很多地方引用。如怪物链表,怪物信息修改、删除、打怪、选怪等很多地方都会引发对怪物链表的操作,很难通过对某处代码施行保护防止别人分析出怪物链表。游戏分析技巧(4)游戏怪物链表分析(1)怪物链表枚举一:按tab键选怪movesi,dwordptr[esp+18]moveax,dwordptr[esi+44]movebp,dwordptr[eax]//获取链表指针addesi,40movdwordptr[es
此文档下载收益归作者所有