游戏安全实验室 首页 外挂分析 查看内容

【外挂分析】《天涯明月刀》BUFF及技能预判

发布于:2017-11-23 10:34   |    143613次阅读 作者: 管理员    |   原作者: 外部投稿

为了提高游戏的可玩性,也为了提高外挂制作的难度,很多游戏对BOSS的技能伤害都设计的特别高,为了达到及时躲避的效果,我们需要对技能做预判。预判的方式有很多,比如通过收包的方式,这种方式判断的速度最快,但是代码写起来比较复杂,HOOK收包时也往往会被检测导致封号或崩溃。另一种方式就是在释放技能时进行遍历,很多游戏会加技能释放的状态和人物本身的BOSS存放在一起,比如《天涯明月刀》,《梦三国》等。接下来我们以天涯明月刀为例来分析下技能的预判。

首先我们通过搜索BUFF状态的名字,来找到技能状态库,这里要注意的是游戏内的汉字大多是以UTF-8编码的。过程很简单,我们就不去分析了,直接给公式。

[BUFF基地址]+1144]+64 BUFF名字遍历起始地址

[[BUFF基地址]+1144]+68 BUFF名字遍历数组成员数量

[[BUFF基地址]+1144]+5C BUFF名字遍历对象数量

[[[[BUFF基地址]+1144]+64]+n*4]+0 BUFFID

[[[[BUFF基地址]+1144]+64]+n*4]+4 BUFF对象

[[[[BUFF基地址]+1144]+64]+n*4]+8 BUFF链表

 

[[[[[BUFF基地址]+1144]+54]+n*4]+4]+0 BUFFID

[[[[[[BUFF基地址]+1144]+54]+n*4]+4]+4]+0 BUFF名字

我们得到一个数组套链表的结构,这个结构被广泛的应用于这款游戏当中。

接下来我们去分析NPC和角色当前所有的BUFF和技能状态。我们接着之前的BUFF库的代码继续分析,取状态名字的函数传入了一个技能ID的参数,当我们访问角色身上的BUFF时会断下(如图)

向上分析技能,我们发现追到了一个结构体数组,而我们角色当前BUFF状态和即将释放技能时的预备动作,都会存放在这个数组里,每一个动作都对应一个不同的ID。继续向上分析,发现这个数组是在角色对象下存放的(如图)

通过代码输出,我们发现这个数组也同样适用于怪物和其他玩家。公式如下

[NPC或角色对象]+304 BUFF数组起始地址

[NPC或角色对象]+308 BUFF数组结束地址

 

[[NPC或角色对象]+304]+80*n+0 BUFFID   技能预判ID

这个数组中出了ID,还有很多的未知数据,很有可能是当前释放技能的范围,目标,朝向,形状等信息,这需要通过大量的对比和分析来判断。

这样我们就达到了一个对技能的预判效果,通过遍历到BOSS的不同的技能名字采取不同的躲避方式即可。


来源:外部投稿

*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)

分享到:
踩0 赞0

收藏

下一篇:【外挂分析】CFM手游美化分析

相关阅读
最新评论
B Color Image Link Quote Code Smilies

发表评论

top 问题反馈

返回顶部