发布于:2018-8-30 10:40 | 124922次阅读 作者: 外部投稿 | 原作者: 通化程序员
技能库的分析大多是从技能名字入手的,然后再通过传入职业或者ID等信息去到库中去取当前角色的可用技能。下面我们来对《天涯明月刀》中的技能库进行分析。 首先通过CE对技能名字进行搜索,得到较少的结果,分别对结果进行修改,并再次切换技能栏,可以发现其中的一个地址可以改变技能的名字(如图)
通过OD对这个地址下访问断点,切换技能栏后游戏断下(如图) 向上分析eax的来源,得到来源于ECX,执行到返回两次后得到+4偏移(如图) 继续分析可以得到一个数组,和+0偏移(如图) 但是下F2断点从新观察这个地址,发现这只是一个临时写入的地址,并不能作为技能遍历的公式,所以我们要继续返回来找到真正写入的来源。 再次下断执行到返回,发现这里是一个很大的循环,线程直接卡死了,所以我们要直接来到头部下断,并通过堆栈进行返回。 返回后分析[esp+10]的来源,最终得到来源于009F337C 处的call 00F79070(如图) 函数内部则是技能库的遍历代码,而对函数的三个参数进行分析,可以发现这是根据技能类型和角色的职业对技能库进行筛选,并最终存放在eax的临时地址里。这样我们就可以自己申请结构体来存放筛选出来的技能,也可以将技能库都遍历出来,再到里面去获取技能。 下面我们就将技能库的来源进行分析。首先到函数内部,可以得到一个数组和+80偏移(如图) 返回后分析第一个参数,得到+314偏移和基地址(如图) 对技能库的公式进行整理如下 [[[[414A7A8]+314]+80]+n*4]+0 技能ID [[[[[414A7A8]+314]+80]+n*4]+8] 技能名字 其他的属性需要根据不同的技能类型,职业以及等级去逐个分析。
来源:通化程序员-投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) 收藏
|
最新评论
发表评论