目录

1.跳关(任意选择关卡)

2.修改金币值

3.实现自动收集阳光


 上一期教程中,我们学习了寻找植物大战僵尸僵尸距离基址、实现“秒杀”僵尸的方法。PS:上篇链接:【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之僵尸篇_Fly1ng.M的博客-CSDN博客

1.跳关(任意选择关卡)

分析:我们可以分别在第1关、第2关、第3关的时候查找1、2、3,以此类推来寻找关卡的地址。

为了方便起见,我们可以新建一个用户从第一关开始。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 CE里打开植物大战僵尸。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 因为我们现在在第一关,就可以精确数值搜索1。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 如果觉得过关太慢,可以开启变速精灵,调为2倍速。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 好,到达第二关,我们再搜索2。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 继续过关,到第三关的时候,搜索3。此时我们可以发现结果只有3个了。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 我们把它们添加到CT表中。依次改它们的数值,然后重新开始游戏(关卡需要重新开始游戏才能刷新),观察关卡数是否发生变化。

经过测试可以发现,当第三个地址的数值改为11时,关卡变为了黑夜0。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

查找基址。【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 添加成功。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 这样我们就找到了关数。

2.修改金币值

分析:我们可以通过查找精确数值找金币数值,再购买物品减少金币值继续精确搜索。(注:植物大战僵尸游戏对金币值进行了加密,需要金币数值/10才能搜索的到,即显示的金币值小数点左移一位)。

如下图,现在9370金币,我们搜索937。 

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 购买物品。此时减少为6870。我们再搜索687。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 通过修改数值可知,这就是我们要找的地址。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 添加基址:

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 这样,我们就找到了金币基址。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 3.实现自动收集阳光

分析:我们通过手动收集阳光,找到对应的代码实现,进行代码层面的处理以实现自动收集阳光。类比之前的修改植物卡槽cd 0/1查找。当有阳光下落后,如果我们没有点它,它的值应该为0。而点完收集后就为1。

为了加快速度,这里变速精灵改为了2倍速。

游戏开始后,当阳光出现时,我们不去收集它,用精确数值扫描,扫描数值为0;收集后扫描1,不断重复上述步骤(注:鼠标点击完阳光瞬间切出CE搜索1,要不然可能会搜索不到想要的结果)。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 观察数值可以发现,当我们鼠标收集阳光时,它的值变为1;不收集时,它是0。

“找出是什么访问了这个地址”。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

有很多行指令,我们依次进行尝试。显示反汇编程序。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

由此我们猜想,当00改为01时,应该实现动收集阳光的功能。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

返回游戏,发现并没有实现。我们再尝试其他反汇编。

这个改成01之后阳光颜色变暗了,但还不是我们要找的自动收集。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网 当我们把这行代码的00改为01时,切回游戏,可以发现实现了阳光自动收集了!

自动汇编一下。

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之其他篇-编程知识网

大功告成。激活脚本,我们实现了解放双手,自动收集阳光。

到此为止,植物大战僵尸的CE教学告一段落,想要继续学习实现其他功能或其他游戏的逆向修改,请持续关注我哦~~欢迎大家私信、评论提出意见,您的支持将是我最大的创作动力。

(未完待续……)