C1任务01之修改游戏存档的方法

目录
  • 挑战
  • 一、任务实现工具:
    • 游戏:植物大战僵尸中文版
    • 十六进制编辑器:Hex Editor Neo
  • 二、任务实现过程:
    • 1、修改关卡
    • 2、修改金币
    • 3、修改用户名
    • 4、修改局内文字信息
  • 总结

挑战

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



说明

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

内容

  • 修改《植物⼤战僵⼫》的存档⽂件,将⼀个新⽤户的进度直接修改到5-2关,⾦钱(能量)直接修改到10000
  • 修改植物大战僵尸内的文字提示信息以及植物的名称

一、任务实现工具:

游戏:植物大战僵尸中文版

下载链接:

链接: https://pan.baidu.com/s/1UJeERv_Qes6KMespuD8yGg

提取码: h259

十六进制编辑器:Hex Editor Neo

下载链接:
链接: https://pan.baidu.com/s/1EyVB4AlBY14geaTzK45XOw
提取码: e933

二、任务实现过程:

前三个任务会用到十六进制编辑器来实现,在修改的的过程中涉及到的知识点为十进制数据与十六进制之间数据的相互转换。

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


3、修改用户名

之前修改关卡和金币数量时都是在user1.dat中修改,修改用户名则是在另一个users.dat文件中进行修改,将users.dat拖入到Hex Editor Neo中会发现从第08列到第0e列中的对应的十六进制数据转换为十进制数据以后的值恰好对应ASCII码中的SJMDJGS(世纪末的架构师),与游戏中的用户名对应,因此假设第08列到第0e列的数据对应为用户名,将第08列到第0e列的数据分别修改为46(16)(对应十进制数据为70)、58(16)(对应十进制数据为88)、44(16)(对应十进制数据为68)、48(16)(对应十进制数据为72)、4c(16)(对应十进制数据为77)、52(16)(对应十进制数据为82)、第0e列改为00,如果假设正确重新进入游戏后用户的名称则修改为FXDHLR(飞翔的荷兰人)



4、修改局内文字信息

修改局内文字信息不需要用到十六进制编辑器,只需要找到游戏的安装路径,找到其中的properties文件夹,修改该文件夹中的LawnStrings.txt文件即可


在这里我使用的是notepad++来修改文本文件,只用记事本也可以完成编辑。以修改豌豆射手的数据为例,在游戏内的图鉴中检查信息是否修改成功


总结

任务到这里就全部结束了,修改游戏数据在曾经是想都不敢想的,在刚开始看到任务时一度怀疑自己能否完成这样的任务,便心一狠牙一咬踏上了完成任务的旅程,在完成任务的过程中自己才意识到之前自己被自己想象的困难打败了,真正接触到之后并没有想象中的困难。在完成任务的过程中熟悉了数据进制之间的转换,也明白了在计算机中如何保存二进制文件,更重要的是信心上和动手实践能力的提高。
还记着那句,人的一生中最辉煌的一天,并不是功成名就的那一天,而是在悲叹和绝望中产生向上的力量,并勇敢去直面和接受挑战的这一天。这是最大的转折点,当你选择去直面挑战时,就已经注定了成功!

到此这篇关于C1任务01之修改游戏存档的文章就介绍到这了,更多相关修改游戏存档内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 通过Java修改游戏存档的实现思路

    目录 前言 一.实现思路 二.项目准备 1. 创建maven工程 2. 导入依赖 三.核心代码 1. 使用的对象 2. 修改关卡信息 3. 修改金币信息 四.代码测试 1. 读取数据文件 2. 修改关卡位置 3. 修改金币数量 4. 退出修改器 5. 输入参数错误情况 五.源码 1. 项目结构 2. 项目代码 总结 前言 植物大战僵尸的数据文件是存储在本地的dat文件当中,修改在本地的dat文件就可以修改到游戏中的数据.之前使用二进制编码工具Hex Editor Neo实现了修改植物大战僵尸的本

  • Unity实现游戏存档框架

    最近重构了一下我的存档框架.我在这里对实现方法进行简单的解析.注意这里主要演示算法,所以,效率上并不是最佳.一个游戏中,可能有成百上千个物体需要存储,而且有几十种类型,接下来就用一个简单的例子来解释.一个很简单的例子,有一个Unit(单位)类型,有一个Inventory(背包)类型,有一个Item(道具)类型. 接下来先介绍框架中最重要的接口,ISavable,表示这个类型可以存档 public interface ISavable{ uint Id {get; set;} Type DataT

  • C1任务01之修改游戏存档的方法

    目录 挑战 一.任务实现工具: 游戏:植物大战僵尸中文版 十六进制编辑器:Hex Editor Neo 二.任务实现过程: 1.修改关卡 2.修改金币 3.修改用户名 4.修改局内文字信息 总结 挑战 有的玩家在玩游戏时,可能并不想⼀关⼀关地慢慢玩,⽽是希望可以直接跳到最后⼀关,或者从⾃⼰指定的关卡开始,⽐如 经典的<植物⼤战僵⼫>:再就是怎么能够「开挂」,得到更多的⾦钱.更⾼的属性.更强的道具,⽐如<三国志>系列.任何游戏都会保存玩家的进度和数据,不管是单机游戏还是⽹络游戏都是如

  • Python修改游戏内存的方法

    目录 前言 游戏的安装 思路 一句话总结 大概的思路 实战 确定修改哪一款游戏的数据 代码 地址的寻找 视频教程 修改数据 代码 效果 完整的源码 所有的软件下载包 前言 大家好,我叫善念.上篇文章我许了一个愿,就是想让大家多多关注我,然后我的粉丝就蹭蹭的涨了好几百,谢谢大家的厚爱.可是我发现粉丝是涨了,三连变少了,谢谢大家这次给我三连,我一定再接再厉.有问题留在评论区,我会一一回复,谢谢大家! 这次要做的是修改一款单机游戏的数据,学过C语言的朋友肯定经常会看到有些老师讲这个案例,就是<植物大战

  • 编辑IL文件 修改DLL文件的方法

    如:KS.Gantt.DLL 为例 1.使用ILSpy反编译 工具 2.利用ildasm反编译 KS.Gantt.dll  生成IL中间代码 一般会生成 *.il 和*.res 一些其它资源文件 *.resources 3.然后用记事本修改IL文件 4.然后用ilasm编译中间代码,生成新的KS.Gantt.dll 5.在项目中使用 查看效果 破解过程 1 我找到了Gantt 控件的验证的代码 2 利用ildasm反编译 KS.Gantt.dll 3 打开IL文件找到对应的代码然后删除掉 如果不

  • Centos下 修改mysql密码的方法

    1.修改MySQL的登录设置: # vim /etc/my.cnf 加上一句:skip-grant-tables 如: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock 2.重启mysql # service mysqld restart Stopping MySQL: [ OK ] Starting MySQL: [ OK ] 3.修改密码 mysql> USE mysql ; Database changed m

  • 如何修改 mac地址的方法

    各个不同品牌的网卡有专用的刷新程序,需要针对芯片型号下载相应的刷新程序 轻松修改网卡MAC地址   网卡的MAC地址是固化在网卡EPROM中的物理地址,是一块网卡的"身份证",通常为48位.在平常的应用中,有很多方面与MAC地址相关,如有些软件是和MAC地址绑定的,没有允许的MAC地址,软件就无法运行:或者在局域网里,管理人员常常将IP与客户机的MAC地址绑定,以方便管理,万一用户的网卡坏掉了,自行更改网卡后必须向管理人员申请更改绑定的MAC地址,这样就比较麻烦.在这种时候,如果我们能

  • MySql8.0以上版本正确修改ROOT密码的方法

    部署环境: 安装版本red hat Cent 7.0 MYSQL 版本 8.0.2.0 成功部署完毕后出现故障情况: 1.      正常启动MYSQL服务后,敲Linux中root账户和密码进入不去. 2.      从/etc/my.cnf 配置文件中加入skip-grant-table后正常登陆,但是不能创建用户等多操作 总结来说: 想进去mysql后不能操作多指令,操作多指令又不能进去mysql,死循环 挖坑环节: 网上找了很多办法,首先加入skip-grant-table.后进去刷新权

  • MAC下Mysql5.7.10版本修改root密码的方法

    首先 跳过权限表模式启动MySQL:mysqld --skip-grant-tables & 从现在开始,你将踏入第一个坑,如果你使用网上到处贴的 错误修改方法: mysql> UPDATE mysql.user SET authentication_string=PASSWORD('your_new_password') WHERE User='root'; (注意,5.7之后password改成了authentication_string)那么恭喜你,你修改成功了,但是你会发现当你使用n

  • 关于SQL Server 2008忘记sa密码修改sa密码的方法图解

    1. 先用Window身份验证方式登陆进去,选择数据库实例,右键选择属性--安全性:把服务器身份验证选项从"Window身份验证模式"改为"SQLServer和Window身份验证模式".点击确定,关闭当前对象资源管理器.   2. 重 新用Window验证方式登陆,在左边的树结构中选择"数据库"下面的"安全性"选项--登录名--sa,右键属性--在"SQLServer身份验证"中输入要设置的sa密码. 3

  • jQuery在页面加载时动态修改图片尺寸的方法

    本文实例讲述了jQuery在页面加载时动态修改图片尺寸的方法.分享给大家供大家参考.具体如下: $(window).bind("load", function() { // IMAGE RESIZE $('#product_cat_list img').each(function() { var maxWidth = 120; var maxHeight = 120; var ratio = 0; var width = $(this).width(); var height = $(

随机推荐