反编译后的数组使用解析

上午在一个群里见到有人在问反编译后的数组问题,不知道如何计算数据,想起来自己以前有写过小记录,这里再次贴上吧,供人参考一下。

对于一些简单的游戏来说,商店物品和人物血量之类的都是用数组来定义的。拿到一个游戏反编译后,经过分析寻找,发现所使用人物初始化数值为数组定义,以下为人物血量值,从第一级血量到满级都存放在下面这个数组。




这个图看不懂,没问题,我放上下图的的java代码你就明白了:



 关于这个数组,我们需要分析的是其中数值的计算,经过查询资料,这里面的数据是低级的数据存储,每一行代表着数组中一个数据,这两个数组是相互对应的。所以通过计算,一行代表着一个数组数据,每一行分成四个,同时,每个数据的最大值为255,于是第二个数据中0x1代表着一个255,加上第一个数据,再加上第二个数据的1则为数组中第二个数据的数值。

例如上面第三行为例,即:

0x0+1*255+1=256.(数据1的十进制+数据2的十进制*255+数据2的十进制=结果数据)

第五行数据为例,即:

64+255*2+2=576.



同时需要记得,这里的数据都是16进制的,可以直接用win7下的计算器将10进制数据转换为16进制即可。即如

0x64=100


这样了解以后,我们修改的时候,就可以直接修改每一行的第二个,第三个数值即可直接将人物血量调高,很简单的~




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值