MENU

DIY一个植物大战僵尸的外挂(二)

June 3, 2020 • Read: 84 • 教程

上一篇文章:DIY一个植物大战僵尸的外挂(一) 讲了如何修改阳光的值,这次我们来讲讲如何修改植物的CD时间

本次需要用到另外一个工具:Ollydbg(简称:OD)
下载地址:https://down.52pojie.cn/Tools/Debuggers/%E5%90%BE%E7%88%B1%E7%A0%B4%E8%A7%A3%E4%B8%93%E7%94%A8%E7%89%88Ollydbg.rar


实现步骤

首先使用CE附加游戏进程
开始游戏后,切换到CE,扫描类型改为“未知的初始值”,执行首次搜索
20200603122409.png

这里怎么找到动态地址需要自行判断了
大概流程图如下
003439jiyyj6yy6foditao.png

一通操作,找出了CD地址如下,你们的和我的不一定一样

判断找对了的方法在于,他数值的增长和归零,和你植物的CD是同步的。
20200603123618.png

选择找到的地址,右键(或Ctrl + B),选择“浏览相关区域”

然后回到游戏随便种下一棵植物

可以看到当植物CD没有恢复时,这里是00
20200603124009.png

当植物CD恢复之后,这里会变成01
20200603124044.png

然后我们右键,选择 “ 将此地址添加到列表中 ”
这里就是我们要找的地址了,我这里是 “12D54080” 每个人都不一定一样的
20200603124535.png
当然你也可以验证一下这个地址,切回到游戏中,种下一颗植物看数值是否会变为零

现在我们需要用到OD了
打开OD,左上角 - 文件 - 附加
2342345324fewsrfew.PNG

找到游戏的进程,把它附加进OD里面,然后使用快捷键 Ctrl + G 搜索我们刚刚找到的地址

可以看到搜索到这里
20200603125250.png

然后我们在这行给它下个内存断点,右键 - 断点 - 内存写入
dsafqw4e2134.PNG

下好断点之后,按下F9让它执行,然后切回到游戏中去,拿起一颗植物
这时你会发现游戏卡住了,这种到了我们刚刚下断点的地方
我们切换OD中去,可以看到断在了这一行
20200603125955.png
这里,我们只需双击这行,然后把最后那个0改成1即可
20200603130127.png
然后右键 - 断点 - 删除内存断点,然后按下F9,切回游戏中去,你会发现,植物的CD没有了


编写程序

回到OD去,然后右键 - 复制 - 到剪切板

00488E73    C645 48 01      mov byte ptr ss:[ebp+0x48],0x1

上面这里是为了把游戏里面植物CD的基址复制出来,我这里是 “00488E73”

然后再右键 - 二进制 - 二进制复制

C6 45 48 01

这里是把修改的数据用二进制方式复制出来
注意,用易语言写的话,需要把二进制的数据转换一下,这里我使用系统自带的计算器
比如 “C6” 写到易语言里面就是 “198”
20200603131107.png

易语言具体实现代码如下
20200603131215.png