用od、ce实现植物大战僵尸自动收集阳光

找地址

  • 首先使用ce查看阳光的地址
    在这里插入图片描述
  • 然后F6是什么改写了地址在这里插入图片描述
  • 地址找到了,复制00430A11这个地址,在od中搜索

分析

  • 打开od,file–>attach(关掉ce
    才可以打开进程),找到植物大战僵尸在这里插入图片描述
  • ctrl+G搜索地址在这里插入图片描述
    我们这里先下断,进游戏点击阳光以后会断到这里。当阳关快被加上数值的时候 会被断下。
    在这里插入图片描述
    F2下断点,进入游戏收集阳光,发现在这里暂停
    查看寄存器的值
    在这里插入图片描述
    ECX是32,现在游戏内阳光值为十进制50,换算为十六进制正好是32.
    然后选择debug–>execute till return(执行到返回)在这里插入图片描述
    向下看有一个call指令,推测这个call就是增加函数。我们可以把这个语句nop掉,然后发现点击阳光数值是不增加的。我们确定了增加函数。撤销修改。
    下面判断call之前jnz语句。是一个if逻辑,在这下断点。多次放行之后发现点击的阳光向上运动。
    在这里插入图片描述
    回到游戏收集一个阳光,发现值并没有增加,由此推断出这个call就是增加阳光的call 然后右键撤销.
    这次在jnz条件跳转这里下断点。在这里插入图片描述
    然后F9,发现点击阳光后停止了
    多次尝试结果都是。那是这个jnz是干嘛?在这里插入图片描述
    再来一次点击快消失的阳光
    jnz主要目的是判断阳关是否到位,只有当阳光完全在左上角的时候才会真正执行增加阳光的call ,当阳光到位之后他会执行这个call

实现破解

定位点击函数在这里插入图片描述
这里增加阳光的call上面有跳转 可以看到 只有当这个jnz执行成功之后才会增加这个call 那么就简单了 我们直接在这个jnz上下断看看他的执行流程在这里插入图片描述
这个call可能是阳关下落跟执行动画使用的call 那么我们直接断在这个增加阳光的call上 试试 然后会发现当我们点击阳关的时候会被断下

  • 这个语句就是没有被点击,就会一直执行动画call,如果被点击就会执行增加阳光的call所以这里就可以吧jnz改为无条件跳转jmp
  • 再次进入游戏发现实现了自动收集
    在这里插入图片描述
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edison.W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值