计算机对⼆进制数据的解决机制

批改动物大战僵尸存储数据

二进制是什么?为什么采纳二进制?

二进制(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