【游戏逆向】跳过VM分析角色对象

很多古老的游戏在不断的更新中,会加入一些VM代码来干扰对其数据的分析,原本非常简单的数据,分析起来就变的很麻烦。以《QQ仙侠传》为例,我们来分析下角色对象。

首先通过CE对角色的血量进行扫描,经过多次尝试后发现,血量是以双浮点数存放的(如图)
在这里插入图片描述
分别修改数值可以得出第二个结果是角色的当前血量,用OD对其下访问断点,打开角色栏后游戏断下(如图)
在这里插入图片描述
这里可以得到+40偏移,执行到返回后,得到来源于00564471 处call 00ED817F的返回值(如图)
在这里插入图片描述
到函数内部发现代码被VM了(如图)
在这里插入图片描述
这样我们就无法对函数内部的代码进行分析,这里有两种办法可以跳过VM继续分析。第一种是直接调用VM所在的函数,这是最直接的一种方法,但是有可能会影响代码效率,因为VM要执行的代码数量很多,而且如果VM中如果加入一些检测代码的话直接调用也可能会封号或者掉线。

第二种方法则是通过CE对返回值进行扫描,并通过下访问断点跳到一个没有被VM的代码段中。我们用这种方法来继续分析。

通过CE扫描后得到一个结果,对这个结果下访问断点后游戏直接断下(如图)
在这里插入图片描述
断到的代码是在一个循环体内,而0053845C 处的call 0048DCC0中我们发现了一个二叉树遍历的结构(如图)
在这里插入图片描述
这说明角色对象是来源于二叉树遍历的,继续向上分析,可以得到+2C偏移,执行到返回后可以得到+4偏移(如图)
在这里插入图片描述
再次执行到返回后,又出现了VM代码(如图)
在这里插入图片描述
于是我们通过CE对要分析的ecx进行扫描,并得到了一个基地址(如图)(如图)
在这里插入图片描述
在这里插入图片描述
接下来我们只需要在二叉树遍历中找到节点ID为0x66的节点,便可以得到角色对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

douluo998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值