首发至个人博客:C1认证:修改《植物大战僵尸》的存档文件
任务简介
1、修改《植物⼤战僵⼫》的存档⽂件,能跳到指定关卡5-1
2、修改《植物⼤战僵⼫》的存档⽂件,让你的游戏账户有1W⾦币
3、同时通过修改关卡完成下⾯的任务:
- 修改关卡后能解锁「迷你游戏」
- 修改关卡后能解锁「⽣存模式」
资源下载
C1第一个任务的所需资源:Plants vs Zombies
数据文件
本次所用的为《植物大战僵尸1单机版》,所以他的一些数据包括用户数据,肯定也会放到本地,至于准确地址我直接贴出来:C:\ProgramData\PopCap Games\PlantsVsZombies\userdata
。
每个用户的数据都不同,所以会分用户来存储。
这个地址是无论 安装版 还是 免安装版 都是这个路径,针对你新建账户的顺序,每个用户的用户数据命名为:user1.dat、user2.dat…
而所有的用户数据都存放在 users.dat 中。
指定关卡
为了了解通关后用户数据的变动,先用 Hex Editor Neo 打开需要观察的用户数据文件:
为了能更直观的观察到编码,我将数据格式切换到了十进制显示:
现在已经有了用户初始的数据,那么就开始去让这些数据发生变化,当将第一关过关后显示的数据如下:
很明显,在 第一行的04列 就是冒险模式的关卡数。而后又进行了几次尝试,发现了以下的规律:
数值 | 关卡数 |
---|---|
1 | 1-1 |
2 | 1-2 |
··· | ··· |
10 | 1-10 |
··· | ··· |
20 | 2-10 |
··· | ··· |
而最大限度并不知道是多少,一开始踩了不少坑,现在直接说结果:搜索了以下植物大战僵尸僵王的关卡数:僵王博士 ,发现最大关卡数为 5-10 ,所以直接修改数值为 50 :
到此就完成了关卡数的修改。
修改金币
虽然现在一口气跳到了冒险模式的最后一关,但是金币数却还是为零。所以,同样的思路,先去修改金币的值。
好在破解关卡后会有一颗植物会产生金币:
于是又玩了一把游戏,收取到了金币后退出,保存用户数据,再次打开用户数据文件:
数值为 n ,则金币就为 n*10 ,所以就可以随意修改金币的值,经过测验,保存金币数的有三个地方:第一行的08 、09、0a:
到此就完成了金币的修改。
解锁新关卡
至于解锁后边的关卡,对于游戏的正常逻辑来说,就是要拿到冒险模式的奖杯。没办法,又去玩游戏去了~
等到游戏通关后,确实拿到了奖杯,后面的关卡都开了,于是又去看用户数据的变化:
可以看出,冒险模式的关卡数又变回了 1 ,而 第一行的0c 处变成了 1 是不是就是这里的数值导致了后面关卡开启呢?
为了验证,新建了一个账户,修改数值,发现确实就是这里。
到此,就完成了后续关卡的开启。
拓展
关于后续开启的三种模式,我也用同样的思路去查看,发现确实都是这样的,比如 迷你模式 中的关卡就是 从第二行开始的每一列0c处的数值改为 1。其余的也都是这样,需要的可以自行查看,思路都是可行的,我也都尝试过,只是这里的数据丢失了,就不写在这里了。
修改阳光
到最后,我想再试着修改游戏时阳光的值,但是用 Hex Editor Neo 修改的难度和之前有了一定的差距:主要是因为这是游戏的设定,并不属于用户本身。
作为 强迫症本强,决定用 CheatEngine6.8.1 来进行修改体验一把,具体的过程如下:
先打开游戏,再打开 CheatEngine ,选择游戏的进程,打开:
为了能够改变阳光的值,所以需要再来一把游戏,在游戏开始时暂停,并在CheatEngine 中输入数值,点击首次扫描。
在扫描出结果后继续游戏修改阳光的值:
最后的结果只有一条数据,这其实就是阳光的数值,直接右击结果选择 改变已选择地址的数值 ,修改后,成功应用在了游戏上:
到此就结束了阳光的修改。