主要内容:定位植物大战僵尸游戏中阳光数据的全局地址;

介绍:学习windows逆向分析的简单例子之一,主要使用ce以及od工具;

1,结论

反推可知,包含阳光数据的结构体基地址: 0x006A9EC0

2,逆向分析过程(使用ce工具)

2.1,ce工具以及使用方法

ce工具: Cheat Engine 6.6 +中文***

ce分析:植物大战僵尸ce分析:植物大战僵尸ce分析:植物大战僵尸

 

2.2分析过程

(1)

由2.1可知,现在的阳光数据是放在15D97218,难道这个含阳光数据的地址?

由od工具可知,内存结构,15D97218应该是个堆地址,这个地址是动态申请,所以不可能是基地址;

正常猜测基地址应该是在00699000~0075E000全局地址;

 ce分析:植物大战僵尸

(2)分析地址15D97218

既然这个地址是个堆地址,猜测阳光的数据是new出来的,然后给一个全局地址保存,不给全局变量保存,很难全局访问,除非都是靠传参;

int sun;

g_sun   =  new int

 

(2.1)分析地址方法1:此时想到搜索这个地址,有没有全局数据来保存,或者保存这个15D97218的地址有没有提供其他信息:

ce分析:植物大战僵尸

好像没有,这里的地址不是很靠谱;

 

(2.2)分析地址方法2:另一种思路是查询一下,有没有谁在访问/写入这个15D97218地址:

ce分析:植物大战僵尸ce分析:植物大战僵尸

发现有两个地方经常访问地址15D97218,也就是经常把阳光的值[15D97218]给其他地方使用;

这里注意到:[esi+00005560]  == [15D91CB8+00005560] == [15D97218] ==阳光的数量;

15D91CB8可认为是一个结构体基地址

 

可以想象这是个结构体:

Struct sun

Sun

{

...

[+00005560] ==  阳光

...

}

StructSun sun

g_sun   =  new StructSun

 

(3)继续搜索查询15D91CB8

(3.1)分析地址方法1:此时想到搜索这个地址,有没有全局数据来保存,或者保存这个15D91CB8的地址有没有提供其他信息:

ce分析:植物大战僵尸

ce分析:植物大战僵尸

1>分析全局地址

 ce分析:植物大战僵尸

首先看这两个全局地址,貌似很有可能是存储结构体的全局地址,但是经个人分析,这两个地址每次启动游戏后保存的数据都不是结构体基地址;

2>分析18984c

ce分析:植物大战僵尸

3>分析23AA4F0

ce分析:植物大战僵尸

发现在访问这个23AA4F0地址时,有一个[eax+00000768], EAX=023A9D88;

 [23AA4F0] ==[023A9D88+00000768] ==15D91CB8

阳光数量=

[15D97218] == [15D91CB8+00005560] == [[023A9D88+00000768]+00005560]

现在重点搜索查看地址023A9D88

 

 

(3.2)分析地址方法2:另一种思路是查询一下,有没有谁在访问/写入这个15D91CB8地址

 ce分析:植物大战僵尸

 

(4)继续搜索查询023A9D88

(4.1)分析地址方法1:此时想到搜索这个地址,有没有全局数据来保存,或者保存这个023A9D88的地址有没有提供其他信息:

 ce分析:植物大战僵尸

1>分析全局地址006A9EC0

ce分析:植物大战僵尸

发现这个:006A9EC0 == PlantsVsZombies.exe+2A9EC0

PlantsVsZombies.exe == 006A9EC0 - 2A9EC0 =00400000(PlantsVsZombies.exe模块首地址)

有点类似:进程主模块首地址+一个偏移 =006A9EC0

这个全局变量地址一直不变,所以需要查找的全局地址应该就是006A9EC0了;

 

结构体公式:

阳光数量=

[15D97218] == [15D91CB8+00005560] ==

[[[PlantsVsZombies.exe+2A9EC0]+00000768]+00005560] ==

[[[006A9EC0]+00000768]+00005560]

 

(5)验证

 ce分析:植物大战僵尸

ce分析:植物大战僵尸

[[[006A9EC0]+00000768]+00005560]

== [ [023a9D88 +00000768]+00005560]

== [ [23AA4F0] +00005560]

== [ 15d91cb8+00005560]

==[15D97218]

==0x96==150

正确;

 

验证2:重新打开游戏,按照006A9EC0这个地址来找

ce分析:植物大战僵尸

[[[006A9EC0]+00000768]+00005560]

==[ [00839d90 +00000768]+00005560]

==[ [83A4F8]+00005560]

==[ 15D84920+00005560]

==[15D89E80]

==0X0190 = 400

正确;

 

总结:

006A9EC0


相关文章: