【天刀系列】技能库分析

[复制链接]
查看: 22   回复: 0

41

主题

41

帖子

271

积分

超级版主

Rank: 8Rank: 8

积分
271
发表于 2021-5-27 20:04:32 | 显示全部楼层 |阅读模式
技能库的分析大多是从技能名字入手的,然后再通过传入职业或者ID等信息去到库中去取当前角色的可用技能。下面我们来对《天涯明月刀》中的技能库进行分析。
首先通过CE对技能名字进行搜索,得到较少的结果,分别对结果进行修改,并再次切换技能栏,可以发现其中的一个地址可以改变技能的名字(如图)
C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\c9dc81ed773540fe848b183d65cf776f\1.png
1.png

通过OD对这个地址下访问断点,切换技能栏后游戏断下(如图)
2.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\8ff3d8185c5e43059a1fe4f75e686a61\2.png
向上分析eax的来源,得到来源于ECX,执行到返回两次后得到+4偏移(如图)
3.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\e359b1b8e4984f4ebeba6069a06a344d\3.png
继续分析可以得到一个数组,和+0偏移(如图)
4.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\9f64534be5824d8996f1989f740134af\4.png
但是下F2断点从新观察这个地址,发现这只是一个临时写入的地址,并不能作为技能遍历的公式,所以我们要继续返回来找到真正写入的来源。
再次下断执行到返回,发现这里是一个很大的循环,线程直接卡死了,所以我们要直接来到头部下断,并通过堆栈进行返回。
返回后分析[esp+10]的来源,最终得到来源于009F337C 处的call    00F79070(如图)
5.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\0d2ecd7bc87a4401a2623afcb3514024\5.png
函数内部则是技能库的遍历代码,而对函数的三个参数进行分析,可以发现这是根据技能类型和角色的职业对技能库进行筛选,并最终存放在eax的临时地址里。这样我们就可以自己申请结构体来存放筛选出来的技能,也可以将技能库都遍历出来,再到里面去获取技能。
下面我们就将技能库的来源进行分析。首先到函数内部,可以得到一个数组和+80偏移(如图)
6.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\3904726da0a74bc88cc33e630ad9cdf0\6.png
返回后分析第一个参数,得到+314偏移和基地址(如图)
7.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\ce2ff4a11c464dbea285e4c57bbd5830\7.png
对技能库的公式进行整理如下
[[[[414A7A8]+314]+80]+n*4]+0        技能ID
[[[[[414A7A8]+314]+80]+n*4]+8]        技能名字
其他的属性需要根据不同的技能类型,职业以及等级去逐个分析。



来亦何哀, 去亦何苦?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4 © 2001-2018 Comsenz Inc.