81.网游逆向分析与插件开发-背包的获取-装备栏数据结构的逆向分析

内容参考于:易道云信息技术研究院VIP课

上一个内容:自动化助手显示物品数据-CSDN博客

然后游戏中有弓箭,弓箭有数量,可以作为突破口,也可以使用物品id

获取弓的方式

获取弓箭的方式

然后搜索250

然后搜索出一个

然后可以正常改成999

然后接下来找出是什么改写了这个数据

然后把弓箭拆下来

所以一共有两个地方修改它,一个是995854,一个是5BAF36,然后简单看一下看出,0x5BAF36位置有大量数据更新

0x995854位置更新单一数据

这里游戏掉线了,基址会与上方不一样

然后先使用 0x5BAF36 来找,使用哪个都行

然后ctrl+f9,再按f8 就来到了下图位置

然后下图红框位置的代码:imul指令是乘法,imul edx,edx,1E0,翻译成C++就是 edx = edx * 0x1E0,然后这就说明edx是索引

现在是通过下图红框位置的装备触发的断点,现在edx是1

现在是通过下图红框位置的装备触发的断点,现在edx是4

 现在是通过下图红框位置的装备触发的断点,现在edx是5

然后下标位置

然后武器是6

然后下掉弓之后,会自动把弓箭也给下掉,下标是7

然后由此可见0x1E0是物品结构大小,然后下图红框代码是 lea ebp, dword ptr ds:[edx+esi+22D0],然后edx是索引,所以esi是基址,接下来找esi的值怎样来的

然后看到esi是通过上层传递过来的,mov esi,ecx,这时一个thisCall,也就是当前函数是一个类的成员函数

然后记录一些esi的值,方便后续用,当前是0x1E077144

然后ctrl+f9,再按f8,来到下图位置

然后这里的ecx,与我们记录的内容一样,然后它来自于edi,所以接下来找edi

然后上图中的函数很长,所以来到它的上一层,ctrl+f9,再按f8,来到下图位置

这里的ecx就不一样了,所以 0x1E077144 这个值只能是0x951D10函数里来的

接下来来到 0x951D10函数里 一行一行的跟,看看 0x1E077144这个值第一次出现的位置,第一次出现的位置0x951D6F,从0x772300函数里得到的

0x772300函数的ecx是从0x866140函数里得到,然后0x866140函数之前已经用到了,通过调用0x866140对象(0x866140的返回值是一个对象)的0x7722C0函数获取背包,它下图中它是调用的0x772300函数,所以武器或者说装备的基址是通过0x866140返回值对象的0x772300成员函数得到,发现位置 0x951D6A

然后理一下分析到的东西,首先通过0x866140返回值对象的0x772300成员函数得到背包里的装备基址,然后在0x77F387位置知道了装备栏的算法,它直接是一个自定义类型数组,大小是1E0,然后装备栏第一个物品偏移是0x22D0,然后看图1所示装备栏一共有13个格子,它不可能会变,所以13是固定的,所以数组大小是13

图1:

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值