植物大战僵尸修改僵尸出场冷却时间
场景: 正常情况下僵尸是过一段时间出现几个,不会同时出现
效果: 刚开始僵尸就一块出场,这样通过小滑车就能将他们全部杀死
思路: 通过CE定位僵尸个数,然后看那个地址改写了它,在这个地址附近应该就有创建僵尸、冷却时间的函数了。
下边是详细过程:
首先CE附加程序,搜索场上僵尸的个数,当场上僵尸变化时,再搜索僵尸的个数(可能会有延时,所以确认后再搜索或者搜索一个加减一的范围),这样就获得一个地址
然后右键,看谁改写了这个地址:
在这个地址上下断点,然后栈回溯,就可以得到函数调用情况,这里直接把OD的栈回溯图也贴一下吧 :
然后IDA打开,定位到刚才那个改写的地址:
查看哪个地址调用了当前函数:
没有相关跳转分支,继续栈回溯:
还是没有,继续栈回溯,往上找:
来到重点了,上边有个分支跳转语句,当dword ptr [edi+559Ch]==0时,才会执行创建僵尸的call,当不等于0的时候就跳过
解决方法很简单,直接将此处jnz loc_4140FC nop掉,很暴力
看一下效果:
一下子全都出来了 很危险
不过小车直接将他们全都干死了 哈哈