使用Cheat Engine(CE)修改游戏“植物大战僵尸”之阳光篇(附安装包)

3.1安装"植物大战僵尸"

「植物大战僵尸95版.exe」(CE安装包见主页)
链接:https://pan.quark.cn/s/92e4d1a9b816
提取码:Ba24

3.1.1针对"阳光值"

要求采用3种以上的方法扫描至少3关的"阳光值"的内存地址,并能修改;

第一种:精确数值修改阳光值

"精确数值"搜索初始阳光150

种下豌豆射手,消耗阳光到50,再次搜索,只留下一个地址

修改为999,游戏阳光值发生变化,验证成功,确定为阳光的内存地址

第二种:根据增加的数值或减少的数值改变阳光数

首先搜索阳光初始值,结果如图

种下一个植物,选择"减少的数值",再次搜索,只存在一个结果

修改为666,游戏阳光值发生变化,验证成功,确定为阳光的内存地址

第三种:根据数值增加了…或数值减少了…改变阳光数

老规矩,精确值搜索,然后种下一颗100阳光的"豌豆射手"!

搜索类型选择"数值减少了…"100,然后再次扫描

修改为888,游戏阳光值发生变化,验证成功,确定为阳光的内存地址

3.1.2找到阳光值的内存基址,简述如何分析和找出基址的过程

以上题为例,已经改好的一次阳光值为888,在此基础上找基址,如上图所示,内存地址"1CB66A68"就是存放阳光的地址,我们可以随意的修改此内存中的数值。但是此地址是动态的,下次运行游戏时它存放的肯定就不是阳光了,我们要继续查找不会变的静态地址。

1.在地址栏中,选中该行,点击鼠标右键,选择点击"找出是什么访问了这个地址"

2.将出现确认框,默认"Yes"。点击确认Yes后将会出现有汇编代码的窗口,如图所示:

3.里面可能是空白的;切换回游戏,随便种一棵植物(目的是让阳光变少,好找出哪些代码修改了此内存)﹔再回到CE,会看到刚才的空白对话框中已经有内容了

4.拾取一个阳光,阳光增加,发现多了三条指令

5.选中最后一行代码,并点击"详细信息",将会出现一个新的窗口,窗口中的信息可以复制粘贴。咱们将偏移量记录好。

分析:在详细的信息中展示的是汇编语言的实现过程,[]中的值表示的是内存偏移地址,因此[]的出现表示的是内存的出现。即阳关的地址存放在内存单元中。上图中我们可以得知add

[eax+5560],ecx这条指令是加法运算,最右侧ECX里面就是我们当前需要增加的阳光数,将ECX中的阳光数赋值给[eax+5560]这个内存地址,那么我们的阳光就会增加,此时我们需要知道EAX寄存器指向的地址是多少,CE中已经为我们分析出了EAX寄存器当前值是1CC3D388我们此时需要记下它的一级偏移5560,然后去搜索1CC3D388这个内存地址。

6.根据详细信息中给出的十六进制数,进行新的搜索,搜索指针数值,此次搜索的是十六进制数值所以需要勾选数值框前面的"十六进制"框

分析:通过搜索指针数值之后会发先还有很多的结果,此时我们根据所搜索到的地址的形式进行分析,在这些内存地址中以001开头的地址,以及以193开头的地址出现的数目都是很多的,这么多的地址不具有特殊性,因此它们不会是阳光的基地址。然而此时出现了一个特殊的地址0281A368、0CDB72E4和0CDB7474,这三个地址显然是很特殊的三个地址,那么在这么多地址中,由于它们比别的地址更加具有特殊性,那么它们就最有可能又来继续搜索静态基地址。

7.根据上述的分析,我们将目光锁定到了0281A368、0CDB72E4和0CDB7474这三个最特殊的地址身上。双击将这它们地址记录到下方。

8.由于此时并没有出现绿色的静态基地址,所以我们继续搜索,右键点击,什么访问了这个地址

在这个地址下,采集阳光,我拾取了3次,这边计数符合

第二个不是

第三个地址,这里我拾取两次阳光,计数和阳光没有关系,也不是这个。

所以回到第一个地址,重新试验

拾取2次阳光,找到对应指令

通过观察什么访问了这个地址,发现箭头所指向的指令是会随着阳光的产生而发生变化。窗口中会出现一大堆指令,这里也需要一个遍历技巧,我们可以排除CMP之类的对比指令,因为我们是增加阳光所以不可能出现对比的代码,此外我们需要关注操作数左侧是EAX的,因为我们要找的是谁给EAX赋值的,我们选择mov eax,[edx+00000768]这条汇编指令,然后发现二级偏移是768。

此时我们根据给出的16进制数值进行搜索

那么这个时候我们就索搜到了绿色的静态地址,这些绿色的地址都属于静态的,到此说明我们已经找到了这个阳光的基地址了,这里我们可以随意选择绿色的地址作为基址使用。

但是还需要判断哪个是阳光的基地址?

对四个地址逐一进行分析

通过观察什么访问了这个地址发现,之后箭头所指向的指令是会随着阳光的产生而发生变化,所以第二个地址就是阳光的基地址

          

最后我们通过查找到的基址与偏移相加的形式,就可以定位到动态地址了,具体公式应该是阳光=

[[[006a9ec0]+768]+5560],我们可以直接在CE中添加这个指针,用于进行测试,操作如下:

点击手动添加地址,将这个特殊的地址输入到地址框中,点击下方的指针按钮,根据上面的记录,输入偏移地址,确定具体数值。然后锁定数值。

根据上述流程可以排除另外两个的偏移地址,所以02819C00中涉及到的偏移量分别为:00005560、00000768,分别点击"添加偏移"加入其中。有一个小细节是当你输入正确的基地址和偏移量后,右上角显示当前阳光数的时候,就代表你找对了

重新开始游戏确认阳光是否实现了永久锁定

综上所述,阳光的基地址是006A9F38。

3.1.3画出阳光值的内存访问示意图或工作原理;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值