扫雷——CE逆向分析

1.1 棋盘内存地址范围

1.1.1初级棋盘内存地址

1.取消“快速扫描”,扫描类型选择“未知的初始值”,点击棋盘第一个格子,随后点击“首次扫描”。
在这里插入图片描述在这里插入图片描述

2.点击“笑脸”,刷新棋盘,再次点击棋盘第一个格子,若数值与上一次相同,则扫描类型选择“未变动的数值”,若数值与上次不同,则扫描类型选择“变动的数值”。
在这里插入图片描述在这里插入图片描述
如上图所示数值未变动,则选择“未变动的数值”,点击“再次扫描”。第二步操作反复进行,最后看到绿色的基址,
在这里插入图片描述
3.将该记录添加到下方,右键选择“浏览相关内存区域”,相关内容如图2.6所示。
在这里插入图片描述
点击“笑脸”,再点击棋盘第一个格子,观察下方内存数据的变化。通过观察,我们可以得出第一个格子的地址为01005361。
在这里插入图片描述

4.同理找到棋盘的最后一个格子地址为01005469。
在这里插入图片描述
因此最后得出初级棋盘地址范围是01005361 ~ 01005469。

1.1.2 其他级别棋盘内存地址

同理找出中级棋盘和高级棋盘的地址范围为:
中级棋盘地址范围 01005361 ~ 01005550;
高级棋盘地址范围 01005361 ~ 0100555E。

1.2 游戏中各变量的内存地址

1.2.1 雷数的内存地址

1.找旗子的地址。(中级棋盘)查看左上角雷的个数共40个,右侧输入40,扫描类型选择“精确数值”,点击“首次扫描”。
在这里插入图片描述
任一格子放置旗子,数量变为39,输入39进行“再次扫描”,得出找出了旗子的基址为01005194。
在这里插入图片描述在这里插入图片描述

2.扫描雷的内存地址。因为旗子和雷的初始数据是一样的,所以先扫描旗子的数据,第一次扫初级棋盘的旗子数量10,转换到中级棋盘,再次输入旗子数量40,得出三个基址。
在这里插入图片描述

我们发现,这三个地址中,有一个和旗子地址一样,则排除该地址。剩余两个地址,我们分别修改数值为1,然后点击棋盘。修改01005330地址的数值发现棋盘没有变化,则排除,在这里插入图片描述
修改010056A4地址的数值为1,刷新棋盘,点击某一格子,发现可通关,则该地址为雷数的内存地址。
在这里插入图片描述

1.2.2 笑脸的内存地址

1.选择扫描类型为“未知的初始值”,此时表情状态为“笑脸”,点击“首次扫描”。
在这里插入图片描述
2.点击棋盘,改变表情的状态,若表情变化,则扫描类型修改为“变动的数值”;若未变化,则选择“未变动的数值”。随后点击“再次扫描”,反复操作。最后得出两个地址。
在这里插入图片描述
在这里插入图片描述
3.此时表情状态为“戴墨镜”,看到第二个地址的数值为3。我们再点击棋盘,改变表情状态,观察上述两个地址的数值变化表情呈“笑脸”时,数值为0,呈“O型”时,数值为1,呈“失败”时,数值为2。最终发现表情的基址为01005160。

1.2.3 计时器的内存地址

1.输入游戏时间“0”,选择“精确数值”,开始游戏,游戏时间会开始变动,则扫描类型选择“变动的数值”,点击“再次扫描”,反复操作。最后得出地址0100579C。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

holdoulu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值