一、寻找阳光
第一步:打开ce选择进程植物大战僵尸。
第二步:初始阳光值为150,输入150,点击首次扫描,显示结果。
第三步:消耗(或者增加)阳光值,使阳光值产生变化为50,输入50,点击再次扫描,显示结果。
第四步:单击右键,选择改变该值,进行阳光值的修改。
二、找出阳光基址
右键单击,阳光内存地址,点击什么访问了该地址。
找出偏移量,和可能的地址。
点击新的扫描,勾选16进制,输入可能的地址,首次扫描。
重复操作,找出绿色的基址,点击手动添加地址。
点击指针,找出是什么修改了地址。
三、阳光产出速率
我们首次扫描未变动的初始值,然后我们进行扫描减少的数值,因为阳光产出会有CD
当阳光发光的时候,生成阳光,我们选择增大的数值,因为她CD增加了
然后我们再次搜索减少的数值
最终得到一个阳光产出CD值,我们将它修改0,阳光不断产出
我们可以找到结构体,很明显,值为我们修改的1000
经过测试,这个为该第一行第一列的植物的血量,为300
四、无限掉落阳光
下坠的阳光 我们刚出现阳光,搜索未知的初始值,然后我们选择减少的数值
然后我们搜索减少的数值
找到了地址16B8EAF8 偏移量 00005538
再次寻找029CA860 偏移量0768
修改后为1,成功
五、自动收集阳光
找到阳光的内存地址。
点击什么改写了该地址,然后收集一次阳光。
点击停止,显示反汇编程序,点击调试,设置断点,再次收集阳光。自动汇编,点击模板,选择CT表框架代码,再选择模板代码注入。
将jne修改为jmp,关闭断点,解放双手,自动收集。
自动收集+无限掉落
六、僵尸血量
首先我们让他被打一次,扫描一次减少的数值,
找到访问之后,
进行再次查询
七、关卡跳跃
当我们通关后,扫描当前关卡
然后我们修改为5,发现退回到5关了
跳关,发现计数为1
偏移量24 我们接着往上找
然后我们找到基址和偏移
八、子弹发射
我们选择一个植物,选择第三关
我们使用变速精灵修改0.1
然后开始选择未知的初始值,然后子弹发射出去,我们选择减少的数值
同时 猜测范围应该小于2000
射出子弹的一瞬间,选择增加的数值
改动数值后,子弹不在发射,我们对他进行汇编修改
点击什么改写了他
我们查看反汇编
选择自动注入
跳转到这里0045f8A9
我们把代码修改为-04,射速超快
九、植物基址
我们假设植物的冷却刷新由0 和 1来决定,那么我们可以进行不间断搜索
首先确保三个卡槽处于正常状态,我们进行新的扫描,点击豌豆射手,然后进行搜索0
处于刷新状态,我们修改为0进行查询
之后,010101 不间断刷新
我们修改之后,仍有30个无法确认,我们选择寻找一个特殊值
我们将植物,拿起,放下,发现有改写的东西
mov byte ptr [eax+ecx+70],01 也就是他将这个置换为1
EAX 为000000,ecx为108B9398 还有70的偏移量,ecx和70两个偏移量,我们先按下不表
我们去CE中搜索整个地址
我们只找到一处地址
我们点击,什么访问了这个地址
点击,放下植物,就会有很多
下一个偏移量为00000144 EDI为12aada50
我们发现有很多,然后我们对他进行逐个查看,看放置植物是否会对他发生改变
发现有一个特殊的,上面很多都是变化的,我们放置植物刷新后,留下了最新的固定地址
mov esi,[esi+00000768]
偏移量 00000768
我们再去搜索试试02571130
我们搜索到四个基址
添加后锁定为1
然后我们去寻找第二个基址
同理找到一个70偏移量的植物
我们将几个基址进行尝试后,发现只有一个可以得出数值
这时候我们发现,找到的,都是原来第一个值的基址,那么到底有什么问题呢?
原来在这里
这个eax就是偏移量,就是为了查看植物修改而来的,那么我们增加70+50(这里两个都是16进制)也就是C0的偏移再重新看看
那么为什么不能多加一个指针呢?因为加一个指针就跨段了,很明现eax 和70 都在一个ip之中,所以我们不能跨段