实验目标:通过遍历阳光产生的时间,寻找阳光产生的本地Call,使用代码注入器注入,自定义生成阳光

阳光CALL遍历技巧:

进入植物大战僵尸-> 当出现阳光后->马上搜索未知初始数值

返回游戏->  马上切回CE->  搜索减少的数值 -> 掉一点搜一点

最后排查出它的掉落地址-> 锁定1即可实现无限掉落

1.首先CE打开游戏,然后进入植物大战僵尸,当出现阳光后我们暂停游戏,并马上搜索未知初始数值。

2.返回游戏,让阳光下落一点点, 马上切回CE,搜索减少的数值 -> 掉一点搜一点。

3.经过我的不断排查,最后排查出以下结果,我们将其加入到地址列表中,依次将我们找到的这几个地址锁定为1,看是否有反映。

4.此处我已经找到了。

5,我们直接在找到的地址上右键,选择找出是谁访问了这个地址,或选中这一行按下【F5】也可以,如下我们需要记下【00413BCB】这个内存地址,然后直接关闭CE,接下来我们要使用OD调试了。

6.打开OD直接附加植物大战僵尸进程,【F9】让程序跑起来,按下【Ctrl + G】输入【00413BCB】,定位代码,然后在该位置按下【F2】下一个断点。

此时往上找,有一个JNZ的跳转指令,我们双击在此处下一个【F2】断点,然后运行游戏,此时会断下,此处的JNZ如果成功跳转则不会生成阳光,那么我们把此处NOP掉看看会出现啥结果。

7.如上图,如果我们将其NOP掉的话,回到游戏会发现无限的出现阳光了,也就是说阳光的CALL就在他跳过的这些指令当中。

8.观察它跳过的代码片段,我们找一下有没有阳光生成的CALL,如下我发现了一些带有参数传递的CALL,这可能就是阳光的生成CALL了。

9.在PUSH的位置上下【F2】断点,然后运行程序并等待阳光生成,生成后会断下【F8】单步跟随,将其中的寄存器参数记录下来。

10.使用代码注入器测试效果,默认的PUSH参数是4出现的是正常的阳光,如果我们将其改成6则会出现一个大的阳光。

11.如果将注入的参数改为 push 1 和push 3 那么屏幕上将出现钻石。

也可以下钻石雨!很漂亮但很危险,容易崩溃!

详细分析笔记,猛戳这里:https://blib.cn/post/4ed8.html

植物大战僵尸:寻找阳光掉落Call调用的更多相关文章

  1. 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

    32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...

  2. 原生JS实现的h5小游戏-植物大战僵尸

    代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...

  3. [Android] 转移“植物大战僵尸2”存档的办法,无需root

    作者:zyl910 查过了很多文章,都说需要root后才能转移存档.但很多时候是不能root的,此时该怎么办呢? 我研究了很久,最终找到了一种办法,无需root也能转移存档. 一.备份 我用的是联想手 ...

  4. java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码

    Java小项目之:植物大战僵尸! <植物大战僵尸>是由PopCap Games开发的一款益智策略类单机游戏,于2009年5月5日发售,这款游戏可谓是无人不知无人不晓. 在我身边,上到40岁 ...

  5. 植物大战僵尸:寻找召唤僵尸关键CALL

    实验目标:通过遍历寻找召唤僵尸的CALL,通过调用CALL出现自定义的僵尸,加速僵尸的出现. 僵尸CALL的遍历技巧: 我们可以通过僵尸出现在屏幕中的个数来遍历寻找僵尸出现的CALL 首先打开CE-& ...

  6. 植物大战僵尸:查找植物叠加种植CALL

    实验目标:我们都知道植物大战僵尸游戏中植物是不可以叠加种植的,也就是一个格子只能种植一个植物,今天我们将实现一个格子里种植无限多的植物. 我们首先需要找到植物的种植CALL,然后在逐步测试观察功能之间 ...

  7. 图论(网络流):COGS 410. [NOI2009] 植物大战僵尸

    410. [NOI2009] 植物大战僵尸 ★★★   输入文件:pvz.in   输出文件:pvz.out   简单对比时间限制:2 s   内存限制:512 MB [问题描述] Plants vs ...

  8. P2805 [NOI2009]植物大战僵尸

    题目地址:P2805 [NOI2009]植物大战僵尸 最大权闭合子图 若有向图 \(G\) 的子图 \(V\) 满足: \(V\) 中顶点的所有出边均指向 \(V\) 内部的顶点,则称 \(V\) 是 ...

  9. 【刷题】BZOJ 1565 [NOI2009]植物大战僵尸

    Description Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏.Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻. ...

随机推荐

  1. 牛券Cow Coupons

    USACO12FEB 久违的奶牛题. 题意: FJ准备买一些新奶牛,市场上有 $ N $ 头奶牛 $ (1 \leq N \leq 50000) $ ,第i头奶牛价格为 $ P_i (1 \leq P ...

  2. MKAnnotation image offset with custom pin image

    </pre><pre> Your UIAnnotationView is always drawn at the same scale, the map's zoom leve ...

  3. TCP学习

    参考 https://coolshell.cn/articles/11564.html https://coolshell.cn/articles/11609.html

  4. python关闭socket端口立即释放

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, sock ...

  5. 16.合并两个排序的链表 Java

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路 两种解法:递归和非递归 参考代码 /* public class ListNode { ...

  6. Leetcode题目49.字母异位词分组(中等)

    题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "t ...

  7. pytorch-cifar10分类网络结构

    cifar10主要是由32x32的三通道彩色图, 总共10个类别,这里我们使用残差网络构造网络结构 网络结构: 第一层:首先经过一个卷积,归一化,激活 32x32x16 -> 32x32x16 ...

  8. linux服务之redis

    redis wget http://download.redis.io/releases/redis-4.0.6.tar.gzcd redis-4.0.6makecd src/./redis-serv ...

  9. python MySQLdb连接mysql时报错

    故障现象: >>> import MySQLdb >>> conn = MySQLdb.connect(host=,charset="utf8" ...

  10. HTTP状态码分类及异常状态码处理

    1xx:表示临时响应100:(继续)请求者应当继续提出请求.服务器返回此代码表示已收到请求的第一部分,正在等待其余部分101:(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换 2xx:表 ...