利用java多态实现植物大战僵_植物大战僵尸自动收集阳光金币
一.自动收集阳光
大致思路,猜测有一个点击阳光的函数,当我们点击阳光后,会调用它,完成增加阳光的一系列操作。但是只有当我们点击的是阳光时,才会调用它,所以点击阳光应该是有一个判断的,判断点击的是否是阳光,找到这个判断应该是可以实现自动收集阳光的。
分析
我们可以通过找到点击阳光的函数,再去寻找判断来达到我们的目的。点击阳光后会增加阳光数量,那么我们就可以先去寻找存储阳光的地址。使用CE,寻找存储阳光的地址,附加游戏后,每当游戏中的阳光数值变化后,在CE中使用精确数值搜索,搜索当前阳光值,确定一个地址后,将其中的值修改为999,发现游戏中阳光数量也随之变化,那么这里就是存储阳光的地址 。
右键点击这个地址,选择find out what writes to this address,回到游戏中,等待一个掉落的阳光,点击增加阳光后,这个窗口出现了变化,记住这个地址0x43C0AF,使用OD搜索此地址进行分析(此时需要关闭CE,才能使用OD附加程序)。
使用OD进入此地址进行分析,在这里下断,每次增加阳光时都会断下来,阳光数值的变化是阳光本身的值加上ecx的值,看当前ecx的值是0x19(25)这正是一个大阳光的值。
执行返回到上一层,根据里面的代码分析,我们刚才出来的这个函数,就是当我们点击阳光后,增加阳光数量的函数。点击阳光的判断并不在这里,这个函数只是当阳光到达左上角时增加阳光数量而已。
继续执行出去,返回之后,在上面这个函数下断,回到游戏中,当我们点击阳光时就会断下来,F9后,回到游戏中点击继续游戏还是会断下来,但是发现阳光的位置发生了改变,不断的在向左上角移动,那么这就是点击阳光的函数了。
在点击函数的上面有许多的判断跳转,其中有一个关键的跳转决定是否进入此函数。猜测这里大概是一个标志的判断,判断我们点击的是什么,如果点击阳光的话,就进入这个函数,否则不会进入这个函数。我们可以去查看这个地址,是否符合我们的猜测。
找到与0x0比较的这个地址,下一个内存断点
回到游戏中,点击一个阳光,程序断了下来,可以看到给这个地址赋值1,与0作比较是会跳转的。
当我们点击一个植物时,程序断了下来,可以看到赋值0,JNZ是不会跳转的。这里应该就是一个点击标志的判断,只有当我们点击阳光的时候才会赋值1,调用函数。但是有一个问题是,有的时候点击植物的时候并不会断下来,在后续的调试中发现,这里并不是判断植物的,产生阳光的时候才会赋值0,这里后续会提到。
修改就很简单,只要让这里无条件跳转即可,改为JMP。
二.自动点击金币
有了阳光的经验,金币就好办多了,还是寻找金币的存储地址。但是没有通过精确搜索找到金币的存储地址,没办法只能用别的办法。
通过寻找当前减少的数值,来寻找。不断的寻找减少的数值和未改变的数值,寻找,最终筛选剩下4个,尝试修改其中一个,发现游戏中金币数值改变。看到实际中存储的数据,比游戏中显示的少了一个0,之后再搜索寻找,发现金币数值除以10即可精确的找到地址,金币的数值在内存中应该是少了一个0进行存储的。
还是老方法,右键,选择find out what writes to this address,增加一个金币之后,记下这个地址回到OD中搜索。收集一个金币,看到给地址中的数值加了1,但是一个小金币的数值应该是10,说明金币的存储在内存中是少一个0的。
执行出去,可以发现居然是刚才阳光的函数,说明点击增加阳光和金币是同一个函数,那么修改同一个条件就可以实现自动收集阳光和金币。
回到刚才增加金币的那里,向上查看就能看到阳光的增加函数。分析一下是如何判断金币和阳光的。看到是通过eax的值来判断的,动态调试看到,eax=4或5时,代表阳光的增加,1和2的时候代表金币的增加。eax=4的时候,代表的是大阳光,赋值0x19,eax=5的时候代表的是小阳光(夜晚关卡,小蘑菇产生的小阳光,一个增加15阳光值,43C09B处的eax+0xA,让ecx中值=0xF),赋值0xF
对于金币来讲eax=1时,代表小金币,eax=2时,代表大金币(43C109处,eax+0x3,让edx=5,大金币一个增加50),eax=3,代表钻石(43C116,43C117两处会让edx=0x64,一个钻石增加1000)。
利用java多态实现植物大战僵_植物大战僵尸自动收集阳光金币相关推荐
- C语言实现植物大战僵尸自动收集阳光(三) 解决收集不全与收集奖杯卡死的问题
C语言实现植物大战僵尸自动收集阳光(一) 问题分析与寻找基址 C语言实现植物大战僵尸自动收集阳光(二) C语言控制台程序的实现 C语言实现植物大战僵尸自动收集阳光(三) 解决收集不全与收集奖杯卡死的问 ...
- C语言实现植物大战僵尸自动收集阳光(一) 问题分析与寻找基址
C语言实现植物大战僵尸自动收集阳光(一) 问题分析与寻找基址 C语言实现植物大战僵尸自动收集阳光(二) C语言控制台程序的实现 C语言实现植物大战僵尸自动收集阳光(三) 解决收集不全与收集奖杯卡死的问 ...
- C语言实现植物大战僵尸自动收集阳光(二) C语言控制台程序的实现
C语言实现植物大战僵尸自动收集阳光(一) 问题分析与寻找基址 C语言实现植物大战僵尸自动收集阳光(二) C语言控制台程序的实现 C语言实现植物大战僵尸自动收集阳光(三) 解决收集不全与收集奖杯卡死的问 ...
- 用od、ce实现植物大战僵尸自动收集阳光
找地址 首先使用ce查看阳光的地址 然后F6是什么改写了地址 地址找到了,复制00430A11这个地址,在od中搜索 分析 打开od,file–>attach(关掉ce 才可以打开进程),找到植 ...
- java多态上转下_(转)java的多态(向上转型、向下转型)
在我的明白:java的向上和向下转型可以看成是类型的转换. ---------------- 版权声明:本文为CSDN博主「ldsh304」的原创文章,遵照CC 4.0 BY-SA版权协议,转载请附上 ...
- java多态调用优先级_关于java的多态方法调用顺序的问题
使用父类类型的引用指向子类的对象,该引用调用的师父类中定义的方法和变量,变量不能被重写(覆盖):如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法: 注意特殊情况,如 ...
- 利用java做前端连接数据库_基于java的前端与数据库的交互
在之前很长一段时间都在搞前端部分,然后又大概了解了下数据库,现在想着把二者交融在一起吧-- 首先我在Eclipse中的布局是这样的,也不知道合不合理: 用到了四个文件,分别是用于用户输入信息的前端界面 ...
- 孪生素数 java代码_科学网—孪生素数猜想——利用 Java + 正则表达式 输出孪生素数对 - 马廷灿的博文...
查了一下资料,发现正则表达式竟然可以用来检查素数(http://coolshell.cn/articles/2704.html)!(由于工作需要,几年前开始接触.利用正则表达式,给工作带了很大方便,也 ...
- ce逆向修改——植物大战僵尸针对“阳光值”
ce逆向修改--植物大战僵尸 一.实验目的 为熟悉CE的使用和对软件逆向分析有进一步的了解. 二.实验设备 Cheat Engine 6.8.植物大战僵尸 三.实验内容 1.针对"阳光值&q ...
最新文章
- Fedora 提出统一流程,弃用上千 Python 2 软件包更可控
- 【k-means clustering】【一】基础算法
- 因主机名更改造成oracle控制台登录错误:ora-12545,ora-12541
- Neo4j:遍历查询超时
- python函数的嵌套调用_python函数的嵌套调用
- android app报错log,Android studio 解决logcat无过滤工具栏的操作
- 杜比专为旧版本Android,杜比音效app(dolby audio) v2.1.0 安卓版
- c#控件chart制作自动更新的温湿度实时曲线图
- 王树尧老师运筹学课程笔记 00 写在前面
- lottie动画效果使用简例
- MATLAB中log算子处理图像
- 我的世界服务器如何做无限箱子,《我的世界》无限存储箱子制作方法 制作流程介绍...
- 计算机科学与技术名言,关于科学的名言(20个最值得一读的科技名言)
- delphi android 蓝牙,Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)
- KMP Seek the Name,Seek the Fame
- VS Code 报错 local-server-1> ssh child died, shutting down解决方法
- 蚂蚁开源 - 聚沙成塔,相信社区的力量 | ChinaOSC
- OCR识别--详解驾驶证识别技术
- 1.2折半查找法的使用
- 文件操作之特殊文件操作