CSDN C1认证:作业1

1、作业任务

1、修改《植物大战僵尸》的存档文件,将一个新用户的进度直接修改到5-2关
2、金钱(能量)直接修改到10000

2、运行环境

①win10系统
②《植物大战僵尸1》单机中文版
③H小D Hex Editor 64位
注:《植物大战僵尸1》以及Hex Editor下载地址:
https://pan.baidu.com/s/1Vr4UJQwpZTgRSnI1qF2U9A 提取码:lnhs

3、实现详解

3.1 实现流程

1、下载安装《植物大战僵尸1》和16进制编辑器
2、打开游戏,新建一个游戏账户
3、找到《植物大战僵尸1》的用户存档文件夹,用Hex Editor打开指定用户的存档文件
4、根据要求,将关卡和金币的数据转换成16进制,修改后保存文件
5、重新打开游戏界面,检查是否已经实现进度和金钱的修改

3.2 具体操作

3.2.1 新建账户

在这里插入图片描述
首先打开游戏,新建一个叫做user1的账户。

注意:新建账户成功后,需要关闭游戏,才能在本地生成对应的存档文件。

3.2.2 找到存档文件

在这里插入图片描述

win10系统中,存档文件放在:C:\ProgramData\PopCap Games\PlantsVsZombies\userdata 文件夹下。
注意:如果游戏安装在其他盘中,游戏的存档文件依然会存在C盘的上述文件夹内。修改以上文件夹的存档文件才会生效,修改安装文件夹的userdata内的存档文件不会生效。

3.2.3 修改存档文件数据

用hex Editor打开user1.dat文件(注意,此处存档文件名称与游戏中新建的账户名称无关联,存档文件名称的生成是按照创建账户的先后顺序,生成user1.dat,user2.dat,user3.dat…)
在这里插入图片描述

打开文件后发现,这是一个16进制表,具体改哪个数值并不清楚。因此(注:此处借鉴了另一位博主:何锦洋的方法,链接:https://blog.csdn.net/weixin_44537669/article/details/115427626),我们再多新建几个账号,通过控制变量法,了解哪一个数据控制哪一个具体功能。

再新建三个游戏账户:user2,user3,user4(每新建一个账号,都要重启游戏,或者进行游戏试玩):
在这里插入图片描述

3.2.4 找到控制功能数据

以user1作为游戏初始数据,作为对比。用user2的账号进行游戏,通过第一关:
在这里插入图片描述
在这里插入图片描述
通过对比发现,通过一个关卡之后,只有第一行第四列的数据发生了变化,由01->02因此可以确定,第一行第四列是控制游戏进度的。如果要将进度调整至5-2关(通过试玩和百度都可以知道,植物大战僵尸每个大关卡有10个小关卡,因此要将数值调整为42),由于本文件是16进制,因此要将42转化为16进制数。

10进制转化为16进制,可采用除数取余法。把十进制数除以16,每次计算商和余数,直至商为零时,将余数从后往前拼接。
如本题: 42/16 = 2······10
2 /16 = 0 ······2
10在16进制中用A表示,因此,42的16进制为2A

修改user2存档文件中的数值,查看效果:

注意:修改存档文件时首先要关闭游戏,否则无效。其次,修改存档文件保存时,会自动生成一个.bak文件,是备份文件,需要将该备份文件删除。

在这里插入图片描述
修改存档文件之后,user2账号的关卡变为5-2。

3.2.5修改金币

将user3的进度修改为2-1,试玩游戏,并收集到一定的金币,然后将进度调节到与user2账户相同的5-2关卡,查看两个账号的商店,同时对比二者的存档文件:

在这里插入图片描述
对比之后发现,第一行第八列的数据变为1A:

16进制转为10进制数:将每个位的数值转换为10进制相加
1A=>(1×16^1) + (10×16^0)=26
因此,可以看出,金币的数值是参数*10.

因此,第一行第八列控制金币的值。要更改金币值为10000,需要更改数值为1000. 1000的16进制为3E8(此处有三位,而表中只有两位).所以通过相同的方法测试之后,发现第一行第九列也能够控制金币数值。且列数大的左位是高位,右位是次高位,以此类推。因此,3E8按照下图填入表中:
在这里插入图片描述
得到user3的金币为10000:
在这里插入图片描述
至此,完成关卡和金钱的更改。

3.3 拓展

到这里,细心的同学也许会问,user4好像没起到左右,无论你怎么想,我是不会承认是我一开始创建多了。为了掩盖事实,我决定告诉大家,在安装文件夹的userdata文件夹里,会有一个除了新建账户存档文件的另一个存档文件。
在这里插入图片描述
将该文件内容复制之后替换掉user4存档文件的内容。你会发现:
在这里插入图片描述
user4的解谜模式和生存模式打开了。
在这里插入图片描述
查看更改后的user4文件,我意识到,如果采用控制变量法,可能会裂开。因此,剩下的就由大家自行探索波~

加油各位~代码路上,与诸君同行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值