其实这个,和改阳光差不多

(一)找到僵尸血量

因为不知道僵尸血量是多少,所以僵尸出现后,搜索未知的初始值。而后僵尸每次收到攻击,搜索减小的数值。这样搜索到最后,还是有很多值,那是因为有很多数据可能是随着游戏时间推移,也一直在递减的,因此无法判断哪个是僵尸血量。所以有个小技巧,在搜索减小的数值后,僵尸受到下一次攻击前,搜索未变动的数值,以此来过滤,即可找到僵尸血量。
CE修改植物大战僵尸(5)一击必杀

(二)修改验证

我们把这个值改大,看看是不是真的僵尸血量。回到游戏,僵尸受到多次伤害,依然没死,本来早该死的。说明这确实是僵尸的血量。
CE修改植物大战僵尸(5)一击必杀

CE修改植物大战僵尸(5)一击必杀

(三)找出扣血代码

右键,找出是什么改写了这个地址。回到游戏,僵尸受伤,发现出现了一条指令。受到第二次伤害,指令执行次数+1,可以肯定,这就是僵尸的扣血代码。我们看看里面具体是什么。
CE修改植物大战僵尸(5)一击必杀

(四)分析代码

看看具体操作

popcapgame1.exe+145DF5 - call popcapgame1.exe+142170
popcapgame1.exe+145DFA - sub ebp,[esp+20]
popcapgame1.exe+145DFE - mov [esp+10],eax
popcapgame1.exe+145E02 - mov eax,edi
popcapgame1.exe+145E04 - mov [edi+000000C8],ebp
popcapgame1.exe+145E0A - call popcapgame1.exe+142170

不管这两条call具体调用了什么,我们分析其他部分

popcapgame1.exe+145DF5 - call popcapgame1.exe+142170
popcapgame1.exe+145E0A - call popcapgame1.exe+142170

sub是减少,僵尸受到伤害,那肯定就是这一条计算僵尸少血的。也就是说,[esp+20]就是豌豆射手的攻击力,ebp是一个临时变量,保存僵尸受伤后还剩多少血

sub ebp,[esp+20]

将ebp赋值给[edi+C8],[edi+C8]就是僵尸血量。就是这一句话设置了僵尸受伤后剩余多少血。我们只要在这里,把僵尸血量改成0,僵尸不就死了吗?

popcapgame1.exe+145E04 - mov [edi+000000C8],ebp

CE修改植物大战僵尸(5)一击必杀

(五)进行修改

修改,把后面的ebp改成0,回到游戏
CE修改植物大战僵尸(5)一击必杀

(六)结束

看,僵尸中弹后,瞬间死了。刚刚改的1000血也被秒杀了。修改成功!
CE修改植物大战僵尸(5)一击必杀

目录

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

标签: CE, pvz

添加新评论