目录

【飞郁2022新课程】18 - CE基础和扫描

1.打开CE

Cheat Engine是网络安全数据分析的一款很重要的工具,我们可以在官网下载他的最新版本https://www.cheatengine.org/#google_vignette

当然也可以使用课程推荐的修改版本

在CE下载并安装好之后,我们在文件夹里找到以下exe文件,双击打开

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142757duc47v42yu808bb0-20211205113756546.png

2.附加进程

打开CE之后,我们将弹出的其他界面都关闭掉,只留下以下窗口

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142757bn16aa2rh63xmghg-20211205113757286.png

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142757t3zn4ur225uvruxr-20211205113758109.png

3. 初始扫描选项

成功附加之后,我们就可以对程序进行扫描了

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142757p7p17hnvvppq4ynh-20211205113759073.png

这里需要注意的是两者之间和未知初始值.

两者之间如果要扫描负数的话一定要记住负数的绝对值越大数值越小

这种扫描方式是不可能有结果,很多同学在这里会出错

而使用位置初始值进行扫描的时候,可能会因为程序过大,导致扫描时间很长,后期过滤也比较麻烦,所以要谨慎使用这种方式

4. 扫描类型

选择了初始扫描选项之后,我们需要选择一下扫描的数据类型,

不同的数据,都会有常用的数据类型,我们要具体情况具体分析

CE中扫描的数据类型有如下几种

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142757v22ss9yu2lwppyu6-20211205113800065.png

这里的数据类型在前面的课程中都讲过了,就不一一翻译了,最后三个分别是字节数组,所有类型,分组扫描

5. 不同类型的扫描方式

5.1 byte-word-dword-qword,也就是byte,2byte,4byte,8byte的扫描方法

整数型的扫描是最常见的,不过由于数据长度不同,所以在选择的时候还是需要斟酌的

比如扫描一个标志位,通常会使用byte型,扫描一个不太大的数量就可以使用word型,扫描一个32位地址需要用dword型,而qword型应用并不是很常用,通常只在扫描64位地址时使用

下面我们来搜索一下教案小游戏的人物血量

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758r28fgf8btjpky3k6-20211205113810629.png

在CE中搜索4字节的1000

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758ppzqk7sdqmpjqzbw-20211205113810891.png

得到101个结果,打一个怪物,血量还剩960,在CE中点Next Scan,再次扫描

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758ygg7etp0kugepiu5-20211205113814780.png

只得到了一个结果,再次砍怪验证一下,发现这个地址存放的就是我们的血量

这就是4字节的扫描,是不是很简单?

5.2 float,double的扫描方法

浮点型和双浮点型的扫描与整数型的扫描是类似的,唯一不同的就是它们的扫描结果是有精确范围的,

比如我们扫描一个100

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758gtu3tt8lff3lj3tu-20211205113816140.png

这里可以得到很多的结果,甚至还有99和101,但是绝不会出现98和102

再比如我们扫描一个100.5

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758nvukjmgjaajjm7lz-20211205113816761.png

这里会精确的小数点后1位,也就是说结果是在100.5上下浮动不超过0.1

所以当我们扫描一个只显示为整数的浮点数的时候,往往采用两者之间,比如100我们就扫描99-101,

这是比较稳妥的方式,当然,以现在CE的扫描结果来看,我们直接扫描100也没有什么问题

5.3 改变扫描到的数值可以达到特殊的效果

在一些程序中,数据并不是校验的非常严格,甚至没有任何的校验,这时我们通过CE就可以对其中的部分数据进行修改,

比如在这款教案游戏中当我们打到图中的位置时,就不能继续前进了,因为血量不够了

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758a2izo2c5d0oo8so5-20211205113823118.png

我们可以对之前扫描到的结果进行修改来达到过关的条件

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/142758snynhnsw8yn1dn12-20211205114159574.png

是不是很有趣?这只是CE最基本的功能之一,下节课鸟哥会给大家讲CE的一些特别的使用技巧

5.4 String和字节数组,也就是Array of byte的扫描方法咱们放到后面来系统的讲