CSDN高校——C1任务01—修改游戏存档

简介: 修改游戏存档

挑战

有的玩家在玩游戏时,可能并不想⼀关⼀关地慢慢玩,⽽是希望可以直接跳到最后⼀关,或者从⾃⼰指定的关卡开始,⽐如 经典的《植物⼤战僵⼫》;再就是怎么能够「开挂」,得到更多的⾦钱、更⾼的属性、更强的道具,⽐如《三国志》系列。 任何游戏都会保存玩家的进度和数据,不管是单机游戏还是⽹络游戏都是如此。如果玩家能够知道这些存档数据保存在哪 ⾥,并且还能随意修改存档信息,那是不是就能达到「开挂」的⽬的呢? 答案当然是肯定的,因为只要知晓计算机对⼆进制数据的处理机制,就能轻松做到这⼀点。

说明

  • 了解⼆进制、⼗六进制对于计算机的意义
  • 掌握⼆/七/⼋/⼗/⼗⼆/⼗六等多种数据进制间的转换
  • 掌握如何在windows及linux中修改并保存⼆进制⽂件

内容

  • 修改《植物⼤战僵⼫》的存档⽂件,将⼀个新⽤户的进度直接修改到5-2关,⾦钱(能量)直接修改到10000

20210401124256.png

20210401154643687.png20210401124432.png

资源(仅供参考,部分资源在外⽹)

书籍

  • 《程序员修炼之道》
  • 《程序员的职业素养》

链接

  • 进制转换
  • 编码

⾃测

  • 110101010001转⼗六进制是多少?
  • 101011.101011的⼗进制数是多少?
  • 常⻅的视频编码格式有哪些?
  • 65对应ASCII码是哪个字符?

任务完成过程

游戏请支持正版,切勿修改,小心封神榜

绪:

刚开始看到这个任务的时候,说实话还是有点懵的,毕竟没修改过PC游戏。

但是作为一个玩游戏不花一分钱,道具装备肝我可以,肝不过我就改,要钱绝对不行的资深手游豹子头玩家,手游还是修改过不少地,

根据用MT管理器和GG修改手游的经验,单机类游戏数据都是存储在本地,那么只要找到存储数据的文件进行修改就可以了,PC端也不例外

从百度下载好植物大战僵尸到本地安装之后,首先查看了它安装路径下的主要文件夹

30a3c897c0720b75ea7aae8b44a24904.png尽管有很多看不懂,但是我们通过名字就可以大致的了解到各个文件的用处

28f7d72a97003d8dd4273102d879846f.png通过文件名userdata,就不得不让人注意,明显是存储用户数据的文件夹

那么你以为这就是我们要找的那个文件吗?很遗憾,不是。

那么真正存用户数据的文件在哪里呢?

手机app存储分为缓存和存储空间,那么类似的PC有个ProgramData文件。

这里就需要介绍下系统文件夹ProgramData文件:

ProgramData属于电脑C盘的一个系统文件夹,是个公用的被创建文件夹或文件存放的地方,是由Win系统自动创建的,按该文件夹的命名来看就是程序数据的意思,可以想像得到该文件夹就是储存程序数据用的,不管是Win系统本身自带的程序还是第三方程序,当我们在Win旗舰版中安装了一些软件后,我们打开打开ProgramData,可见很多和应用软件同名的文件夹,里面有一些软件运行,或者修复卸载时候调用的文件,生成的一些记录
很多文件夹默认是隐藏的,我们需要在的文件夹选项里将查看隐藏文件勾选才可以看到

1.修改用户名

首先我们启动PlantsVsZombies.exe,进入游戏,创建新用户Test

image.png创建完之后退出游戏,在C:\ProgramData\PopCap Games\PlantsVsZombies路径下我们可以看到只有两个文件夹

20210401142837.png

进入userdata文件夹,可以看到两个文件user1.dat,users.dat,目测它存储的就是Test用户的数据

20210401143015.png我们先查看users.dat文件,把users.dat文件用Hex Editor Neo打开

20210401143127.png我们可以看到在00000000x08—00000000x0b的数据是54H,65H,73H,74H,再对比右侧队列显示的Test,知道ASCLL编码的我们也可以知道54H,65H,73H,74H分别是Test的ASCLL码。我们很容易猜出00000000x08—00000000x0b对应的就是名字,猜不如实践下,我们改为31H,32H,30H,00H,

20210401143940.png我们再进入游戏

20210401144004.png

此时用户名显示的120,用户名已经修改成功

接下来我们修改下关卡

2.修改关卡

由于是新用户,所以显示“LET'S GO 开始冒险吧

和修改用户名一样,我们把users1.dat文件用Hex Editor Neo打开,因为我们完全有理由推测user1.dat存储的就是Test用户的数据,(改了用户名就是120用户)

20210401144637.png

打开之后,我们只看到00000000x0000000000x04有数据,那么我们怎么知道我们应该修改哪个呢,经常修改手游的伙伴知道,我们可以通过让数值不断的变化,然后确定唯一值,唯一值就是我们要找的,同理,我们进入游戏先玩几局,看看有什么变化

28831081ca104d72891fb8e1d623b3e7.png

很轻松通过第三关,解锁了坚果,我们再把users1.dat文件用Hex Editor Neo打开,

20210401150051.png

可以看到有一个00000000x04改变了,而且好巧不巧,刚好对应我们的关数,无脑的将它修改为0b

20210401150452.png

修改完之后我们进入游戏

49aaf4d9e2d5dc227686abb6a9aeb424.png

此时关卡已经变成2-1,说明我们修改成功了,也可以推出一轮有10关

接下来修改金币,先把关卡改大点,解锁商店

3.修改金币

关卡改为4-6

此时进入商店,显示金币为0

bd7bcc9c1860e8141e2451e0d8b46191.png套路和改关卡一样,先让金币数量发生改变,

092bd48048db4e43b5b7e3c58543a4d2.png通关之后金币变为320,(夜晚模式不好玩)。

退出游戏,我们继续把users1.dat文件用Hex Editor Neo打开,


20210401152257.png可以看到00000000x08改变了,变为20H,换成十进制,正好是32,和金币数量的百位十位一样,那么是不是我们要找的金币呢,改一下就知道了。将00000000x0820H改为ff

20210401152617.png

保存,进入游戏。

59e2fc26cff30ec52f230abb2df6a83f.png

可以看到金币变为2550了,而我们修改的ffH是255,可以得出00000000x08正是我们要找的金币,游戏金币数量和00000000x08的值是1比10。

那么如何修改到10000金币呢,根据上方的结论,我们只需要将00000000x08的值修改为1000即可,1000换成16进制为3E8H

我们将00000000x08修改为E8H,将00000000x08修改为03H,保存进入游戏

4782167332fa76581789320a36ec8440.png

c8b121d8b3548ea930fac27c73f283be.png

image.png进入游戏可以看到金币刚刚是10000,而且也是可以买东西的,那么金币就修改好了

那么修改金币需要注意的是数值的高位对应地址的高位,即高对高,低对低原则。这就是为什么把3E8H分为03HE8H;

4.修改植物僵尸信息

image.png

首先找到游戏安装路径

5b774e52e62ee8294767732fbe0ab178.png

在植物大战僵尸安装路径下找到properties文件并打开

0eaf05a8f623ebb3ab040886efa2a070.pngproperties文件下可以看到有4个文件,我们选择第一个文件LawnStrings.txt

打开

076b1629ad0f170f632b98c1cc8824f5.png

ab08bf7e36fecb9e76031f1cfc1db3e2.png

在文件里面进行修改即可,保存,进入游戏就可以了

收获

  1. 首先当然是让我知道了不仅手游可以改,端游也可以改,但是请支持正版好吧,作弊不提倡哦
  2. 让学到的理论知识,即微机原理学到的数值的高位对应地址的高位,即高对高,低对低原则得到了验证


目录
相关文章
|
2月前
|
机器人
小红书自动发布笔记,真好用!
小红书自动发布笔记,真好用!
195 0
|
3月前
|
安全 测试技术 Python
【教学基地平台更新日记】首页制作完成
【教学基地平台更新日记】首页制作完成
|
3月前
|
存储 安全 Python
【教学基地平台更新日记】私人笔记
【教学基地平台更新日记】私人笔记
|
3月前
|
人工智能 安全 测试技术
【教学基地平台更新日记】答疑论坛页
【教学基地平台更新日记】答疑论坛页
|
3月前
|
安全 前端开发 Python
【教学基地平台更新日记】主线课程-资源下载页面
【教学基地平台更新日记】主线课程-资源下载页面
|
3月前
|
安全 Python
【教学基地平台更新日记】主线课程-笔记页面
【教学基地平台更新日记】主线课程-笔记页面
|
前端开发 JavaScript 程序员
项目第四天内容介绍 | 学习笔记
快速学习 项目第四天内容介绍
44 0
|
对象存储 开发者 微服务
项目第二十天内容介绍 | 学习笔记
快速学习 项目第二十天内容介绍
49 0
|
JSON Java 数据格式
CSDN实训 - 通过Java修改游戏存档(二)
CSDN实训 - 通过Java修改游戏存档
CSDN实训 - 通过Java修改游戏存档(二)