目的
通过修改植物大战僵尸存档信息,可以随意跳到某一个关卡或者获取多少金币。
实现过程
建立两个账号user1、user2,从C:\ProgramData\PopCap Games\PlantsVsZombies\userdata 取到user1.dat,user1.dat存档文件。
1、修改关卡
先用user1玩植物大战僵尸,用UltraEdit打开user1.dat,玩到第四关,可以看到user1.dat的第四列中数据随着关卡一直从01 02 03 04变动,由此可猜测该列数据是记录关卡的。
可试着改动user2.dat中第四列的数据测试,测试的数据如下:
十六进制数据 关卡 十进制数据
21 4-3 33
24 4-6 36
34 6-2 52
将十六进制数据转换成十进制数据,对比十进制数据和关卡可以看出,“-”前的大关卡是十进制数据的十位数字+1,“-”后的小关卡是个位数据。还有一种特殊情况,个位数为0的情况,为此将十六进制的数据设为32,对应的十进制数为50,打开植物大战僵尸显示的是5-10,由此可推测,当个位为0时,大关卡为十位数不加1,小关卡为10。将该列数据再改成1e,十进制数据是30,该关卡是3-10,说明这种推测是正确的。
2、修改金币
修改第一行的5、6、7列金币数据都没有变化,修改8列时将00改为02金币变成了20,由此可以推测第8列是记录金币的,将该列做以下变动:
十六进制数据 金币数量 十进制数据
12 180 18
f2 2420 242
由上面的数据可以推测出第8列代表的金币数量为:第八列的十进制数据的10倍。
以此类推验证第9列、a列、b列代表的金币数量。
结论:例如11 11 11 01 的金币数量为 (1*16+1)*10+(16^3+ 16^2)*10+( 16^5 +16^4)*10+ 16^6 *10(暂时还没有总结出b列第一位数据金币的规律)。
现在的金币:
对应的存档信息