发布于:2018-10-8 10:23 | 114678次阅读 作者: 外部投稿 | 原作者: 通化程序员
背包物品的遍历通常都是数据分析中较为简单的部分,因为其突破口很多,也大多有效。背包物品的存放方式也很多,比如常见的背包物品单独遍历,或者嵌套在其他遍历中,并通过标志位等信息进行筛选等等。我们以物品数量为突破口来分析下《QQ自由幻想》的背包遍历。 首先通过CE对叠加较多的药品进行扫描,可以得到一个结果(如图)
在OD中下访问断点,游戏断下,得到+8偏移(如图) 向上继续分析来源,可以发现多处eax赋值给esi,不过由于跳转原因,在0053F359处才得到来源(如图) 在这里下F2断点我们发现eax的值变化的很频繁,而且大部分都不是背包物品对象,于是我们要观察下在什么条件下eax才是背包中的物品对象。 经过多次对比分析,我们发现当0053F353处的函数第一个参数为1的时候,返回值是背包物品对象(如图) 到函数内部单步执行,在005081AD处的函数中可以得到取背包信息的数组(如图)(如图) 第二幅图中的esi等于1时,取到的是背包信息。 返回后继续向下执行,在005081D1处的函数中得到了取背包物品对象的数组(如图)(如图) 接下来继续向上分析可以得到基地址[006BE784],这样我们就得到了完整的背包遍历公式,它是嵌套在一个很大的遍历中的, 其中包括快捷键遍历,角色栏遍历等等,而单独读取的关键就是外层传入的参数1,也就是第一个数组中的数组序号。
来源:通化程序员—投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) 收藏
|
最新评论
发表评论