既然已经实现了无限阳光与重叠建造,那我们现在就来把种植物的CD给干掉!

(一)思考

想想英雄联盟,你放了个技能,然后技能开始冷却,时间慢慢减少,到了0秒,冷却好了,这个技能就又可以用了。
植物大战僵尸也是这样,凡是有冷却的游戏,都是这样。都是让时间在跑,到了规定的值,标记冷却完成。

(二)我们怎么知道冷却是多少

种下植物,搜索未知值。因为我们也不知道冷却到底是多少,只是知道它一直在改变而已
CE修改植物大战僵尸(4)种植物无冷却

(三)假设冷却是减少的

先假设,种下植物瞬间,冷却变成100,然后慢慢下降,到0则冷却完成。当然我不知道是不是100还是0。
所以我们搜索减小了的数值,然后回到游戏,让冷却再下降,再搜索...反复循环
CE修改植物大战僵尸(4)种植物无冷却

(四)假设失败

搜索多次之后,发现没有想要的值,假设失败。
那么则说明,植物冷却是从0开始的,到了100才算完成。(冷却嘛,不减少不就是增加吗?)
CE修改植物大战僵尸(4)种植物无冷却

(五)冷却是增加的

我们重新搜索。未知初始值,增加的数值,回到游戏,返回CE重复搜索...
CE修改植物大战僵尸(4)种植物无冷却

CE修改植物大战僵尸(4)种植物无冷却

(六)还是没有

结果搜了大半天,冷却都快好了,还是有很多值,谁知道是哪个呢?
我们重新想想,再种一次冷却不就变小了吗?我们再搜索减小的数值不就行了吗?
(注:还好植物大战僵尸冷却地址不会改,要是是个指针,每次重新种就会改地址,就稍微复杂了那么一点点)
CE修改植物大战僵尸(4)种植物无冷却

(七)重新种植物

等冷却好后,重新种下植物,搜索减小的数值。
看,找到了,这个和我们要找的非常像。每次回到游戏这个都增加了,回到CE这个又停止了。
CE修改植物大战僵尸(4)种植物无冷却

(八)找到冷却

我们把这个值修改成非常大。果然,冷却瞬间好了,说明这就是冷却的地址。
CE修改植物大战僵尸(4)种植物无冷却

(九)尝试修改

那么就来看看,到底是谁在修改冷却。
我们右键冷却地址,找出是什么改写了这个地址。回到游戏种下植物,发现,冷却每走一丝丝,一个指令的访问就多了一次。这就是我们要找的操作指令。我们进去看看。
CE修改植物大战僵尸(4)种植物无冷却

(十)看看执行过程

看到这条操作指令

popcapgame1.exe+958BC - inc [edi+24]

inc递增,相当于i++,就是这个一直在让冷却变大

再往下看

popcapgame1.exe+958BF - mov eax,[edi+24]
popcapgame1.exe+958C2 - cmp eax,[edi+28]
popcapgame1.exe+958C5 - jle popcapgame1.exe+958DB
popcapgame1.exe+958C7 - mov [edi+24],00000000 { 0 }

将[edi+24],也就是冷却,赋值给eax
比较eax和[edi+28],eax是冷却,我们想想,正常程序员肯定就是把当前冷却和最大冷却进行对比啊!所以说明[edi+28]就是最大冷却。
jle,小于等于跳转,所以就是说,当前冷却,小于等于最大冷却,就跳转。跳转到哪里呢?有脑子的都能想到,冷却还没到,会跳转到哪里?肯定是继续计时啊。所以我们就知道了,下面的就是如果冷却到了会执行什么。不用关心。
我们只要屏蔽掉jle,不管冷却到没到,都当作到了。这样不就无冷却了吗?!(当然把[edi+28]赋值给[edi+24]也能解决)
CE修改植物大战僵尸(4)种植物无冷却

(十一)修改

把jli这行,使用空指令代替

popcapgame1.exe+958C5 - jle popcapgame1.exe+958DB

CE修改植物大战僵尸(4)种植物无冷却

(十二)结束

回到游戏,看,随意种,所有植物都无冷却了
CE修改植物大战僵尸(4)种植物无冷却

目录

1. 修改阳光
2. 种植物加阳光
3. 植物重叠建造
4. 种植物无冷却
5. 一击必杀

标签: CE, pvz

添加新评论