目录

32位游戏逆向安全之角色及怪物分析

32位游戏逆向安全之角色及怪物分析

角色对象作为一个特殊的个体,一般都是单独存放在一个基地址下的,而有些游戏则需要通过角色名字 或者ID到怪物遍历中去获取。通过CE搜索角色血量,得到2个地址,分别是当前血量和最大血量(如图)

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/640-20211025114258083.jpeg

当前血量下访问断点,改变血量后游戏断下,这里会断到几个不同的位置,所以正确的选择断下的代码 才能快速的找到结果(如图)

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/640-20211025114258101.jpeg

断到的函数里可以得到+F8和+C偏移,执行到返回后,在4C997D处的call 006EF250中可以得到+A8偏 移(如图)(如图)

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/640-20211025114258116.jpeg

https://mmbiz.qpic.cn/mmbiz_jpg/AWEDBp7zbXUCGNUJRjFh0oiaNphEVjNNZkg6MTxPKzBJAckR1P3NZNh5SDvNp1zZSLR5YdIicCVJA7hYciblkh44Q/640?wx_fmt=jpeg

继续向上分析,发现来源于004C993E处的call [edx+38](如图)

https://mmbiz.qpic.cn/mmbiz_jpg/AWEDBp7zbXUCGNUJRjFh0oiaNphEVjNNZUepgEdibmrKvksGEiavyAMySic3g2I7f5M8PoTHMt6KqyXzyAVpBlbnYA/640?wx_fmt=jpeg

到函数内部可以得到+10偏移和二叉树遍历(如图)(如图)

https://mmbiz.qpic.cn/mmbiz_jpg/AWEDBp7zbXUCGNUJRjFh0oiaNphEVjNNZicFrvgOPvsXEzos386fT8BFFicNjm0GKSU6pZTaROBUJXWUOTZKKZegA/640?wx_fmt=jpeg

https://mmbiz.qpic.cn/mmbiz_jpg/AWEDBp7zbXUCGNUJRjFh0oiaNphEVjNNZ2qNUbtjJiaPRmoPdJ01pztm6seHHaXSLwCoXzoCfTp520mNoJPgYSMw/640?wx_fmt=jpeg

在函数里可以得到+30偏移,而在外层可以得到基地址[10BC4E4](如图)

https://mmbiz.qpic.cn/mmbiz_jpg/AWEDBp7zbXUCGNUJRjFh0oiaNphEVjNNZxURFJicnSvAdaJIvRhuiaskymWDk1dITqfh1H2Afa7UZCMTWvCIqsh1w/640?wx_fmt=jpeg

这样我们就得到了角色血量的来源,但不是来源于一个单独的基地址,而是来源于一个二叉树遍历,经 过分析可以得出这个遍历恰好是怪物和NPC的遍历,也就是说我们想取角色信息,首先要通过角色名字去 这个遍历中去获取。

帖子没看够?

添加QQ群:805981646

每晚都有免费的公开课等你来看