植物大战僵尸修改植物攻击力

效果: 植物一炮就将僵尸打死
思路: 通过CE定位僵尸被攻击时改写血量的代码地址,向上查找植物攻击力的地方并修改。

下边是详细过程(以普通豌豆荚攻击普通僵尸为例)

首先CE附加程序,当未攻击时,搜索未改变的数据,当攻击僵尸时,搜索减少的数据,如此重复,最终定位到僵尸的血量地址
植物大战僵尸修改植物攻击力_第1张图片
然后右键,什么地址改写了它,最后得到一个地址
植物大战僵尸修改植物攻击力_第2张图片

上边是通过CE定位到了改写僵尸血量的代码,下边就用IDA来逆向分析,看看附近进行了什么操作:

植物大战僵尸修改植物攻击力_第3张图片
[ebp+0xc8]中保存僵尸的血量,sub edi, [esp+18h+arg_4]表示植物的攻击力保存在函数的第二个参数中,通过IDA的交叉参考,查看那个函数调用了当前函数,定位到代码中:
植物大战僵尸修改植物攻击力_第4张图片
可以看到一共传入了三个参数,第二个参数是eax,这样在call decrease_HP_zombie上下断点,查看函数的具体参数(为了省事,我直接用了CE,没有用OD,结果是一样的):
植物大战僵尸修改植物攻击力_第5张图片
可以看到植物的攻击力是0x14,所以只要将攻击力放大,就可以秒怪了,所以直接将push eax,修改为push esi就可以秒怪了(因为esi的值非常大)


后来发现,僵尸分为很多种,但是按照血量可以分为三种:一种是普通僵尸、跳跃僵尸 一种是带帽僵尸 水桶僵尸 另一种是读报僵尸,按照上边的方法修改三处,就可以实现秒杀所有僵尸了。。。。

效果如下(图片质量有点差):


你可能感兴趣的:(系统调试)