一、使用CE确定扫雷棋盘地址范围:
扫雷的棋盘是一个二维数组,因此棋盘格子的内存是紧挨着的,依次排列下去的。因此只要确定第一个格子的地址和最后一个格子的地址,便可以确定棋盘的地址范围了。
基本方法为:每次重置棋盘后,都只点击棋盘的第一个格子,该格子会出现空白、1、2、3等多种情况,每种情况对应地址储存的内存大小是不一样的,所以根据这个思路使用ce工具。第一次点下格子,首次查找未知的初始值,重置棋盘后再次点下第一个格子,如果情况与上次一样,则查找未改变的值,若不一样则查找改变了的值,反复多次,排查结果。需要注意的是,排查选项中,默认为快速扫描,我们需要取消这个选项。
右键此地址点击浏览相关内存区域,便可得知改地址为 01005361。
emmm
同理找到棋盘的最后一格的地址为01005550(中级棋盘)。
则我们可以找到棋盘的地址范围:
初级棋盘地址范围 01005361 ~ 01005469
中级棋盘地址范围 01005361 ~ 01005550
高级棋盘地址范围 01005361 ~0100555E
二、使用CE分析植物大战僵尸:
1、寻找阳光的偏移地址和基地址方法:第一把选择精确数值扫描,搜索此时的阳光数值50,有3546种结果。
接下来花费50阳光种一朵向日葵,现在阳光数值为0,再重复第一步的扫描方法,数值改为0,再次扫描,只发现一个地址,此地址就是阳光的偏移地址。
修改此地址的值为999,阳光也变为999,所以这是阳光的此次偏移地址 17E9A830。
右键此地址,点击了解访问此地址的内容,发现有两条指令,点击mov的一项,发现它偏移了5560
复制esi的值,使用十六进制扫描esi的值。这样的地址有很多是重复的,我们要找出与大多数地址不相同的地址。这里有一个。
了解访问此地址的内容,这些所有的指令,详细信息我们所要找的指针值都是一样的,都为02739D00。
我们复制这个指针值,再次使用16进制搜索,会看到四个绿色的地址,这四个内存地址都是可以用的,复制一个地址,并查看地址。
右下角手动添加基地址,根据这两次的偏移进行输入,就得到阳光的基址了,如下图。
找到阳光基地址之后就可以在任何时候对阳光进行修改。
2、寻找植物冷却时间:
以向日葵为例,冷却时间是位置的,我们在游戏开始后,先扫描未知的初始值,此时向日葵的可以种植的。
然后种下一株向日葵,让向日葵进入cd,这时它的cd时间一直在变化,我们一直再次扫描变化的值,直至它cd完成(完成后相比完成前一秒,两个时间点的cd相比较也是属于变化的值)。
现在向日葵cd是已经好的,我们扫描几次未变化的值(每次扫描返回一次游戏)。这时的结果已经很少了,然后再种下一株向日葵,让它进入cd,扫描变化的值。当它冷却完成后,我们继续扫描未变化的值。就基本可以确定一个地址了。
经过手动测试数值,可以发现该地址数值为750时,向日葵冷却就完成了。我们可以认为向日葵的冷却时间即为750。
同样的道理,我们可以测得其他植物的冷却时间如下:
向日葵750
阳光菇750
坚果墙3000
樱桃炸弹5000
寒冰射手740
毁灭菇5000
大嘴花740
双发射手740
土豆雷3000
墓碑吞噬者740
3、寻找金币基地址:
打开商店界面,使用精确数值扫描,搜索当前的金币数,因为游戏中金币是以10为单位的,所以我们搜索现在的金币除以10之后的值,会发现有2035种结果。
我们在游戏中收了一个金币,金币发生变化,我们再次使用精确数值扫描新的金币值,就会发现只有一个结果了。
对该地址数值进行修改,发现金币发生了变化,该地址即为金币的便宜的地址。
我们运用和找阳光一样的方法,右键该地址点击访问该地址的内容。
复制该地址,运用十六进制进行扫描。
会发现只有一个结果,点击该地址,了解访问该地址的内容,
复制找到的地址进行十六进制扫描,会发现有四个绿色的地址,点击第一个,进行访问。
然后根据类似找阳光基地址的方法,添加两次偏移,就得到了金币的基地址。
当我们对该地址的数值进行修改,发现游戏内的数值也发生变化了,该地址即为金币的基地址。