目录
挑战
植物大战僵尸开挂,以达到跳关、无限金币,知晓游戏存档保存位置并修改存档数据以达到开挂的目的,但是要完成这些就要了解计算机对二进制数据的处理机制,要是了解这些修改存档就是简简单单,单机游戏开挂就不是问题。
说明
- 了解二进制、十六进制对计算机的意义
- 掌握二/八/十/十六等多种数据及间的转换进制
- 掌握如何保存修改的数据
内容
- 修改《植物大战僵尸》的存档文件,将一个新用户的游戏进度进行修改跳关,修改金钱数量
- 解锁所有模式
一、任务实现工具:
游戏:植物大战僵尸中文版
链接:
https://pan.baidu.com/s/1JcwS-i_-23SL1pi8Qzp3vA
提取码: qiry
十六进制编辑器:Hex Editor Neo
链接:https://www.hhdsoftware.com/free-hex-editor
二、任务实现过程
1、修改关卡
1.先创建一个游戏名(名字可以任意取)然后去
C:\ProgramData\PopCap Games\PlantsVsZombies\userdata
找到user2.dat的文件
ps:user2.dat这个文件对应我的游戏账号,user2.dat中的2是因为我之前创建过一个账号,之后随着创建的账户越来越多,数字会不断增大。不必在意我这个文件名去找user2.dat,一般名称为user1.dat。
2.将user2.dat在Hex Editor Neo中打开,并将数据备份。
之后进入游戏每进行一关保存后在Hex Editor Neo中打开user2.dat文件进行对比查看规律
1-1
1-2
1-3
发现04列第一行所对应的数字发生变化,当关卡为1-1时,数据为“01”
当关卡为1-2时,数据为“02”,当关卡为1-3时,数据为“03”,所以04列第一行所对应的数字为关卡存档数据。我将04列第一行所对应的数据改为“09”,保存并运行游戏发现关卡到达1-9,随后我进行一局游戏道1-10,打开存档发现数据变为“0A”,由此得知存档数据以十六进制进行保存的,由此推出5-1的存档数据为“29”,我将数据改为“29”
保存进行游戏关卡跳转到5-1,由此得知我的推测为正,跳关成功。
2、修改金币数量
现在游戏中金币为0,用同样的方法打开存档文件备份,接着玩直到打到金币,打开存档文件进行数据对比
金币0:
金币20
通过数据对比发现08列第一个数据发生改变,因此猜测08列下的数据为记录金币的信息,将这里的数据改为ff,重新进入游戏查看金币数量是否发生变化
重新进入游戏进入游戏发现金币数量发生了变化,金币数量变为2550,ff对应的十进制数据为255,因此证明植物大战僵尸中的金币储存数据规则为十六进制对应的十进制数据*10
因为游戏中10000金币对应的十进制数据为1000,
对应的十六进制数据为3e8,将08 09两列数据分别改为3e 08
重新进入游戏
发现金币数量并不是预想的10000,而是21100,金币21100的十进制数据为2110转为十六进制为83e
由此猜测09列的数据为高位,并不是按照惯性思维从08列开始依次排列的,所以重新修改08 09列的数据改为e8 03
重新进入游戏发现金币为10000
所以修改成功.
3、解锁所有模式
解锁后面的关卡,对于这个有游戏的逻辑,得拿到冒险模式的奖杯。只能继续游戏,拿到奖杯,之后观察数据变化
可以看出冒险模式又变回了1,0c列处数据变成了1。
为了验证是否改变此两处数据就能解锁,我有新建一个用户,改变数据,运行游戏确实解锁所有模式,所以将04列数据修改01 0C列数据修改为01,解锁所有模式,到此修改关卡成功。
我是一名刚学编程的小菜鸟,这是我第一次写博客,此博客若有错误,和不妥请各位大佬指正;感谢各位阅读!!!!写的不好请各位谅解!!!!!