CE自学笔记(二):植物大战僵尸

1.常量值修改

1.1修改阳光

直接通过搜索精确值找到阳光的地址,直接修改数值可以看到修改成功
图1
图2

2.函数值调用

2.1 找到种植函数

查找谁在修改阳光值然后种植向日葵得到汇编代码,蓝色行里的是改写代码,红色框整个函数的内容,分析寄存器数据得知eax是玩家阳光值,ebx是种植植物需要消耗的阳光值
在这里插入图片描述

2.2 获取植物花费函数

在调用该函数的时候,ebx里就已经存了向日葵的费用,说明向日葵的费用一定是在这个函数之前就已经得到了,所以我们还得返回到调用它的函数里去分析一下。通过返回地址我们知道调用地址是PlantsVsZombies.exe+10876
在这里插入图片描述

红色1表示调用种植函数的地方,红色2和红色3表示能修改eax和ebx值的地方,红色行表示断点,蓝色行表示程序准备运行的代码行。

当代码准备运行蓝色行时eax=ebx=0,而在红色1的时候ebx=豌豆费用,所以猜测蓝色行调用的函数能获取到豌豆的费用并保存到eax中,再由下一行语句mov ebx,eax,把eax中的值保存到ebx中。
我们只关注eax值什么时候等于64即可(因为十六进制的64=十进制的100)
步入,然后再进入第一个call

步入,一直执行到蓝色处未发现eax变化
在这里插入图片描述
一个大跳转,然后继续执行发现eax的值变成了16进制的64,即我们可以知道就是红框的两句起到作用,由于执行前eax=0,所以我们可以猜测PlantsVsZombies.exe+29F2C0 的数据就是豌豆射手的花费。

在这里插入图片描述

3.分析数据结构

3.1 简单介绍

如果有一丢丢游戏开发的经验,应该能知道游戏开发者会把所有的植物放到一个表中进行储存,而每个植物自己的属性又是一个小表。我用lua来简单举例

plant = 
{
	enemy1 = 
	{
	health = 100,
	speed =50
	},
	
	enemy2 = 
	{
	health = 200,
	speed =70
	}
}

这样做的目的是为了更好的进行数据管理,和进行对象遍历。而这对我们的游戏逆向有什么启发呢?
如果我们得到了enemy1的health值存放的地址a,那我们找a的后四个字节地址不就找到了enemy的speed的值吗,再往后找4个字节不就找到了enemy2的health值吗,这些数据就会躺的整整齐齐的任你挑选。

3.2 结构分析

所以这里我们对PlantsVsZombies.exe+29F2C0 进行结构分析
在这里插入图片描述
显然数据排列的井然有序,为了更加直观的感受,我把PlantsVsZombies.exe+29F2C0 改成了PlantsVsZombies.exe+29F2BC,不然看不到图里的第一行的数据0,起始就是植物的编号。

3.3 数据比对

到了此处我并不知道是否正确,我也得去验证一下,所以我去网上搜了一下植物图鉴。
重新更新了一下数据结构
在这里插入图片描述

在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
植物大战僵尸是一款非常受欢迎的塔防游戏。根据引用\[1\]和引用\[2\]中的教程,我们可以学习如何使用Cheat Engine(CE)修改游戏中的一些参数。在植物篇的教程中,我们学习了如何修改植物的单卡片无CD、全卡片无CD、豌豆射手的射速以及实现豌豆射手发射“玉米加农炮”。而在阳光篇的教程中,我们学习了如何修改游戏中的阳光数量、向日葵的阳光生产速率以及实现“太阳雨”。这些教程提供了详细的步骤和链接,可以帮助玩家了解如何使用Cheat Engine来修改植物大战僵尸游戏中的一些参数。 #### 引用[.reference_title] - *1* *3* [【CE入门教程】使用Cheat Engine(CE)修改游戏植物大战僵尸”之僵尸篇](https://blog.csdn.net/m0_60451234/article/details/127876211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【CE入门教程】使用Cheat Engine(CE)修改游戏植物大战僵尸”之植物篇](https://blog.csdn.net/m0_60451234/article/details/127823721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值