CE-植物大战僵尸(1)

植物大战僵尸逆向分析报告:
一、针对阳光值:
1.采用3种以上的方法扫描至少3关的“阳光值”的内存地址,并能修改
(1)精确值修改阳光值:

CE-植物大战僵尸(1)_第1张图片
CE-植物大战僵尸(1)_第2张图片
CE-植物大战僵尸(1)_第3张图片

(2)根据增加的数值或减少的数值改变阳关数
CE-植物大战僵尸(1)_第4张图片
CE-植物大战僵尸(1)_第5张图片
CE-植物大战僵尸(1)_第6张图片

CE-植物大战僵尸(1)_第7张图片

(3)根据数值增加了或者数值减少了改变了阳光数
CE-植物大战僵尸(1)_第8张图片

CE-植物大战僵尸(1)_第9张图片

2.找到阳光值的内存基址,简述如何分析和找出基址的过程
因为要实现修改阳光值,所以要找出游戏中存放阳光的内存地址,然后通过API函数进行内存修改,但是每次运行游戏时这个内存地址都不一样,所以要找出基址。
CE-植物大战僵尸(1)_第10张图片
CE-植物大战僵尸(1)_第11张图片
CE-植物大战僵尸(1)_第12张图片

查找出1EED7B60这个地址点击右键->查找什么访问了此地址
CE-植物大战僵尸(1)_第13张图片

双击第一个MOV指令查看更多信息,如下图:
CE-植物大战僵尸(1)_第14张图片
CE-植物大战僵尸(1)_第15张图片

3.画出阳光值的内存访问示意图或工作原理
CE-植物大战僵尸(1)_第16张图片

4.分析阳光值功能实现的设计算法
#include

class SunClass{

public:

int SunTime;

int SunValue;

int SunAttr;

};

int main()

{

SunClass *Sun=new SunClass;

Sun->SunValue=100;

printf("SunValue: %d

",Sun->SunValue);
return 0;

}
5.分析阳光值的相关汇编语言代码的工作过程
当我们用鼠标右键点击降落的阳光值或向日葵生产的阳关值时,阳关值增加。
当我们用鼠标右键点击安放植物的时候,阳关值减少。
6.观察“阳关”的其它属性,并采用上述(1)-(5)的方法分析之
修改阳光值
CE-植物大战僵尸(1)_第17张图片

锁定阳关值

CE-植物大战僵尸(1)_第18张图片
CE-植物大战僵尸(1)_第19张图片

当使用植物后,内存至由0开始增加,这个增加的过程就是我们的技能CD
当植物处于亮色的时候,内存值为0。
当植物处于暗色的时候,内存值为非0。
当内存值达到一定数值后,又会自动归零。

CE-植物大战僵尸(1)_第20张图片

通过多次扫描筛选出6个结果
CE-植物大战僵尸(1)_第21张图片
CE-植物大战僵尸(1)_第22张图片

实现的向日葵卡片的无CD
CE-植物大战僵尸(1)_第23张图片

点击是什么改写了这个地址
CE-植物大战僵尸(1)_第24张图片

由此实现了所有的无CD
CE-植物大战僵尸(1)_第25张图片

二、针对植物
1.采用3种以上的方法扫描至少3关的“植物”的内存地址
(1)第一种:
通过不断拿起放下进行0、1扫描
CE-植物大战僵尸(1)_第26张图片

(3)第二种:
打开游戏在CE中选择“未知的初始值”,点击首次扫描。
CE-植物大战僵尸(1)_第27张图片

然后再游戏中点击某一植物,但不种下;随后在CE中选择“变动的数值”,点击再次扫描。
CE-植物大战僵尸(1)_第28张图片

接下来不对植物进行操作,选择“未变动的数值”,点击“再次扫描”,反复进行该项操作直至发现点击“豌豆射手”后,有的数值变为0,点击向日葵,有的值为1
CE-植物大战僵尸(1)_第29张图片

你可能感兴趣的:(学习)