Image width:9
Image height: 6
选择进制为:Binary
Image width:20
Image height: 20
选择进制为:Binary
Image width:7
Image height: 6
Bits per pixel: 3
选择进制为:Binary
图像文件存储的都是每一个像素对应的颜色值。
1、图片文件有两种存储像素数据的格式。
对于一个16777216(真彩色)的图像,一个像素的颜色可以用24位数据表示。
256色的图像可以用调色板对颜色的信息进行编码,一个像素的值对应的是调色板的索引,而不是直接对应一个像素的颜色,调色板的索引映射为像素的颜色。
2、以一百万个像素,256种颜色的BMP文件在电脑上的存储为例。这个文件包括一个十四字节的文件首部,一个四十字节的信息首部,一个1024字节的颜色表,一兆字节的位图数据。文件首部的前两个字节由字符BM组成,还包括了文件长度和位图数据在文件中的起始位置。
3、文件的信息首部包含了图像的高、宽、颜色数等非图形数据。这个图像共有一百万个像素,一个像素需要八位的颜色信息,文件的这一部分的长度是一百万个字节,字节排放的顺序是自左到右从图像的最下面那行开始,这个文件的总大小是1001078字节。
作者:Alone
来源:知乎
显示的是16进制的内容,对于二进制或者其他的进制的可以在编辑器内右击
在这里我选择16进制
在这里我将第一个C改为A,第三个D改为Z。
由于8*8太小了难以显示,所以我在图片查看器中放大了300%。
在最开始的8个字节表示文件格式的定义。
对于以上在我的另一篇博客里: link.
根据编码规则对十六进制进行改变,观察其变化:
下载地址: 植物大战僵尸
提取码:4i37
选择显示隐藏的项目,然后可以看到ProgramData文件夹,进入之后点击PopCap Games,打开里面的PlansVsZombies中的userdata
在没有创建用户的时候,是以下效果
在进入游戏后,创建用户名为:make
在userdata文件中可以看到生成了user.dat和users.dat的俩个文件,这代表了我们新创建的用户——make。
我们先试玩一下,在冒险模式里先玩一关。
在试玩之后可以看到关卡变成了1-2.
现在利用Hex Editor Neo打开user1.bat文件
在这里可以看到00行04列现在是02,我猜测一下这里代表的是关口,因为这里是16进制,我先将此文件更改为10进制显示。
将00行04列更改为9.
然后将植物大战僵尸重新打开可以看见,关口由1-2成功的变成了1-9.
所以修改这里是成功的。
因为植物大战僵尸每个大关卡有10个小关卡:
对于16进制来看:
01:转换为十进制是1,代表1-1关
02:转换为十进制是2,代表1-2关
09:转换为十进制是09,代表1-9关
1e:转换为十进制是30,代表3-10关
在进入游戏后发现是跳关成功。
注意:有一个问题,就是虽然跳关成功了但是你的植物并没有在图鉴出现
但是并不影响你的游戏体验,在本关中所用到的植物会自动给予你。
同时可以看见我们的金币变为了620,这可以在后面和user1中进行数值对比。
(在游戏结束的时候奖励了200,所以金币变成了920)
通过对比发现00行08列变成了5c,转化为10进制为92
可以猜想在游戏里是按1:10进行兑换的,意思就是92对应游戏里的920金币。
在这里我们更改5c为ff(就是十进制的92变成255)
再次进入游戏查看。
可以看到金币变成了2550金币,这说明我们的更改是成功的。
现在我们开始实现无限金币,将这里更改为最大值。
在更改的时候我发现,在00行08列所允许的最大值为255.
那如何实现比这个还大的值呢。
我将关卡更改为1e我们继续上一关,因为上一关给的金币比较多一点。
继续玩游戏。
可以看到金币变成了3360,利用Hex Editor Neo再次打开user1.bat文件
与上次做对比发现00行09列变成了01,我们知道08列是1:10,3360-500=2860.
猜想一下可能是09列是1:2860的金币汇率。
我们将08列改为0,09列为01试试看。
可以看到金币在(08列为04)(09列为01)的情况下变成了2600.
说明我们的猜想不正确,09列的金币汇率为1:2560.
现在我们更改08列为ff,09列为ff,看一下是否达到了最大值金币。
看这个情况应该还没有,猜测一下应该是在0a列进行变动,金币汇率会更高。
尝试更改0a列为ff.
可以看到金币变为了167,772,150 基本满足了我们对于无限金币的要求。
在没有对比的情况下我们只能一个个试了,将关卡选到最后一关。
在查阅资料可知,植物大战僵尸一共50关。50的十六进制为32
同时记录各数值,除了如下俩张表剩余全为00。
费了我20分钟终于通关了。
在通关之后可以看见其他模式都可以使用了
所以我们利用Hex Editor Neo再次打开user1.bat文件
查看是否是这里的变化影响了解锁的程度。
通过更改后可知,的确是0c这列影响解锁的程度。
0c这列解锁将00更改为01便可解锁