一.简介
大家一定都玩过游戏吧,那么大家有没有想过通过一些不一样的方法来改变游戏的进程呢?
今天我就来以植物大战僵尸为例来教大家如何用我们程序员的方式来改变游戏的进程.
本期我的任务为:
1.修改<植物大战僵尸>的存档,使之跳转到5-1卡关;
2.游戏账户充值1024$
二.任务所需的资料
1.这款游戏的安装包
游戏的安装包可以自行进行下载
或
此为链接:
提取码:wgfr;
2.二进制代码编辑器(Hex editor)
可以自行下载
或
此为链接:
提取码:w75d
三.该如何实现
1.首先应该了解游戏是如何进行存档的
之前我也不是很清楚,但是经过查找以后我了解到该游戏的存档是以二进制代码存在于用户的电脑中的,那么我们是不是可以通过改变二进制代码的排列方式从而达到改变游戏存档的效果.
2.了解是怎样进行存档的(这需要自己尝试然后找出规律)
1.游戏卡关的修改
知道了游戏是如何进行存档以后我有了一个初步的想法首先观察原来的二进制代码是如何排列的,然后进行游戏观察二进制代码排列有何改变
初始的二进制代码排序如下图所示:
当我进行一局游戏后到达卡关1-2时表中的一个数值发生了如下改变:
即第一行第四列对应的元素发生了改变,接下来我们继续游戏,当我在进行一局游戏,达到卡关1-3时表中数据又发生了变化:
这时我就发现了其中的规律:变化的元素可能代表的卡关的进度;我尝试改变其值,发现游戏进度真的发生了改变
我将其值设置为"09"后再次进入游戏发现效果如下:
这时我意识到该元素控制着游戏的关卡相关的数据;于是我将其数值改为29,即将卡关改为5-1;效果图如下:
2.游戏中金币的修改
经过和上述修改卡关类似的过程我发现当金币发生变化时,二进制代码中的第"08","09","0A","0B".列会相应的发生改变,但是它改变的数值和金币的数目并没有直接的关系
但是后来经过我的不断尝试我发现了其中的规律.
规则如下:
把选择要设置的金币数量除以10,然后除完之后的数据换成十六进制,并将它们倒过来写。
eg:1000000/10=100000 转换成十六进制为000186A0于是08 09 0a 0b列输入A0 86 01 00。
四.可能产生的问题
在过程中可能会产生一些问题下面来举例列出我所遇到的几个问题:
1.在寻找游戏数据存储的路径时有些小伙伴可以会找不到,这时只需将此电脑中的查看下的"隐藏的项目"进行勾选即可
2.当我们启动游戏时 一些电脑系统为Win10d 小伙伴可以会产生报错等现象,虽然我也不知道为什么但是我这里有一个解决的方法.可以将输入法进行一下替换,替换为美式键盘,更换后在重新启动游戏即可.
3.要注意的时游戏进行的时候如果user1.dat 文件处于打开状态的话,在游戏关闭后数据时不会进行储存的
五.总结
经过将近四个小时的尝试,总算是顺利的结束了今天的任务,但是其中还是遇到许多的问题,但是遇到困难我们不能害怕要勇敢的进行尝试,相信最终一定会解决的.