【天刀系列】嵌套结构以及怪物属性分析

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

41

主题

41

帖子

271

积分

超级版主

Rank: 8Rank: 8

积分
271
发表于 2021-5-27 20:56:49 | 显示全部楼层 |阅读模式
怪物属性分析一般都会从怪物的血量入手,不过由于《天涯明月刀》的怪物属性经过了简单的加密处理,而且怪物的攻击较高,血量较少,所以我们可以尝试从角色血量入手去分析。
我们来到之前分析角色血量的代码处(如图)
C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\b4c9958d10524b748451336ff5dfe7ea\1.png
1.png

在分析角色血量时我们直接通过扫描对象得到了基地址,而在00FE4648  处的call    005AEC20中有一个遍历结构,不出意外的话这一定是怪物和NPC等对象的属性遍历结构。
到函数内部进行分析,得到来源于005AEC92处的  call    00D01A60的返回值,继续到函数内部得到+8偏移(如图)
2.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\bc9da27fcf074cad8bbd53fa99474a96\2.png
继续分析得到来源于00D01A76 处的 mov     eax, dword ptr [ecx+edx*4],这是一个很正规的数组结构,继续向上分析,可以得到+8偏移(如图)
3.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\faa65ecc204e4894bcd534ddb9ffa26b\3.png
返回后分析ecx的来源,得到一个数组和基地址(如图)
4.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\04325348a90246878c38d97ba809f63f\4.png
分别对两个数组进行分析,首先分析第一个,我们发现无论我们怎么下断点,005AEC8F 处数组的序号始终为1,也就是说这个数组我们可以直接给eax传入1,不需要进行遍历。事实上如果我们对游戏的数据分析完全的话,可以发现其实当数组序号为其他数值的时候,我们可以得到周围对象的一些附加属性,不过这些属性只能起到锦上添花的作用。
那么第二个数组很明显就是怪物属性数组了。不过当我们对整个数组进行输出之后,发现有个别的对象并没有在数组中。于是我们对数组周围的代码进行进一步的分析,并得到问题的所在(如图)
5.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\8c9f72b90c2849ddbe09d3bf6c5aa306\5.png
在数组的下面我们得到了一个+10的链表,在个别的数组成员下还嵌套中这样的链表,所以我们会丢掉一些怪物对象。一直遍历到+10为0时,链表才会结束。
这样我们就得到了怪物属性遍历的完整公式。当然如果想分析一些怪物颜色,怪物类别等等的,还需要对其他的结构进行分析。


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

使用道具 举报

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

本版积分规则

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