目录

1.单卡片无CD

1.1 思路一

1.2 思路二

2.全卡片无CD

3.豌豆射手射速修改(修改植物射速)

4.实现豌豆射手发射“玉米加农炮”(思路)


上一期教程中,我们学习了修改植物大战僵尸的阳光数量、向日葵生产阳光速率以及实现“太阳雨”PS:上篇链接:(38条消息) 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之阳光篇_Fly1ng.M的博客-CSDN博客

首先,用CE打开植物大战僵尸。

此时我们可以直接导入上次找出的三个基址:

导入成功!

1.单卡片无CD

为了方便我们继续,首先现将阳光数量改为9999。

1.1 思路一

分析:植物在CD结束后卡片可选状态和鼠标点击卡片但不松手是两种相反的状态,我们可以利用这点通过1/0搜索排查。

游戏刚开始时,豌豆射手处于可选状态,我们在CE中搜索“1”。

注:因为此次搜索的值为0和1,在0~255之间,所以在搜索前必须将“数值类型”改为“字节”。

切回游戏,鼠标点击豌豆射手但不种下,使豌豆射手处于纯黑背景状态,我们切出CE,搜索“0”。

重复上述步骤,直到数量结果不再减少。此时结果数量可能还是很多,我们可以Ctrl+A全部选中,将所有地址都添加到CT表中。(如下图,全选后点击红色箭头添加到CT表)

此时,我们可以同时选中很多地址,对他们的数值进行更改,此时数值为1,我们双击数字1,修改为0,如果豌豆射手进入不可选中状态,则可说明豌豆射手CD在选中的这些地址中;如果没有变化,则继续筛选。

最终,我们终于找到了豌豆CD的地址(其实就是最后一个)。

接下来我们寻找基址,右键->“找出是什么改写了这个地址”,然后我们切回游戏,点击豌豆射手再放回去。能得到如下结果:

通过分析可知,下面那一行“01”代表了豌豆无冷却的状态,我们双击它(或查看详细信息)。

可知“可能的地址”为1D3250E8,虽然是[eax+ecx+70],但是仔细观察可以发现EAX=0,所以一级偏移量为70,我们记下这个值,后面要用。

右键“可能的地址是”后面的地址可以直接复制:

点击新的扫描,因为我们要搜索地址,地址的表示形式为16位,所以我们要勾选搜索框前面的Hex,还要注意的一点,搜索地址时别忘了把数值类型改为4字节!

如图,可知可能的地址为1D296218,二级偏移量为144,记录。

这次扫描会出现很多地址,前几个与其他地址明显不同的都有可能,一般像这种指令比较工整的就是我们要寻找的方向。

如图,可知可能的地址为02879B88,三级偏移量为768,记录。

再次搜索地址时,就会发现绿色的基址了。

双击任意一个基址添加到CT表中,可以看到基址地址为006A9EC0。

我们点击“手动添加地址”, 因为有三层偏移,所以我们点击“指针”-->“添加偏移”。下面一栏输入006A9EC0,三行偏移从上至下依次填入先前记录的70、144、768,单击确定。

这样我们就成功找到了豌豆射手单卡片CD的基址,我们把数值改为1并锁定,可以看到实现了豌豆射手的无CD!

1.2 思路二

分析:植物在刚种植后进入冷却,此时植物不可选,直到冷却结束才能再次种植,我们可以通过CD变化搜索“变动的数值”不断查找该植物的CD(至于为什么不用“减少的数值”,一会就知道了)。

首先,种下豌豆射手,搜索“未知的初始值”。

切换到游戏状态让游戏运行一会,再切换回CE,搜索“变动的数值”。

当冷却结束后,我们也可以搜索几次“未变动的数值”筛选更少的结果,然后再种一颗豌豆射手,重复上述步骤。

通过观察可以发现,当豌豆射手在CD时,该地址当前值一直在变化;而当豌豆射手冷却完毕后,该地址为0,由此推断出,该地址就是存放豌豆射手CD的地址,仔细观察就会发现,植物卡片的CD并不是一直减少到0,而是先增大后变为0,所以“减少的数值”是搜不到的。

2.全卡片无CD

我们在1中已经找到了第一张卡片CD的基址,那么其他卡片的CD基址可以找到吗?每个卡片依次按照上述方法一步一步找基址当然能找到,可以这样太浪费时间了。这里提供一种思路:通过观察可知,植物槽上相邻卡片的地址应该离得很近,所以我们可以直接右击第一张卡片CD基址,选择“浏览相关内存区域”。

打开地址区域后,我们点击第二张卡片再放下,仔细看,内存区域中有一个地址在随着我们点击进行00/01的切换,可知,这个地址为第二张卡片的地址。

右键该地址,将它添加到列表中:

我们依然用第一次查找第一张卡片CD的基址时所用的方法,此处不在赘述。三次查找的线索如下:

仔细看!第一次偏移时,EAX的值变为了50,而在第一张卡片的第一次偏移值里EAX=0,我们可以大胆推断下一格植物卡片比上一格偏移量多了50!

将第二个植物的CD基址添加一下:

为了保险起见,我们可以继续验证一下,第三张卡片进行查找后第一次偏移为:A0+70

没看懂不要紧,通过计算器算一下可知,A0-50=50!也就是说第三张的确比第二张偏移多了50!

所以第三张卡片的基址也可以直接手动添加了:

综上所述,通过这种方法我们就可以求出任何一张植物卡片的基址了!

第n张卡片的基址第一次的偏移量:70+50*(n-1)

(PS:第二次和第三次偏移量不变!)

3.豌豆射手射速修改(修改植物射速)

思路:豌豆射手打僵尸会发射豌豆,我们假设豌豆射手应该有一个内置“计时器”,每当射出一粒豌豆后,计时器开始减小,不断循环(类似CD不断减少)

注:为了方便操作,建议开启变速精灵,把游戏速度调慢!

此时,搜索未知的初始值。

然后切回游戏,“让子弹飞一会”,再切回CE搜索“减少的数值”,当豌豆射出下一发时再搜索“增大的数值”,然后重复上述步骤。

注:此处容易失误!原因是:看起来豌豆射手好像没有发出下一发,但是计时器其实已经刷新了,(可以理解成蓄力的动画时已经开始计时了,但这个动画并不明显)所以建议快打到僵尸的这段时间不要继续“再次扫描”了!

我们右键,“找出是什么访问了这个地址”,如果没有切回游戏让豌豆射一会。

分析可知,这个“-01”可能代表着豌豆的涉及射击频率,可是怎么把这个指令以代码或脚本的形式提取出来呢?接下来我们学习CE的进阶知识:代码注入。点击这行指令-->“显示反汇编程序”。

我们在工具栏里找到“自动汇编”。

框架代码注入后,我们再选择代码注入,因为之前选中的就是这行指令,所以我们不用管,“OK”就好。

如图,把-01改为-04,这会增加豌豆射手的发射速度。

好了,我们已经生成好了自己的脚本,不要急着关闭,点击“文件”-->“分配到当前的CT表”

锁定该脚本后,可以明显发现豌豆射手的射速变快了。

右键该脚本点击“创建热键”,可以实现选择性的开关脚本。

4.实现豌豆射手发射“玉米加农炮”(思路)

首先,我们点击“查看内存”。

右键任一地址,点击“转到地址”。

地址栏输入:004672A5。

“工具”-->“自动汇编”。

引入CT表框架代码:

代码注入,当前地址确定即可。

然后我们在下图中位置插入几行代码,稍后会逐行进行讲解:

注释:

cmp [ebp+24],#0 //cmp是判断,0代表豌豆射手,这句话用来判断植物是不是豌豆射手。#的意思是10进制,否则为16进制

je h //je是等于跳转,表示如果是豌豆射手就跳转到h

jne originalcode //jne是不等于跳转,表示如果不是豌豆射手就仍然按照原来的代码执行

h: //由上,如果是豌豆就跳转至此

mov eax,#11 //mov是赋值,表示把11放到EAX里。这里的11代表的是子弹类型(玉米加农炮),大家也可以尝试换成其他数字,看看会出现什么效果(注意:如果数字超出界限游戏会崩溃)

然后我们可以分配到当前CT表了:

激活脚本,如下图,成功了!

【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇相关推荐

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

    目录 1.跳关(任意选择关卡) 2.修改金币值 3.实现自动收集阳光 上一期教程中,我们学习了寻找植物大战僵尸僵尸距离基址.实现"秒杀"僵尸的方法.PS:上篇链接:[CE入门教程] ...

  2. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之僵尸篇

    目录 1.寻找僵尸位置基址 2.实现"秒杀"僵尸(修改僵尸血量) 上一期教程中,我们学习了修改植物大战僵尸的单卡片无CD.全卡片无CD.豌豆射手射速修改以及实现豌豆射手发射&quo ...

  3. 修改《植物大战僵尸》的存档文件AND运用黑白像素课程通过二进制画出一个图形

    C1-01 LZG小组 任务一:修改<植物大战僵尸>的存档文件 1.修改<植物大战僵尸>的存档文件,能跳转到指定关卡,例如[ 5-1 ],实现步骤如下: 1.1. 准备工作 去 ...

  4. C1认证:修改《植物大战僵尸》的文件以及code.org绘图以及bmp画图

    C1认证:修改<植物大战僵尸>的文件以及code.org绘图以及bmp画图 索引 C1认证:修改<植物大战僵尸>的文件以及code.org绘图以及bmp画图 前言 一.任务内容 ...

  5. 修改《植物大战僵尸》游戏数据

    修改<植物大战僵尸>游戏数据 最近参加认证培训,注重动手操作,虽然对新手有难度,但是这种模式确实能够很好的锻炼动手能力,最重要的是记忆会非常深刻.第一个任务就是修改植物大战僵尸游戏数据到& ...

  6. 使用Cheat Engine(CE)来对植物大战僵尸进行逆向分析

    3.2.1针对阳光值 采用三种以上的方法扫描至少三关的"阳光值"的内存地址,并进行修改. 第一种 可以通过精确数值的扫描来进行太阳值的内存地址的扫描,首先一开始的阳光初始值为50, ...

  7. 教程:利用Cheat Engine简单实现无限期体验百度云盘会员提速.

    轻教程. 在如今大数据时代.云盘几乎成为了大家日常生活中的必需品. 没有需求.就没有市场.有些凉心可能不够到位的公司.偶尔蹭一下他们的东西其实也没有什么不好的23333- 话不多说.我们进入正题.注意 ...

  8. 【游戏辅助】使用cheat engine 修改《植物大战僵尸》游戏参数

    #1.前言 ##1.1声明 文章中的文字可能存在语法错语以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! ##2具体实现过程 ##2.1 准备工具 1.cheat engine ...

  9. C1认证:修改《植物大战僵尸》游戏存档文件

    任务01:修改任意关卡.更改用户金币.解锁新模式 目录 任务内容 工具下载 修改5-1关卡 修改用户10000金币 解锁新模式 任务内容 工具下载 需要根据自己的电脑系统(Windows 还是 Mac ...

最新文章

  1. 深入了解Mvc路由系统
  2. java面向对象 接口和实现类_类实现java面向对象上:接口
  3. java propertysource_[spring] @PropertySource
  4. NoSQL, Clojure
  5. HTML,,,音乐,html embed用法
  6. 6-6-1:STL之map和set——set的基本使用
  7. Tensorflow object detection API训练自己的目标检测模型 详细配置教程 (一)
  8. Unity3D基础35:五彩砖块
  9. HDU 6182 2017广西邀请赛:A Math Problem
  10. 拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
  11. ROSE HA,想说爱你不容易——为ROSE HA配置IP资源的LocalFailover
  12. python爬取别人qq空间相册_python+selenium+requests爬取qq空间相册时遇到的问题及解决思路...
  13. 未來用工新趨勢_2019年社会化用工成新趋势
  14. css设置内外边距,css内外边距属性
  15. JS实现鼠标点击特效,五颜六色的小球绽放
  16. 计算机职场礼仪与技巧论文,职场礼仪论文1500字.doc
  17. 第三章 SQL错误信息
  18. 关于编译型语言函数的调用(一)
  19. wps在使用过程中突然崩溃了,怎么找回原来的文档
  20. Approximate Inference

热门文章

  1. Asp.Net 上传大文件专题(4)--利用ajax技术显示上传进度
  2. CSS中的表格2️⃣之合并/拆分单元格以及单元格中在存放表格(跨行或者跨列)
  3. 不需要任何化学药剂的污水处理设备(微纳米气泡技术)
  4. 潘多拉无线打印服务器设置,潘多拉(PandoraBox)系统的路由设置
  5. 动态路由 OSPF详解
  6. 无线突然断开无法连接服务器,为什么我的无线网突然就断了 随后怎么也连不上...
  7. 游戏设计之动作游戏见解
  8. 【漫画科普】什么是POL?什么是全光?
  9. mac版本钉钉6.0.18版本无法获取摄像头权限问题
  10. Typescript(一)