完成针对“扫雷”游戏的逆向复现报告
1.分析“初级”、“中级”和“高级”的棋盘内存地址范围
初级棋盘:取消快速扫描,扫描类型改为“未知的初始值”,点击第一个格子,点击“首次扫描”。如图1.1
图1.1
点击笑脸刷新,再次点击第一个格子,如果与上次结果不一样,则扫描类型改为变动的数值,如果与上次结果相同,则扫描类型改为未变动的数值,点击再次扫描。如图1.2图1.3
图1.2
图1.3
直到扫描结果出现绿色地址,双击添加到下方窗口,即为初级棋盘左上
图1.4
同理,找到右下如图1.5
图1.5
如图1.6
图1.6
因此最后得出初级棋盘地址范围是:0100535E~01005469
中级棋盘:同初级棋盘操作相同,找出地址。如图1.7
图1.7
如图1.8
图1.8
因此最后得出中级棋盘地址范围是:0100535E~01005550
高级棋盘:同初级棋盘操作相同,找出地址。如图1.9
图1.9
如图1.10
图1.10
因此最后得出高级棋盘地址范围是:0100548E~0100555E
2.找出“雷数”、“笑脸”和“计时器”的内存地址
雷数地址:先选择初级棋盘,手雷数为10,进行扫描,再选择中级棋盘,手雷数为40,再次扫描,再选择高级棋盘,手雷数为99,再次扫描,此时还剩3个地址。如图2.1
图2.1
右击1,1 将1,1变为旗子,此时第一个变为98,即01005194为旗子的地址。如图2.2
图2.2
修改地址为010056A4的数值为2,点击笑脸刷新游戏,此时地雷数变为2,即010056A4为雷数的内存地址。如图2.3
图2.3
图2.4
笑脸内存地址:选用高级棋盘,2个手雷。笑脸时首次扫描,选择未变动的数值进行再次扫描,再点击棋盘,通关时笑脸会变成酷脸,失败时会变成哭脸,当笑脸变化时,扫描变动的值,反复几次,最终得到两个地址。如图2.4
图2.5
图2.6
第一个地址时,酷脸和哭脸的数值均为16,第二个地址时,酷脸为3,哭脸为2如图2.5,2.6,由此可见,笑脸内存地址为01005160
计时器内存地址:选择初级棋盘,使用未知数扫描,点击1,1 右上角时间开始变化,使用增加的数值不断再次扫描,最终得到唯一值0100579C,即为计时器内存地址。如图2.7
图2.7
此时三个内存地址都找到了,如图2.8
图2.8