-
-
[原创]超激斗XX之背包遍历
-
发表于: 2021-2-7 15:05 3585
-
背包遍历作为游戏的核心数据之一,其分析方式也是多种多样,在众多的分析方式中有两种突破口是最常用的,一种是通过物品数量,一种是通过物品名字。
对于消耗品可以叠加的游戏来说,物品数量是最容易入手的方式,比如某兽,某刀等等。但是消耗品无法叠加的游戏自然就不能通过数量了,这时候就可以考虑通过物品名字或者描述来入手,比如某域,某永恒等等。
从难度上来讲,最近测试火爆游戏某某斗的背包遍历还是比较简单的,他可以直接从数量入手去分析,下面我们就来看一下分析的过程。
首先通过ce扫描,可以得到若干DWORD型的地址,通过改变数值并观察本地效果,可以确定其中的一个是我们要的地址。
在xdbg64中对这个地址下访问断点,可以得到一个+8C的偏移(这里忘记记录了,所以没有截图)
向上分析,可以得到来源于一个函数内部,在返回处得到了一个数组和+74偏移
继续向上分析,在另一个CALL内部的返回处得到了一个数组
这里除了数组,还有一个+70偏移。我们先将基地址分析出来,再回头分析两个数组的下标。
继续向上分析,可以得到+124偏移,同样是在一个CALL的返回处。
在这里下F2断点后,点F9,发现RCX就已经不变了,也就是说这里已经跳出了遍历,很快就能找到基地址了。
接着分析,再次在一个CALL的内部得到+F8偏移,并且在这个偏移上面的CALL中可以得到基地址。
我们先整理下公式如下
[[[[[[7FF72983CDB0]+F8]+124]+n8+70]+74]+m4]+8C 物品数量DWORD
我们回头来分析下n和m两个下标。首先观察m和物品数量的变化,发现这个m是物品在某个背包里的位置,而n则代表着不同的道具栏。
我们可以复制一个背包栏的对象地址,讲其拷贝到其他的道具栏的空白处,观察那些道具栏的本地数据发生改变。最后可以得到一个大概的分类,如下
n代表不同背包 0为装备栏 1为背包装备栏 2为背包道具栏 3为时装栏基本插槽
4为时装栏外观插槽 5为背包时装栏 6为境界栏 7为背包境界栏
为了准确的区分物品,我们还需要获取到物品的名字,直接通过CE扫描并下访问即可。
这个游戏的物品名字并没有放到物品库中,而是直接放到了物品对象下的某层偏移里。
这里的rdi就是物品对象,所以我们直接整理公式如下
[[[[[[[[[7FF6C5FFCDB0]+F8]+124]+n8+70]+74]+m4]+70]+88]+8C]+0 物品名字UNICODE
这个数据还是比较简单的,只是麻烦在对下标n的分析。
就写到这里吧,更多的数据敬请期待!
赞赏
- [原创]超激斗之人物基础信息 3087
- [原创]超激斗XX之背包遍历 3586
- 万能遍历之已接任务 4111
- [原创]如何通过修改人物坐标来实现瞬移 5740