【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

admin 2022年7月13日10:12:00评论315 views字数 966阅读3分13秒阅读模式

致力于分享游戏安全技术,提供专业的游戏安全资讯   

一般来说分析怪物对象遍历都是要从怪物的血量入手的,但是有些游戏会加入很多的陷阱,让我们无法轻易的断到正常的遍历。

首先我们用CE搜索怪物血量,这里和角色血量一样,还是要搜索浮点数,很快得到一个地址(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

 

接下来通过OD下访问断点, 很快游戏断下(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

这里断到的偏移和角色血量断到的一样,我们经过几次执行到返回后得到0A81C偏移(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

继续向上分析并执行到返回几次可以得到角色基地址(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

我们在这个过程中并没有得到可以用来遍历的数据结构,而怪物对象仅仅是挂在角色偏移0A818下面,也就是说这个A81C可能是临时写入的,代表的是当前选中怪物,我们将选中怪物取消,发现这个偏移中的值变为0(如图)

 

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

于是我们在这个地址上下写入断点,再次访问怪物游戏断下(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

继续向上分析ecx的来源,通过堆栈进行搜索,得出ecx最早出现的代码(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

向上分析call    0052E400的第一个参数edi,来源于0062C551 处的 call    004B8050,到call内部可以得到数组加链表的结构(如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

返回后可以在0062C54A call    004B74B0内部得到基地址[8DAC28](如图)

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

这样我们可以得到周围对象遍历的公式如下

[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)

近期精品文章:


【游戏漏洞】CSGO人物坐标分析

【游戏漏洞】QQ西游发包分析

【游戏漏洞】Dxf游戏漏洞挖掘第3期 无敌+代码

【游戏漏洞】《魔域》端游外挂杀怪统计分析



投稿文章:[email protected]

【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

原文始发于微信公众号(游戏安全实验室):【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月13日10:12:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【游戏漏洞】RPG游戏通过选中怪物得到怪物NPC遍历http://cn-sec.com/archives/1066523.html

发表评论

匿名网友 填写信息