植物大战僵尸:植物栏无冷却的找法
实验目标:通过使用CE遍历内存,定位到植物无冷却的核心代码处,并通过修改关键的跳转来实现所有植物的无冷却。
无冷却的遍历技巧1:
打开CE->回到游戏种植一颗向日葵 -> 扫描未知初始数值
然后切回游戏 ->马上切回CE ->搜索变动的数值 -> 一直重复 ->直到冷却结束
此时不进行任何建造 -> 回到CE -> 搜索未变动的数值 -> 依次排查
无冷却的遍历技巧2:
打开CE-> 搜索类型选择字节类型-> 在植物亮的状态时搜索1
拿起植物-> 搜0 -> 放下植物搜1 ->拿起植物搜0-> 一直重复-> 地址一般在最后面
第一种遍历修改方式
1.打开CE附加植物大战僵尸,然后种植一颗向日葵,搜索未知初始化数据。
2.切回游戏,然后等待0.5秒左右,马上暂停,回到CE搜索变动的数值,循环往复,直到向日葵完全冷却完毕,最后搜索一次变动的数据。
3.然后回到游戏,等待0.5秒左右,切回CE搜索未变动的数值,循环往复,如下我已经找到了,当我们将阳光地址锁定为1000的时候,向日葵则无需冷却了,说明这个定时器是一个递增的定时器。
4.我们直接在找到的地址处右击,选择查找是什么写入了这个地址,或这直接选中并按下【F6】,回到游行并种植一颗向日葵,会发现有一行写入代码,我们记下它的内存地址【0048728C】,然后关闭CE吧。
5.接下来我们使用OD直接附加进程,然后直接【F9】运行程序,默认会停在系统领空,直接按下【Ctrl + G】输入【00401000】去程序领空,接着搜索【0048728C】会看到如下代码。
我已经将代码的大体功能分析的差不多了,这里我们有多种破解思路,第一种是直接将计时器的时间改大,这样植物的冷却时间会变快,或者直接将如下【JLE】直接【NOP】填充,由于所有的植物都会使用这一个计算冷却的CALL所以只要我们将跳转NOP掉的话,所有的植物自然就无冷却了。
6.我们NOP掉,回到游戏试试,会发现已经有效果了。
如上这是第一种遍历方式。
第二种遍历修改方式
1.打开CE并开始一关新的游戏,然后直接将搜索类型修改为【字节型】,我们假设拿起植物是0,放下植物是1,这里默认向日葵是冷却完成了的,所以我们就直接搜索1
2.接着回到游戏,我们拿起向日葵,然后不要种植,直接回到CE搜索0
3.回到游戏放下植物,然后直接在CE中搜索1,以此重复进行,最后能够得到几个控制冷却状态的地址。
4.经过上方的遍历,最后会看到如下地址栏中的三个地址,这里我们在第三个地址上右击,选择【找出是什么改写了这个地址】,然后回到游戏,当我们拿起植物会出现第一条汇编指令,后面的00也就是植物的状态,而当我们放下时会出现第二条指令,01则表示放下了植物。
5.接着我们使用OD附加游戏进程,然后跳转到【0040CDEA】这个地址处分析一下代码,此处我们将【0040CDEA】处的代码的操作数改成0则可以实现无冷却,效果和上方截图相同。
相关文章
- 在Java虚拟机上班是一种怎样的体验?
- 看过无数Java GC文章,这5个问题你也未必知道!
- JAVA只要掌握内部类,多继承和单继承都不是问题
- 今儿直白的用盖房子为例,给你讲讲Java建造者模式
- 用实例带你深入理解Java内存模型
- 你知道,java项目中是如何获取文件地址的吗?
- 【架构师(第十五篇)】脚手架之创建项目模板开发
- 【架构师(第十六篇)】脚手架之创建项目模板的下载与更新
- 【架构师(第十八篇)】脚手架之项目模板的安装
- 【架构师(第十九篇)】脚手架之组件库模板开发
- 【架构师(第二十篇)】脚手架之自定义模板及第一阶段总结
- 【架构师(第二十一篇)】编辑器开发之需求分析和架构设计
- 【架构师(第二十二篇)】编辑器开发之项目整体搭建
- 【架构师(第二十三篇)】编辑器开发之画布区域组件的渲染
- 【架构师(第二十四篇)】编辑器开发之添加模版到画布
- Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
- 我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式
- 【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
- 【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染
- 2021年度“CCF-腾讯犀牛鸟基金”发布结题评优结果