上午在一个群里见到有人在问反编译后的数组问题,不知道如何计算数据,想起来自己以前有写过小记录,这里再次贴上吧,供人参考一下。
对于一些简单的游戏来说,商店物品和人物血量之类的都是用数组来定义的。拿到一个游戏反编译后,经过分析寻找,发现所使用人物初始化数值为数组定义,以下为人物血量值,从第一级血量到满级都存放在下面这个数组。
这个图看不懂,没问题,我放上下图的的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
这样了解以后,我们修改的时候,就可以直接修改每一行的第二个,第三个数值即可直接将人物血量调高,很简单的~
时间: 2024-10-26 03:21:19