【天刀系列】怪物坐标分析

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

41

主题

41

帖子

272

积分

超级版主

Rank: 8Rank: 8

积分
272
发表于 2021-5-27 21:06:43 | 显示全部楼层 |阅读模式
怪物和NPC的坐标由于不好控制其走位,所以扫描起来也比较麻烦,所以一般来说我们都是从角色坐标入手去分析怪物坐标遍历。由于《天涯明月刀》中的角色坐标在遍历中的访问很少,并没有从直接得到角色坐标基地址的访问代码那么多,所以我们想直接返回到遍历中是很难的。于是我们尝试从某些坐标偏移所在的函数头部下断,来寻找不同的返回,从而得到怪物遍历经过的代码。
我们来到角色坐标+404偏移所在的函数处(如图)
file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/fdf9a4ba40d44cf98c516cdcae45d364/1.png
1.png

我们在头部下断后,第一次断下得到的是角色的坐标地址,我们点F9发现ECX变化,而ecx+4也变为了“ManNPC”,这说明我们断到了NPC坐标所在的地址(如图)
2.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/3659d30e71d04d90b682485828875578/2.png
执行到返回并继续分析ecx的来源,经过一层参数传递,和一层局部变量传递,得到了-10偏移(如图)
3.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/9c192ebe5306406895fe18fc888f0cd5/3.png
继续向上分析又转到了错误的代码中,于是我们通过CE对这层偏移的来源进行扫描,得到较少的结果(如图)
4.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/98be5a89895244f099fedfaca56ba035/4.png
如果对怪物的属性分析稍微熟悉一点,可以观察到在这个地址上面是怪物的两个ID(如图)
5.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/0ca7aecf91a94eaaa6a73c7dffa7af31/5.png
用OD对这个地址下访问断点,游戏很快断下(如图)
6.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/dc484fb57ca6479d9a1847df07c91af8/6.png
访问代码较多,所以可能断的位置会不同,但是得到的结果相差不大,这里我们得到+8偏移,继续向上分析得到来源于01097B95 处的 call    00CEFE80内部,到函数内部可以得到一个数组套链表的结构,以及基地址(如图)
7.png


file:///C:/Users/AKM/AppData/Local/YNote/data/qq4EBD6EA8DB709B20B5FA91D19DC75C0E/ea5cf5be9a264cc69d3b9bcfce42cd1f/7.png
这样我们就得到了怪物坐标的遍历公式,不过由于分析的方法不同,可能每个人得到的公式会有一定的差异,不过只要结构中的对象数量一致就没有任何的问题。



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

使用道具 举报

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

本版积分规则

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