使用CE(Cheat Engine)的“扫雷”游戏的逆向复现实验

目标

1.分析“初级”、“中级”和“高级”的棋盘内存地址范围
2.找出“雷数”、“笑脸”和“计时器”的内存地址

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

思路:找到棋盘内存地址,则需要找到第一格和最后一格的地址。

1.1“初级”棋盘内存地址范围

1.获取第一个格子的内存地址。
第一个格子的内存地址未知,用CE打开扫雷游戏进程后,点击第一个格子,取消快速扫描后进行未知的初始值扫描。
在这里插入图片描述
扫描后,先重置游戏,然后点击第一个格子,观察第一个格子内数值是否改变,若数值改变则扫描类型变为变动的数值再次扫描。若数值未发生变化则扫描类型是未变动的数值,然后点击再次扫描。
在这里插入图片描述
以此类推,不断重置游戏,观察第一格的变化,进行扫描。
在这里插入图片描述
重复以上步骤,直至找到唯一的绿色基址。
在这里插入图片描述
得到基址后,双击基址将其添加到下方地址列表中。
在这里插入图片描述
右键选择“浏览相关内存区域”。重置游戏,点击第一格,重复几遍,观察内存浏览器的红色闪烁判断内存地址,可以看出第一个格子的地址为01005361
在这里插入图片描述
2.获取最后一个格子的内存地址。
取消快速扫描
同理,按照上述方法找最后一个格子的基址,然后观察相关内存地址的红色闪烁,可以得到最后一个格子的内存地址为01005469
在这里插入图片描述
所以可以得到“低级”棋盘的地址范围为01005361 ~ 01005469。

1.2“中级”棋盘内存地址范围

在扫雷将模式调为中级,棋盘内存地址的寻找方法同“初级”棋盘相同。先进行未知初始值扫描,然后判断数值是否发生改变,进行再次扫描,直至找到绿色基址。
取消快速扫描
1.获取第一个格子的内存地址。
在这里插入图片描述

在这里插入图片描述
根据上面的步骤获得第一格内存地址01005361
2.获取最后一个格子的内存地址。
在这里插入图片描述
在这里插入图片描述
根据上面的步骤获得最后一格内存地址01005550
所以可以得到“中级”棋盘的地址范围为01005361 ~ 01005550。

1.3“高级”棋盘内存地址范围

在扫雷中将模式调为高级,棋盘内存地址的寻找方法同初级、中级相同。先进行未知初始值扫描,然后判断数值是否发生改变,进行再次扫描,直至找到绿色基址。
取消快速扫描

1.获取第一个格子的内存地址。
在这里插入图片描述
在这里插入图片描述
根据上面的步骤获得第一格内存地址01005361

同时,我们可以观察到低级、中级、高级棋盘第一格的内存地址为同一个,不变。

2.获取最后一个格子的内存地址。
在这里插入图片描述
在这里插入图片描述
根据上面的步骤获得最后一格内存地址0100555E
所以可以得到“中级”棋盘的地址范围为01005361 ~ 0100555E。

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

2.1找出“雷数”的内存地址

初级雷数10,中级40,高级99。地雷数的改变,需要在初级、中级、高级三个棋盘之间变化,并且不断扫描精确数值,得到地雷数的内存地址。
1.用精确数值扫描高级棋盘的地雷数99。
在这里插入图片描述
2.用精确数值扫描中级棋盘的地雷数40。
在这里插入图片描述
3.用精确数值扫描低级棋盘的地雷数10。

在这里插入图片描述
4.通过对低级、中级、高级棋盘地雷数的扫描得到了三条数据。接下来去找出地雷数是哪一条内存地址。
(1)通过在棋盘上插旗子,观察到第一条数据发生变化,分析可得,该内存地址的数据代表的是“地雷数-旗子数”的值。所以排除这条数据。
在这里插入图片描述
(2)接下来。改变第二条地址01005330中的数值,然后查看扫雷中的地雷是否改变,比较过后,发现该数据不影响地雷数所以排除。
在这里插入图片描述
(3)验证最后一条地址010056A4,改变数值为6,发现扫雷游戏中地雷数也发生了改变,所以找到了“雷数”的内存地址为010056A4
在这里插入图片描述

2.2找出“笑脸”的内存地址

笑脸没有准确的值,但是我们通过观察可知,笑脸有两个状态:一是游戏进行时,二是游戏重置时。所以,我们用0、1扫描笑脸的者两个状态,游戏进行中扫描1,重置游戏后扫描0。
1.游戏进行中扫描1
在这里插入图片描述
2.重置游戏,扫描0
在这里插入图片描述
3.重复上面步骤扫描。
最终经过重复的扫描后得到两条地址,通过分析可得到“笑脸”的内存地址为01005164
在这里插入图片描述

2.3找出“计时器”的内存地址

计时器的显示的时间初始值是一个具体的值,所以首次扫描可以通过精确数值扫描0,而在游戏进行过程中,时间不断增加变化,所以可以通过“变化的值”不断再次扫描,最终得到计时器的内存地址。
在这里插入图片描述
得到两条数据,通过观察得知“计时器”内存地址为0100579C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值