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

找地址

  • 首先使用ce查看阳光的地址
    用od、ce实现植物大战僵尸自动收集阳光_第1张图片
  • 然后F6是什么改写了地址用od、ce实现植物大战僵尸自动收集阳光_第2张图片
  • 地址找到了,复制00430A11这个地址,在od中搜索

分析

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

实现破解

定位点击函数用od、ce实现植物大战僵尸自动收集阳光_第11张图片
这里增加阳光的call上面有跳转 可以看到 只有当这个jnz执行成功之后才会增加这个call 那么就简单了 我们直接在这个jnz上下断看看他的执行流程用od、ce实现植物大战僵尸自动收集阳光_第12张图片
这个call可能是阳关下落跟执行动画使用的call 那么我们直接断在这个增加阳光的call上 试试 然后会发现当我们点击阳关的时候会被断下

  • 这个语句就是没有被点击,就会一直执行动画call,如果被点击就会执行增加阳光的call所以这里就可以吧jnz改为无条件跳转jmp
  • 再次进入游戏发现实现了自动收集
    用od、ce实现植物大战僵尸自动收集阳光_第13张图片

你可能感兴趣的:(学习,学习,网络,安全)