【星尘传说】周围遍历分析

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

41

主题

41

帖子

271

积分

超级版主

Rank: 8Rank: 8

积分
271
发表于 2021-5-29 18:10:12 | 显示全部楼层 |阅读模式
周围对象包括怪物、NPC和玩家,有的游戏还包括一些地面物品等等,而周围对象的遍历是游戏正常运行的基础,所有的数据都是围绕这个遍历来的,分析周围对象的突破口大多是通过怪物的血量,这个和角色信息的分析是一样的,因为往往角色对象也会在周围对象中。
首先将武器卸下,选择一个怪物进行攻击,并搜索怪物血量,得到2个结果(如图)
1.png

第二个地址可以改写怪物的本地血条长度,所以我们优先选择这个地址,通过OD下访问断点,游戏断下(如图)
2.png
很容易得到了+4E8偏移,执行到返回继续分析,得到来源于call    00805822(如图)
3.png


但是经过观察发现这个call的第一个参数和他的返回值是相同的,所以我们不进入这个call分析,继续向上分析第一个参数,来到一片比较复杂的代码段,为了让分析变得简答一些,我们通过ce对怪物对象进行搜索,并且从新下访问断点(如图)
4.png

得到+8偏移,继续向上分析,得到+0+48偏移(如图)
5.png


继续分析可以得到+68偏移和基地址(如图)(如图)
6.png

7.png

回过头我们来分析下得到的数据,发现在之前经过的代码中有链表循环(如图)
8.png

这里+48是进入链表的地址,而+4C是周围对象的数量,进入链表后可以得到链表的基本结构(如图)
9.png


接下来只要对周围对象的名字坐标等进行观察分析即可。

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

使用道具 举报

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

本版积分规则

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