致力于分享游戏安全技术,提供专业的游戏安全资讯
一般来说分析怪物对象遍历都是要从怪物的血量入手的,但是有些游戏会加入很多的陷阱,让我们无法轻易的断到正常的遍历。
首先我们用CE搜索怪物血量,这里和角色血量一样,还是要搜索浮点数,很快得到一个地址(如图)
接下来通过OD下访问断点, 很快游戏断下(如图)
这里断到的偏移和角色血量断到的一样,我们经过几次执行到返回后得到0A81C偏移(如图)
继续向上分析并执行到返回几次可以得到角色基地址(如图)
我们在这个过程中并没有得到可以用来遍历的数据结构,而怪物对象仅仅是挂在角色偏移0A818下面,也就是说这个A81C可能是临时写入的,代表的是当前选中怪物,我们将选中怪物取消,发现这个偏移中的值变为0(如图)
于是我们在这个地址上下写入断点,再次访问怪物游戏断下(如图)
继续向上分析ecx的来源,通过堆栈进行搜索,得出ecx最早出现的代码(如图)
向上分析call 0052E400的第一个参数edi,来源于0062C551 处的 call 004B8050,到call内部可以得到数组加链表的结构(如图)
返回后可以在0062C54A 处call 004B74B0内部得到基地址[8DAC28](如图)
这样我们可以得到周围对象遍历的公式如下
[8DAC28]+2142C数组起始地址
[8DAC28]+21430数组结束地址
[8DAC28]+21438周围对象数量包括数组成员和链表中的成员总和
[[8DAC28]+2142C]+n*4 数组成员
[[[8DAC28]+2142C]+n*4]+0 ID
[[[8DAC28]+2142C]+n*4]+4 对象
[[[8DAC28]+2142C]+n*4]+8 链表
链表+0 ID
链表+4 对象
链表+8 链表 判断到链表为0结束
对象+550+BF*4 对象血量
来源:通化程序员-公众号投稿
*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)
近期精品文章:
∨
投稿文章:[email protected]
原文始发于微信公众号(游戏安全实验室):【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论