一、寻找阳光
第一步:打开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之中,所以我们不能跨段











