植物大战僵尸如何修改金币和关卡

挑战

有的玩家在玩游戏时,可能并不想⼀关⼀关地慢慢玩,⽽是希望可以直接跳到最后⼀关,或者从⾃⼰指定的关卡开始,⽐如
经典的《植物⼤战僵⼫》;再就是怎么能够「开挂」,得到更多的⾦钱、更⾼的属性、更强的道具,⽐如《三国志》系列。
任何游戏都会保存玩家的进度和数据,不管是单机游戏还是⽹络游戏都是如此。如果玩家能够知道这些存档数据保存在哪
⾥,并且还能随意修改存档信息,那是不是就能达到「开挂」的⽬的呢?

思路

通过游戏过关观察游戏存档数据文件的变化开找到变化的规律从而实现代码的反编译。

工具

1、window10 x64操作系统与Linux_Deepin 20
在这里插入图片描述
在这里插入图片描述
2、BlessHexEdit进制修改工具
在这里插入图片描述
3、植物大战僵尸单机版
在这里插入图片描述

一、什么是进制?

二进制是在计算机中使用最多的进制,八进制和十六进制都是基于二进制的,3位二进制数组成1位八进制数,4位二进制数组成1位十六进制数,所以二进制,八进制,十六进制互相转换很方便。

1十进制(Decimal):0-9 , 满10进1。
2二进制(Binary): 0、1 ,满2进1,以0b或0B开头。
3八进制(Octal): 0-7 , 满8进1, 以数字0开头表示。
4十六进制(Hex): 0-9及A-F,满16进1,以0x或0X开头表示。注意A-F不区分大小写。
在这里插入图片描述

二、任务探索

安装游戏并创建游戏角色,开始游戏通过第一关。寻找游戏的存档数据文件。进入游戏存档路径:C:\ProgramData\PopCap Games\PlantsVsZombies\userdata,新用户的存档文件为:user1.dat。
在这里插入图片描述
使用进制编辑工具打开查看内容。
在这里插入图片描述
查看完后备份文件。
在这里插入图片描述
接着玩一关游戏,需要用新的游戏存档数据文件去对吧备份的数据文件寻找有什么差异。
在这里插入图片描述
因为我们此时还没有获得金币,只是通过。因此我们可以猜测十六进制关卡的十六进制代码是02。

可以尝试修改地址03的数据为04,保存存档文件后来验证我们的猜想,进入游戏看关已经改变。验证了我们的猜想是正确的。
在这里插入图片描述
接着恢复游戏备份文件完游戏

关卡1-1,01
关卡1-10,0A
关卡2-1,0B
关卡2-10,14
依此类推
关卡4-1,29
关卡5-1,33
当数值大于32,小于3D时,关卡显示6-1到6-10,超过3D时,显示“6- ”,超出了游戏的限定。说明5-10已经是最后的关卡。
在这里插入图片描述
然后找存档修改游戏,目标修改给自己充值金币(如10000)的效果。 关卡超过了3-5,金币系统才会锁,但是此时金币数是0先通关4-1关卡,通关后获得了320金币,然后对比获得金币前后user01.dat文件中的数据变化,定位金币数量存储的地址,发现是地址第八列中的数据从00变到了20,金币数量是该数据十进制值的十倍;
0100金币数是10,01的十六进制是1所以是0100是01的十倍
0001金币数是2560
0003金币数是7680
0004金币是10240已经超了我们的目标
那么此时已经有可规律可循了,我们的目标是10000,所以可以倒推10000-7680=2320,还需要2320个金币。而代码的0100是十六进制01的十倍,所以我们只需要算出232的十六进制就是我们需要的代码了。
在这里插入图片描述
根据公式得到的结果是E8。

然后修改数据文件,验证我们的猜想。
在这里插入图片描述
游戏运行后验证了我们的猜想是对的,达成任务目标。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42226309/article/details/115387544