计算机对⼆进制数据的解决机制
批改动物大战僵尸存储数据
二进制是什么?为什么采纳二进制?
二进制(binary)在数学和数字电路中指以2为基数的记数零碎,以2为基数代表零碎是二进位制的。人类算数采纳十进制,可能跟人类有十根手指无关。然而,机器又如何能辨认十进制呢,机器只能辨认电压的高下,所以采纳了二进制。
工作要求
批改「动物大战僵尸」的二进制的存档文件,批改新玩家的关卡进度,批改游戏的金钱数量
工作需要
- 操作系统:win10 64位
win举荐hex editor neo,Linux或Mac应用vim的二进制编辑模式 - 动物大战僵尸游戏下载链接
- 二进制编辑器
工作过程
1.找到存储二进制数据的文件
首先,我的想法是想要扭转玩家数据,必定是存在玩家数据的二进制文件,然而一开始我寻找到的是下载动物大战僵尸的下载地址里找的userdata,而后发现外面只有.txt文件,而后细想可能批改数据的中央会是这么不言而喻的中央嘛,显然不是这样子!
1.先关上c盘,关上查看,最初在暗藏的我的项目上关上暗藏的文件
2.而后找到ProgramData→ PopCap Games→PlantsVsZombies→userdata(祝贺你找到了)
#### 2.游戏试玩,比照二进制数据
而后看着二进制代码,天然是一脸懵逼,然而想到能够通过比照数据来察看数据变动的逻辑,我就当即开始第一把动物大战僵尸(以下是我的发现)
1.users.dat是用来存储不同的用户,图中03指代的是三个用户
2.users.dat中如图画圈的地位指代的减少或者删减用户的次数
3.针对不同的用户图中14和01正是指代游戏关卡数,并且当输出的十进制值大于32的时候显示6-
4.批改金钱真的是殚精竭虑,这个数据通过屡次尝试和总结,图中 08 09 地位便是批改金钱的地位,然而如何计算出来的2400呢?(我设置的是16进制并且须要逆向输入)
十六进制 十进制
00 F0 → 15 *16=240 → 240 *10=2400(可知金钱的最小单位是10)
如果感觉十六进制转换麻烦的话,也无妨间接扭转数据变成10进制,批改操作如下
此时,咱们也比较顺利地实现了批改新玩家的关卡进度,批改游戏的金钱数量的工作,然而我感觉如果每次去进行尝试而后察看剖析得出结论,往往会有点粗率和数据不肯定精确的问题。所以咱们须要进行更深刻的理解,摸索永无止境!
拓展工作 :应用二进制画一个图(带黑线的图像)
理解bmp位图编码存储形式
BMP取自位图Bitmap的缩写,也称为DIB(与设施无关的位图),是一种独立于显示器的位图数字图像文件格式。常见于微软视窗和OS/2操作系统,Windows GDI API外部应用的DIB数据结构与 BMP 文件格式简直雷同。概念不免让人干燥
讲讲我做的时候的想法
首先我的脑子第一反馈竟然是去网上找空白的.bmp位图,显然啥也没找到还节约很多工夫
以下这是windows零碎自带的画图3D 能够间接生成.bmp图片
为啥我会抉择白和黑呢?没有比照,你就无奈从中总结法则,不仅咱们人是这样的,神经网络模型的训练也是如此
从以下的图中我发现2点相似之处
第一.bmp后面的十六进制有很大的相似之处
第二红色对应的内容是FF,而彩色对应的是00,那接下来画图是不是很容易,不过要留神的是保留图像的像素宽度和高度尽量设置小一些,数据量比拟少,解决起来比拟不便
最初,我简略的画了一条彩色直线
拓展位图文件头
位图文件头
0-1:42 4D 为位图的标记。转换成 ASCII 码的话就是 BM。
2-5:(00 00 76 f6)H = 30,454 D(bytes),示意文件大小为30,454 bytes
6-9:(00 00 00 00)H为保留字。
10-13:(00 00 00 36)H = 54D,文件起始地位标记,示意文件从第54位开始。
自测
- 110101010001转⼗六进制是多少? D51
- 101011.101011的⼗进制数是多少? 43.671875
- 常⻅的视频编码格局有哪些? .mp4 .avi
- 65对应ASCII码是哪个字符? A