• 171阅读
  • 1回复

任鸟飞谈逆向----《魔兽世界》技能遍历分析 [复制链接]

上一主题 下一主题
离线任鸟飞
 

微信公众号  任鸟飞逆向
《魔兽世界》可以说是游戏史上技能数量最多的游戏了,而且每一个技能都不是鸡肋,那么完整的技能遍历就很重要了。
对于技能的遍历来说,名字是最常见的突破口,首先我们选择一个技能,通过CE搜索其名字(如图)(如图)




因为游戏里的汉字都是UTF-8的,所以我们搜索的是UTF-8编码的字节集。分别修改得到的结果,发现其中一个地址可以改变技能的名字显示(如图)


通过OD下访问断点,游戏断下(如图)


图中指向的地址为函数的第一个参数,所以我们跳到这个函数处继续分析其参数(如图)


继续分析[ebp-268]的来源,分析后得到00623E80 处的CALL为其来源(如图)
图片限制  下面1-5楼发
进入CALL内部继续分析,最终发现内部有一个CALL将技能的信息循环的写入到临时内存中(如图)(如图)
想整理公式很麻烦,所以我们直接调用外层的CALL,通过分析可以得到两个参数分别为第一个参数是技能ID,第二个参数是临时存放技能信息的结构体,我们只要讲ID传入正确,就可以在调用之后,讲该技能的信息存放到结构体中,这个结构体需要申请0x2A8以上的空间。
继续分析技能ID的来源,最终发现在0x625FFF处的CALL中有技能ID的遍历(如图)(如图)
[BE8D98]为技能的数量,通过对比我们发现这个数量和我们已经学习的技能的数量是相等的,也证实了我们找的数据是没有问题的。
接下来就可以通过技能ID去调CALL得到所有技能的信息了。

离线任鸟飞

只看该作者 沙发  发表于: 03-19




快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个