挑战
有的玩家在玩游戏时,可能并不想⼀关⼀关地慢慢玩,⽽是希望可以直接跳到最后⼀关,或者从⾃⼰指定的关卡开始,⽐如 经典的《植物⼤战僵⼫》;再就是怎么能够「开挂」,得到更多的⾦钱、更⾼的属性、更强的道具,⽐如《三国志》系列。任何游戏都会保存玩家的进度和数据,不管是单机游戏还是⽹络游戏都是如此。如果玩家能够知道这些存档数据保存在哪⾥,并且还能随意修改存档信息,那是不是就能达到「开挂」的⽬的呢? 答案当然是肯定的,因为只要知晓计算机对⼆进制数据的处理机制,就能轻松做到这⼀点。
说明
- 了解⼆进制、⼗六进制对于计算机的意义
- 掌握⼆/七/⼋/⼗/⼗⼆/⼗六等多种数据进制间的转换
- 掌握如何在windows及linux中修改并保存⼆进制⽂件
内容
- 修改《植物⼤战僵⼫》的存档⽂件,将⼀个新⽤户的进度直接修改到5-2关,⾦钱(能量)直接修改到10000
- 修改植物大战僵尸内的文字提示信息以及植物的名称
一、任务实现工具:
游戏:植物大战僵尸中文版
下载链接:
链接: https://pan.baidu.com/s/1u7P2h4uquBAf2MSPvJb2Kw.
提取码:xhzy
十六进制编辑器:Hex Editor Neo
下载链接:
链接:https://pan.baidu.com/s/1HXnADxXHWrEtMGxJFWTuUA .
提取码:xhzy
二、任务实现过程:
前三个任务会用到十六进制编辑器来实现,在修改的的过程中涉及到的知识点为十进制数据与十六进制之间数据的相互转换。
PS:单机类游戏数据都是存储在本地,因此只要在本地找到存储数据的文件进行修改即可对游戏内的数据进行修改
在所有任务开始前首先在下载好的植物大战僵尸游戏中新注册一个账号
(在这里我起名为SJMDJGS【世纪末的架构师】)
1、修改关卡
修改关卡前首先要在本地找到存储游戏数据的文件
植物大战僵尸的数据文件一般都是存储在C盘中的ProgramData文件夹中
C:\ProgramData是个公用的被创建文件夹或文件存放的地方,这些文件夹或文件仅由创建者完整控制。打开ProgramData,可以看到很多和应用软件同名的文件夹,里面有一些软件运行,或者修复卸载时候调用的一些文件,生成的一些记录也存放在这里。默认是隐藏的,不可删除的
文件路径: C:\ProgramData\PopCap Games\PlantsVsZombies
来到这里以后会看到有两个文件夹,点击下方存储用户数据的userdata文件夹
点击进入存储用户数据的文件夹以后会发现有两个.dat格式的文件,其中user1.dat文件中存储着关卡数据和金币道具等信息
将user1.dat文件拖到Hex Editor Neo中,不难发现第四列存储的数字为1其余为0,所以进行是否第四列中的十六进制数据代表着关卡的信息
在游戏中通关到第三关以后再将user1.dat文件拖入Hex Editor Neo中会发现之前第四列下的数据已经由最初的01变成了03,因此说明第四列下的十六进制数据是用来描述关卡情况
在植物大战僵尸游戏中每10小关为一个大关,所以要将关卡修改到第5-2关对应的十进制数据为42,将其转换为十六进制数据为2a,在Hex Editor Neo中将03改为2a后重新进入游戏会发现关卡跳到了第5-2关。
2、修改金币
在修改了关卡以后会发现游戏界面内自动出现了商店等组件,此时我们点击商店以后会发现金币为0,现在开始修改金币
当通关获得一定数量的金币后会发现第八列下的数据发生了变化,因此猜测第八列下的十六进制数据为记录金币数量的信息,将这里的数据修改为ff,重新进入游戏查看金币的数量是否有发生变化
重新进入游戏后发现金币数量发生了变化并且为2550,因为ff对应的十进制数据为255,因此证明植物大战僵尸中金币的规则为十六进制对应的十进制数据 * 10
因为游戏中10000金币对应的十进制数据为1000,1000(10)对应的十六进制数据为3e8,在Hex Editor Neo中将第八列和第九列中的数据分别改为3e、80后重新进入游戏会发现金币的数量并不是预想的10000,而是328300
由此猜测第九列的数据为高位,并不是按照惯性思维从第八列开始依次排列,重新在Hex Editor Neo中把第八列和第九列的数据分别改为e8、03,再次进入游戏后发现商城中金币数量变为了10000