植物大战僵尸虽然是个单机,但是很适合拿来练手学习CE
找阳光数量动态基址
先从阳光数量入手,先修改阳光数量。
阳光数量初始值为50,CE附加游戏,然后四字节扫描50的值。
捡一个阳光,阳光数量增加25,CE输入栏改成75,点击再次扫描,只剩下一个值,双击添加到地址列表,并双击数值,修改为999
阳光数量成功修改到999。
什么是游戏基址?
游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置。基址伴随着一个加到基上的偏移值来确定信息准确的位置(绝对地址)。
我们现在找到的是动态基址,什么是动态基址,就是你重新打开游戏,或者重启,就会变的东西,意味着什么了,就是你每次想玩,都得重新找,很麻烦。
什么是静态基址?
就是应用程序运行时每次都在内存中的地址都不变动的地址。
所以我们就要找阳光数量的静态基址。
找阳光数量静态基址
首先对着动态基址按右键,然后点击什么访问了该基址
接着你会发现有一堆跑动的数据,如果你电脑不咋地,可以按下方的停止,但不要点关闭
1 | add eax,[edx+00005560] |
add 什么的不用看,仔细观察 mov eax 的数据,双击点开,框柱的那条数据,复制那个值到CE搜索框中,打上十六进制的框勾勾,然后粘贴进去搜索,发现有挺多值的。在一个一个接着看,快捷键Ctrl+F5,继续查看访问他的数据。
1 | mov,edi,[edi+000000768] |
最后一步。就会看见搜索出来的值,有带绿色的值,那就是静态基址。挑一个喜欢的双击添加到地址列表。
1 | PlantsVsZombies.exe+2A9F78 |
双击箭头指向的十六进制,就会出现这个更改地址的框,复制地址,点击确定,然后到右边点击手动添加地址
最后完整地址是:
1 | PlantsVsZombies.exe+2A9F78 + 768 + 5560 |
植物栏无CD
找到阳光数量静态基址后,就可以尝试做更多事情了,比如无CD。可以无限放植物下去,前提是要你足够多的阳光
像图片的。我放了一个土豆,就开始冷却了。
可以通过CE,找到冷却时间的基址,并通过修改,达到不用冷却的效果。
CE 搜索方法
1 | 搜索二字节 未知值 --> 拿起植物 --> 搜索 精确数值 0 --> 放回植物入植物栏 --> 搜索精确数值 1 --> 循环搜索 |
双击添加到地址列表,可能有的会有几条。都一一添加到地址列表。
然后把数值改为1.锁定,并种植植物,如果不产生冷却时间,说明找到正确的动态基址了。
找CD静态基址
接下来找静态基址
和找阳光的一样,不过这个经过多次踩坑得出,查找访问出来的数值是没用的。可能是因为CD时间是写入进去的把。所以要查找写入。(如果以后知道为什么再改吧)
点击查找访问以后,是空白的。所以你要拿起一颗植物,然后放下,然后就会出现
1 | mov byte ptr [eax+ecx+70],01 |
这串代码。为什么是这串,因为这也是我踩得雷,追其他的追不出来。
接着下一个,就需要查找什么访问了地址,因为这里没有写入把。可能是,反正怎么弄都没数据出现
后面的操作和找阳光的一样,直到看见绿色的地址。就到尾了。
最后的静态基址为:
1 | 冷却时间:PlantsVsZombies.exe+2A9EC0+768+144+70 |
当你手动添加了地址进去以后,将地址锁定改为1,在你阳光数量足够的情况下,种植植物就不用CD了。
学习文章链接
【吾爱动画大赛2019参赛作品】- 我们来做一个自己的红警修改大师
结尾
在之后有时间,就在把自动收集阳光 和 秒杀 僵尸等功能也写一写,当然百度也会有,只是练习CE的一个方法。
然后有时间可能也会用Python 来写一个 修改器。
借用一句看到很不错的话:
技术不分对错.人性才分善恶.
学习逆向的人必须身心放正.
身心放正之人手握屠龙刀,也是保家卫民.