吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24748|回复: 49
收起左侧

[游戏安全] 植物大战僵尸,植物快速CD

  [复制链接]
namedlxd 发表于 2019-5-4 15:45
本帖最后由 namedlxd 于 2019-5-4 16:07 编辑

上一篇帖子讲了如何一个坑放多个植物,其实很简单。由于楼主并不熟悉C/C++、E语言,而且没找到用python实现的方法,楼主实在弱鸡,希望大家见谅。
这里给出个特征码在OD里面搜一下就可以找到对应位置了,注意不同版本可能特征码不同,不一定全部能用
具体操作是:
1.OD附加植物大战僵尸
2.ctrl+G 跳转到00401000,习惯
3.ctrl+B 输入下方特征码
83 FE 05 ?? ?? ?? ?? ?? ?? 57 53 55 ?? ?? ?? ?? ?? 85 C0
2019年5月4日 152334.png
4.点确定 搜索,跳转到这
2019年5月4日 152457.png
5.0040FE2F     /0F84 1F090000 je PlantsVs.00410754                     ;  1
6.把这个指令改为jmp就行了。

这里给大家说下特征码怎么来的,要找特征码,首先要到需要根据特征码定位的地方,然后找附近的指令的机器码。
我这里就是把附近的机器码给保存了下来,具体特征码介绍大家可以看这个帖子:https://tieba.baidu.com/p/3857456629?red_tag=1802720485
[Asm] 纯文本查看 复制代码
0040FE1C  |.  83FE 05       cmp esi,0x5
0040FE1F  |.  0F87 CE100000 ja PlantsVs.00410EF3                     ;  0
0040FE25  |.  57            push edi
0040FE26  |.  53            push ebx
0040FE27  |.  55            push ebp
0040FE28  |.  E8 F3E1FFFF   call PlantsVs.0040E020
0040FE2D  |.  85C0          test eax,eax



另外特别感谢@无瑕黑心肠帮忙找回丢失的图片
上一篇帖子:https://www.52pojie.cn/thread-947013-1-1.html

下面进入正题,今天来看下如何使植物快速CD,
通过观察不难发现,植物CD是一个循环的过程,那么这个逻辑在程序中如何表达呢?其实也很简单,我们先设置一个上限,比如说:10000,然后找一个变量,不断循环累加,每次加一,等加到10000就归零,每次归零CD就被刷新了,这样就实现了,当然也可以从10000累计减少,每减到零就刷新CD。


我们先假设它是递增来实现的。


进入游戏,CE附加,放下一个冷却时间较长的植物,我们搜索未知的初始值,然后切到游戏里面,让游戏运行个1秒钟,其实就是让辣椒冷却减少一点,然后再搜索增加的数值,重复这个操作。
v2-0bb8eabf31da966f40e71546d8341844_hd.jpg
经过不断努力,我们找到了一个在辣椒冷却结束时,值为0的数据。再次放下辣椒,然后把这个值改为5000,发现冷却结束了。说明这个值就是我们要找的值。
v2-10fda51b2f8c0f0aad496ecb636a8aba_r.jpg
接下来,我们看是什么改写了这个值。第一个指令是我们拿起或放下辣椒的指令,第二个是我们放下辣椒后,辣椒CD减少的指令,我们看第二个指令的反汇编。
v2-f0c0f3fc364c1228323995d4b2273f39_r.jpg


通过分析不难发现,我们可以将01改为一个较大的数字,实现快速CD。这种方法大家应该很熟悉了,那么接下来看看是否有新的思路。


一般来说,在游戏中冷却的代码都是类似这样来实现的:


[Asm] 纯文本查看 复制代码
while (冷却中) {
    减少冷却时间;
}
设置冷却结束;


然而在汇编语言中,没有while关键字,只能用跳转指令来实现,我们可以用汇编语言模拟一个循环:
[Asm] 纯文本查看 复制代码
00  ->  是否冷却中
01 |  - - 如果不是跳转到04
02 | |    减少冷却时间
03  -|-   跳转到00
04   -> 设置冷却结束



分析完之后,我们可以发现,关键语句在01,我们看汇编代码,差不多与之类似,我们看减少冷却时间上面的一条,je PlantsVsZombies.exe+872AC,我们试着把这个条件反过来,即把je改为jne。(上图为原来的,下图为改过之后的) v2-c75e15806ca835ec48cfc90dd0a18023_r.jpg
v2-b3c624996fc885e5eff11460ce087aaa_hd.jpg


我们进到游戏里面看一下。我们发现实现了植物无CD,我在这里种了满屏的核弹。
v2-9f55c862e22cce38333a887b81f7bec8_r.jpg


这次的教程就到这里了,希望大家可以动手操作一下。我看有的朋友想要成品,其实我觉得玩游戏并不是主要的,自己动手实现这个功能才是乐趣的所在。













点评

怎么又是植物大战僵尸。。。。好多重复的。。。。https://www.52pojie.cn/thread-877785-1-1.html 重了啊。。。(小声逼逼,和我写的重了。。。)  发表于 2019-5-5 07:50

免费评分

参与人数 11威望 +1 吾爱币 +17 热心值 +10 收起 理由
卿卿爸 + 1 + 1 很棒,植物大战僵尸忠实粉
清梦云影 + 1 热心回复!
willJ + 1 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
简直舒 + 1 + 1 我很赞同!
monima + 1 + 1 我很赞同!
At作梦 + 1 热心回复!
aa361328 + 1 + 1 我很赞同!
天天爱你 + 1 + 1 我很赞同!
薪尽自然凉 + 1 用心讨论,共获提升!
懵逼猫咪 + 1 + 1 我很赞同!
zxcnny930 + 1 + 1 <font style="vertical-align: inherit;"><font style=

查看全部评分

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

vxfla 发表于 2020-7-28 18:11
找植物对应的冷却是哪个地址时,可以先使用植物让他冷却,然后重复搜索 “增加的值”,等到植物马上冷却结束时,等待植物冷却刷新,精确搜索 0 ,能得到植物的冷却的地址,亲测有效
 楼主| namedlxd 发表于 2019-5-5 18:55
liphily 发表于 2019-5-5 17:11
那个坛友居然花费了点评来宣示主权。。。
嗯呢,这种问题,或许是作者自己发现的呢——毕竟方法就那么翻来 ...

我讲了为什么,不只是讲是什么
huge33 发表于 2019-5-4 16:10
scathlon 发表于 2019-5-4 17:01
感谢,五一期间小孩玩这个玩疯了
pls916 发表于 2019-5-4 17:08
五一假期还在发帖,辛苦啦
jxx51 发表于 2019-5-4 17:29
注意不同版本可能特征码不同,不一定全部能用。
KaQqi 发表于 2019-5-4 20:15
蘑菇炸弹有什么用来着。。好久不玩忘了...
半个橙子 发表于 2019-5-4 20:16
学习了,没有假期的LZ
一叶知夏 发表于 2019-5-4 20:34
跟着楼主学习一下
splendortan 发表于 2019-5-4 20:42
五一还在发贴啊
mmd5289 发表于 2019-5-4 21:12
特别喜欢这个游戏谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 16:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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