超激斗背包

2021-02-07 14:55:33 李良人 45

背包遍历作为游戏的核心数据之一,其分析方式也是多种多样,在众多的分析方式中有两种突破口是最常用的,一种是通过物品数量,一种是通过物品名字。

对于消耗品可以叠加的游戏来说,物品数量是最容易入手的方式,比如某兽,某刀等等。但是消耗品无法叠加的游戏自然就不能通过数量了,这时候就可以考虑通过物品名字或者描述来入手,比如某域,某永恒等等。

从难度上来讲,最近测试火爆游戏某某斗的背包遍历还是比较简单的,他可以直接从数量入手去分析,下面我们就来看一下分析的过程。

首先通过ce扫描,可以得到若干DWORD型的地址,通过改变数值并观察本地效果,可以确定其中的一个是我们要的地址。

xdbg64中对这个地址下访问断点,可以得到一个+8C的偏移(这里忘记记录了,所以没有截图)

向上分析,可以得到来源于一个函数内部,在返回处得到了一个数组和+74偏移

飞郁网络培训有限公司 

继续向上分析,在另一个CALL内部的返回处得到了一个数组

飞郁网络培训有限公司 

这里除了数组,还有一个+70偏移。我们先将基地址分析出来,再回头分析两个数组的下标。

继续向上分析,可以得到+124偏移,同样是在一个CALL的返回处。

飞郁网络培训有限公司 

在这里下F2断点后,点F9,发现RCX就已经不变了,也就是说这里已经跳出了遍历,很快就能找到基地址了。

接着分析,再次在一个CALL的内部得到+F8偏移,并且在这个偏移上面的CALL中可以得到基地址。

飞郁网络培训有限公司 

 

飞郁网络培训有限公司 

我们先整理下公式如下

[[[[[[7FF72983CDB0]+F8]+124]+n*8+70]+74]+m*4]+8C 物品数量DWORD

我们回头来分析下nm两个下标。首先观察m和物品数量的变化,发现这个m是物品在某个背包里的位置,而n则代表着不同的道具栏。

我们可以复制一个背包栏的对象地址,讲其拷贝到其他的道具栏的空白处,观察那些道具栏的本地数据发生改变。最后可以得到一个大概的分类,如下

n代表不同背包   0为装备栏     1为背包装备栏     2为背包道具栏     3为时装栏基本插槽

4为时装栏外观插槽    5为背包时装栏    6为境界栏     7为背包境界栏

为了准确的区分物品,我们还需要获取到物品的名字,直接通过CE扫描并下访问即可。

这个游戏的物品名字并没有放到物品库中,而是直接放到了物品对象下的某层偏移里。

飞郁网络培训有限公司 

这里的rdi就是物品对象,所以我们直接整理公式如下

[[[[[[[[[7FF6C5FFCDB0]+F8]+124]+n*8+70]+74]+m*4]+70]+88]+8C]+0 物品名字UNICODE

这个数据还是比较简单的,只是麻烦在对下标n的分析。

就写到这里吧,更多的数据敬请期待!


电话咨询
QQ客服