cheat engine扫雷逆向实验报告(棋盘,雷数,笑脸,计时器)

发布时间:2023年12月28日

下载

https://github.com/eastmountyxz/Reverse-Engineering-01-Saolei

1,分析“初级”、“中级”和“高级”的棋盘内存地址范围

思路:要找到棋盘内存地址,则需要找到第一格和最后一格的地址,即知道该棋盘,在内存上的地址。对于这两个格子没有精确的数值描述,但我们可以用是否有雷去分析,不断点击第一格格子,根据是否有数值变动就可以找到基质。

初级:先点击最后一格格子,进行未知初始值扫描,然后不断重开游戏,观察值是否变动去扫描,最后得到该格子的基址。

步骤:

1.先扫描未知的初始值(记得取消快速扫描)

2.开始不断重开游戏,每次去点击第一格的地址,观察是否有变化(有空白,雷,数字三种形态),根据变动的值/未变动的值去不断扫描,直到找见该内存地址。

第一次为空白,扫描未知的初始值

第二次依旧为空白,扫描未变动的初始值

第三次为数字,扫描变动的数值

以此类推,最后找到地址

中级与高级步骤与此相同不再演示。

初级棋盘 0100535E ~ 01005469

中级棋盘 0100535E ~ 01005550

高级棋盘 0100535E ~0100555E

2,找出“雷数”、“笑脸”和“计时器”的内存地址

雷数

思路:

?? 在自定义中可以去修改雷数,可以去直接搜索雷数,然后不断修改雷数然后搜索。

步骤:

?不断去修改并且搜素雷数,最后得到三个地址

接着,通过右键插旗帜,减少雷数,看看对应哪个内存的值变动

笑脸:

思路:

? 笑脸有不同的状态,刚开始时候为笑脸,点击时候为惊叹的表情

炸到后胜利后通过笑脸表情的变化不断扫描。

步骤:

? 1.笑脸时候,扫描未知值

2.哭脸时候,扫描变动的值

3.再次点击恢复笑脸后,再扫描变化的值

小技巧:可以将难度调到最低,通过不断切换胜利和笑脸的表情去搜索(也可调到最高,通过不断切换失败和笑脸的表情去搜索)

通过编写程序的经验,对于这类只有三四个选项的变量时,往往会编写一个变量,每个值代表一个选项,而且根据经验而谈,这类flag值一般都设为个位数,即0,1,2,3…

最后找到笑脸地址

计时器:

思路:

? 计时器是一个不断增加的数字,当游戏结束时候会停止增加,可以由此去扫描变化的值/增加的数值

步骤:

1.首先扫描未知的初始值

2.随着计时器的增加不断扫描增加的数值

3,分析地雷存放的算法

将雷数修改到最高,发现无论几次都不会第一次就点到雷,所以说地雷的生成是在点击第一次以后,再调用函数生成。随机生成坐标中的几个点,将里面安放雷,每次点击时候,计算该点周围八个格子的雷数并相加后返回。

4,利用思维导图分析“扫雷”游戏软件的工作原理(设计原理)

文章来源:https://blog.csdn.net/CYwxh0125/article/details/135050340
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。