学习笔记_记一次植物大战僵尸的破解
1、学习目标
- 了解二进制、十六进制对于计算机的意义
- 掌握二/八/十/十二/十六等多种数据进制间的转换
- 掌握如何在Windows中修改并保存二进制文件
2、学习工具
- 植物大战僵尸 提取码:eo2t
- Hex Editor Neo(二进制、十六进制文件编辑查看器) 提取码:ayyh
这两个软件都是免安装的,下载完后解压缩就可以直接用。
3、开始操作
3.1 理清思路
首先,植物大战僵尸是一个单机游戏,那它的存档必然是保存在本地,具体路径在网上搜一下就知道,是保存在 C:\ProgramData\PopCap Games\PlantsVsZombies\userdata 下,其中 ProgramData 这个文件夹应该默认是隐藏的,需要勾选上显示隐藏的项目才可以看到=
找到了本地存档就好办了,接下来就轮到 Hex Editor Neo 出场了。
3.2 开始操作
先打开游戏,创建一个用户,然后进入到存档文件夹中,发现有一个 users.dat 文件,我们用 Hex Editor Neo 工具打开这个文件,打开后如图:


啥呀这是,一行不知道干嘛用的数字。。。
诶?突然发现在右边有我创建的用户名字 Test,每个字母分别对应左边的 54 65 73 74。
突然想到一个熟悉的小玩意:ASCII码,但我再一看这也对不上呀。
难道这就是用这次要学习的内容 十六进制 保存的?我赶紧找出我家祖传的算盘开始换算~这里使用乘权求合法

皇天不负有心人,终于算出来了,十六进制 54 65 73 74 --转换成十进制–>84 101 115 116,这不正是 Test 的 ASCII 码值吗,暂时看来这个文件保存的是用户的信息。
哈哈,有点头绪了,不要急,我们再去玩几局看看。
。
。
。
通过了第一关,发现在存档文件夹中多了一个 user1.dat 文件,还是用工具打开,如图

其实下面还有很长一条,全是00,为了不浪费篇幅,这里就截了这么多。
OK,再来一局。通过关卡后再刷新一下这两个文件,发现在 user1.dat 中第1行04列的数据发生了变化

打到第二关的时候这个数字是 02 ,第三关的时候这个数字是 03,那这个数字代表的肯定就是关卡数了,给它改成 09 保存试试看,重新打开游戏,当前关卡果然变成了 1-9!看来我的猜想是对的。
既然之前的用户名是用十六进制保存的,想必这里也是如此,这个游戏一共有50关,10进制的50 --转换成–> 16进制为32,直接将 09 改为 32,保存再次进入游戏,关卡顺利来到了 5-10,修改关卡顺利完成。
接下来就是修改金币,还是老方法,先去玩两局获取一点金币,通过对比前后数据的变化来确定需要修改的数据,前面已经啰嗦了挺多,这里就不再赘述。
进入游戏选择金盏花,等它产出金币并收取后立马返回主菜单,反复操作后发现,只有 user1.dat 文件中第1行08列的数据在发生变化,当我有10块钱的时候,这个数据为01;当我有20块钱的时候,这个数据为02,看来这个数据每增加1,我的金币就会增加10,直接将这个数据改为99,金币变为1530,得出结论:第1行08列的数据转换成10进制,再乘以10,得出的就是金币数。植物大战僵尸的破解到这里就大功告成了。
4、总结
通过这次对植物大战僵尸的破解,我掌握了数据在各个进制间的转换,以及十六进制文件的保存方式。
希望在以后的工作及学习中一直保持这种刻苦钻研的精神,继续努力。
奥利给!!!