吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17187|回复: 137
收起左侧

[原创] 植物大战僵尸 - 植物无视防具秒杀僵尸

  [复制链接]
iTruth 发表于 2020-2-15 19:41
本帖最后由 iTruth 于 2020-2-15 19:49 编辑

记一次练习的过程



注意
这是做的破解版而不是外挂


用到的工具
找代码地址需要 CE6.7(CheatEngine)
修改代码需要 OllyDbg



解决方案
使用CE找到各个扣血代码的地址使用OD分析修改

具体步骤
首先打开游戏和CE,然后CE载入植物大战僵尸进程
01.jpg
新开一把游戏,然后改阳光
因为改阳光的教程实在太多了所以我就不再赘述了,找不到的话可以去看大神的帖子https://www.52pojie.cn/thread-863501-1-1.html
02.jpg
现在需要收集必要的数据以辅助我们破解

根据网络上公布的数据看一只僵尸的血量是270,一只路障僵尸防具血量为370,铁栅门僵尸的铁栅门血量为1100
因为根据实际测试结果看铁栅门防具扣血和一般僵尸的防具扣血不是一处代码处理的所以我们也需要知道铁栅门僵尸的铁栅门血量

现在我们等一只僵尸出现然后搜索它的血量值
03.jpg
然后我们种一株豌豆射手来攻击一次僵尸之后查找减少的数值
04.jpg
可以看到只有一个值,它正是这个僵尸的血量
我们把这个值添加到记录中之后右击这个值选找出是什么改写了这个地址
05.jpg
返回游戏让豌豆射手再次攻击僵尸,这时你能在CE上看到一次记录
06.jpg
这正是让僵尸扣血的代码,我们把这条指令的地址记录下来

然后我们需要路障僵尸防具的扣血代码
现在我们等一只路障僵尸出现
08.jpg
然后返回CE搜索370(这是路障僵尸防具的血量)
09.jpg
再次返回植物大战僵尸种下一株豌豆射手来攻击路障僵尸然后返回CE查找减小的值
一般重复几次就能找到然后按照刚刚的步骤找到防具的扣血代码
10.jpg
同理我们到有铁栅门僵尸的关卡去找铁栅门的扣血代码
11.jpg
现在所有的扣血代码的地址都已经找到了,让我们整理一下
0054D0C4 - 僵尸扣血
0054CDDA - 僵尸防具扣血
0054CA31 - 铁栅门僵尸防具扣血
注意:不同版本的PVZ这些代码的位置可能不同

现在关闭CE打开OD,然后让OD附加到植物大战僵尸上
12.jpg
这里找到植物大战僵尸的进程点Attach即可

13.jpg
现在我们按F9让植物大战僵尸继续跑起来,然后按Ctrl+G输入僵尸扣血的地址
14.jpg
点击Follow expression即可转到那条指令处
我们观察代码发现血量在EBP里然后上面有一条指令减了EBP

15.jpg
那么事情就好办了,把减少EBP的指令改成XOR EBP,EBP即可
16.jpg
这里XOR EBP,EBP就是把EBP清零

然后我们往上翻找到函数头,在函数头上下断点
23.jpg
返回植物大战僵尸,攻击一只普通僵尸
攻击到之后OD应该断在这个函数头,这时我们观察堆栈信息来找到调用者在哪里
24.jpg
在这里按回车即可找到
25.jpg
我们可以在上面找到一个可疑的跳转,它直接跳过了僵尸扣血的函数
26.jpg
那么我们直接用nop填充它即可
27.jpg
现在我们去看在0054D608处那条可疑的call,就是在刚刚nop掉的跳转的上方
因为这个地址比较接近 "0054CDDA - 僵尸防具扣血"

果然发现里面包含僵尸防具扣血的指令
17f.jpg
那么这时就可以知道大概的扣血逻辑是
if(防具有血量)
{
扣防具的血量;

}
else
{
扣僵尸的血量;

}

有了这个逻辑后我们继续往上分析,再次发现了一个可疑跳转
33.jpg
这个跳转也跳过了僵尸扣血的代码,我们还注意到这个跳转上面的那个call的目标地址和 "0054CA31 - 铁栅门僵尸防具扣血"很近
进去一看结果非常的amazing,这个函数里面正包含了铁栅门僵尸防具扣血的那条指令
28.jpg
那么我们可以知道那个跳转正是判断是否要扣铁栅门僵尸血量的关键
我们还是直接用nop填充那个跳转即可
34.jpg
现在我们返回游戏尝试一下
35.jpg
成功了,只要一发即可无视防具秒杀僵尸
现在我们只需要把我们修改好的程序保存即可
右击选Edit然后选择Copy all modifications to executable

36.jpg
在弹出的窗口里右击选择Save File...即可

37.jpg
07.jpg
19fs.jpg
20fo.jpg
22.jpg
29.jpg
30.jpg
31.jpg
32.jpg

免费评分

参与人数 25威望 +1 吾爱币 +35 热心值 +24 收起 理由
星辰一枚 + 1 我很赞同!
华月方昊 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lbcy1314258 + 1 用心讨论,共获提升!
慕容环环 + 1 热心回复!
GиY + 1 用心讨论,共获提升!
Mayongtao + 1 我很赞同!
guxini + 1 + 1 谢谢@Thanks!
Aliangabugui + 1 + 1 用心讨论,共获提升!
hao10 + 1 + 1 我很赞同!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
呆唯 + 1 虽然没看懂,也要顶一个
sgjf2010 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
东海小哥 + 1 我很赞同!
autist + 1 + 1 热心回复!
二次元的小阳仔 + 1 用心讨论,共获提升!
落雪悄无痕 + 1 + 1 我很赞同!教程很详细会好好学习
wdj500 + 1 + 1 谢谢@Thanks!
路过的小朋友 + 1 + 1 我很赞同!
dt8333 + 1 用心讨论,共获提升!
胡萝卜须 + 1 + 1 我很赞同!
YC愚 + 1 用心讨论,共获提升!
小雀幸 + 1 + 1 我很赞同!
ljxhuy + 1 + 1 用心讨论,共获提升!
wang19970802 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

feichedang 发表于 2020-2-15 20:43
虽然没看懂,也要顶一个。
 楼主| iTruth 发表于 2020-2-16 11:45
zw8204 发表于 2020-2-16 09:34
教程很详细,出一只新怪物就分析一次血量,有点麻烦,是否修改之后记下那些数据以后直接可以按数据修改呢

在扣僵尸血之前会先扣防具的血量,所以有必要知道防具扣血的地方来达到无视防具秒杀的效果
 楼主| iTruth 发表于 2020-2-15 19:50
新人发帖,不知道为什么下面为什么会出现多余的图片.有人会解决这个问题吗?
兮愿㈱℡ 发表于 2020-2-15 20:39
给力哦哦哦
Isicecold 发表于 2020-2-15 20:49
帮楼主顶一下,好东西
oQAQo 发表于 2020-2-15 20:54
顶一个,现在正在学c,植物大战僵尸确实好玩,一起加油
afti 发表于 2020-2-15 20:55
这是高手,学习了
楚狂客 发表于 2020-2-15 20:56
向楼主学习~
h149824203 发表于 2020-2-15 21:01
很详细的修改教程。。学到了。。
sumuzhi 发表于 2020-2-15 21:03
学习一下,哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表