目录
目标
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
。