【游戏逆向】《天堂2》背包分析

文章介绍了在物品数量不易获取的情况下,如何通过物品名字进行背包分析。使用CE扫描和OD设置断点,通过分析内存中的数组偏移找到物品相关数据,最终确定物品数量和ID的地址。在分析过程中,遇到了动态数组和可能的循环代码或虚拟机,通过深入跟踪解决了这一问题。
摘要由CSDN通过智能技术生成

背包分析大多是从物品数量入手的,但是有时候由于可叠加物品的数量较少,无法在耗尽之前得到物品数量的地址,这时就需要从物品名字作为突破口来进行分析。下面我们来分析下《天堂2》的背包。

首先通过CE对物品的名字进行扫描,可以得到较少的结果,对其进行修改后发现其中一个可以改变物品名字的本地显示(如图)
在这里插入图片描述
用OD对该地址下访问断点,在访问物品后游戏断下(如图)
在这里插入图片描述
执行到返回后两次,继续分析第一个参数的来源,可以在0B6A7178处的函数中可以得到+0偏移,而在函数上面可以得到+18偏移(如图)
在这里插入图片描述
继续向上分析可以得到一个数组和+0偏移(如图)
在这里插入图片描述
但是经过对这个数组反复下断,发现数组的起始地址是变化的,这说明这个数组并不是物品数组而是物品对象下的属性数组。

执行到返回后,可以在0B6B324F中得到+2C偏移(如图)
在这里插入图片描述
继续分析后,发现来源于第一个参数,但是执行到返回时发现线程卡主了,这说明这里有多次的循环代码或者VM之类的代码。于是我们通过跳到栈底进行返回,并得到+2F0偏移(如图)
在这里插入图片描述
继续向上分析,可以在本层函数中得到数组和+2D4偏移(如图)
在这里插入图片描述
而在多次执行到返回后可以很容易得到几层偏移(如图)(如图)
在这里插入图片描述
在这里插入图片描述
用CE对最后一层偏移所在的地址进行扫描,可以得到基地址(如图)
在这里插入图片描述
接下来只要对背包对象进行分析,就可以得到物品数量,ID等偏移。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

douluo998

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

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

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

打赏作者

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

抵扣说明:

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

余额充值