首页
社区
课程
招聘
[旧帖] [原创]破解植物大战僵尸--植物无cd(申请邀请码) 0.00雪花
2010-9-24 13:40 7809

[旧帖] [原创]破解植物大战僵尸--植物无cd(申请邀请码) 0.00雪花

2010-9-24 13:40
7809
分析:
植物大战僵尸种下一棵植物后有一段冷却时间,因此相信程序里肯定有类似计数器之类的东西;植物冷却时,计数器不断改变;植物冷却完毕后,计数器保持不变
破解:
1、找出计数器
2、修改计数器
操作:
我这里运用ce强大的内存查找功能来实现定位计数器,具体如下
1、运行植物大战僵尸,建一个小号,进入游戏(这样做为的是程序运行简单,便于操作),等到游戏正式开始后进行第二步
2、打开ce,附加到植物大战僵尸进程,进程名为:“PlantsVsZombies.exe”

3、设置扫描参数:扫描类型选“未知初始值”,数值类型为“4字节”,点击“首次扫描”,等一会儿后扫描完成
[
4、切换回游戏,种下一棵豌豆

5、切换到ce,此时植物填充中,所以扫描类型为“更改的数值”,点击“再次扫描”,扫描完成后结果如下:

6、切换回游戏,等待植物填充一小段时间
7、切换到ce,扫描类型选为“更改的数值”,点击“再次扫描”

8.1、植物未填充完前重复步骤6~7,具体次数看个人操作
8.2、植物填充完成,因为是从填充中到填充完成所以扫描类型还是为“更改的数值”,点击“再次扫描”

9、切换回游戏,随便干点什么
10、切换到ce,此时因为计数器不变,所以扫描类型选为“未更改的数值”,点击“再次扫描”
11、步骤9~10重复次数,具体次数看个人

12、重复步骤4~11,直到结果数为20个左右(大家可一直这样扫下去,直到结果数为1,但由于这个游戏毕竟还是算中等游戏,所以不大可能完全定位,接下来靠自己观察扫描的结果中与游戏同步的,注意:扫描到得地址应4地址对齐,数值一般不是太大)如图:



13、现在验证搜到的数据是否正确,如果正确,数据会和游戏里的植物填充显示对应,如图




14、确认正确后,他其他的删掉,并把正确的地址选到下方

15、右键下方的地址,选择“查找访问该地址的代码”,确定后会要求附加进程,因为只有一个进程,所以大家选择唯一的那个,点击确定
16、切换回游戏,种下植物,让计数器改变
17、切换回ce,可以看到如下所以代码:

18、选择最下面的一个(为什么?因为观察到下面两个比较接近,比较汇编指令后发现的)

这里贴出汇编语句:

0048728C  |.  8347 24 01    ADD DWORD PTR DS:[EDI+24],1              ;  计数器加1
00487290  |.  8B47 24       MOV EAX,DWORD PTR DS:[EDI+24]            ;  取出计数器
00487293  |.  3B47 28       CMP EAX,DWORD PTR DS:[EDI+28]            ;  与计数器终点数值比较
00487296  |.  7E 14         JLE SHORT PlantsVs.004872AC              ;  不大于就跳转
00487298  |.  C747 24 00000>MOV DWORD PTR DS:[EDI+24],0              ;  计数器清零
0048729F  |.  C647 49 00    MOV BYTE PTR DS:[EDI+49],0               ;  可用标志
004872A3  |.  C647 48 01    MOV BYTE PTR DS:[EDI+48],1               ;  可用数
004872A7  |.  E8 E4FEFFFF   CALL PlantsVs.00487190                   ;  调用使植物可用
004872AC  |>  8B47 3C       MOV EAX,DWORD PTR DS:[EDI+3C]            ;  标志位
004872AF  |.  85C0          TEST EAX,EAX                             ;  测试
004872B1  |.  0F8E BE000000 JLE PlantsVs.00487375                    ;  跳转到下面,看了下,单纯的返回

00487375处代码:
00487375  |> \5F            POP EDI                                  ;  跳到这里
00487376  |.  83C4 08       ADD ESP,8
00487379  \.  C3            RETN                                     ;  处理完毕,返回

再贴出:数据如下:

到这里,分析已经完成大半了;修改方法有多种:
方法一:直接nop掉 00487296  |.  7E 14         JLE SHORT PlantsVs.004872AC
方法二:修改计数器终点
方法三:自己写个函数直接调用004872A7  |.  E8 E4FEFFFF   CALL PlantsVs.00487190   这语句

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (78)
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
mszjk 2010-9-24 15:32
2
0
ce的好文章~
雪    币: 120
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
曹海 1 2010-9-24 15:32
3
0
本人测试直接nop,可用!
雪    币: 120
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
曹海 1 2010-9-27 19:31
4
0
总结:这次破解主要是利用ce找出计数器地址,然后查找访问该地址的代码;这样就定位到了植物恢复时间计数器工作的地方,下面的工作就是od动态载入分析代码,可能是od动态分析代码写得不是很清楚,随后补上分析过程。。。
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lvyunfu 2010-9-28 09:37
5
0
ce的好文章~
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
魔族智者 2010-10-11 11:18
6
0
不错的东西,谢谢楼主分享
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
咪···WC 2010-10-11 11:44
7
0
学习下·········
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lashoushou 2010-10-11 12:16
8
0
谢谢楼主分享  之前玩过 在下个试试
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
woyuwoxing 2010-10-11 12:27
9
0
好文章,谢谢楼主分享
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jfttc 2010-10-11 12:46
10
0
学习了,呵呵!

感谢楼主分享
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xuxuh 2010-10-11 13:15
11
0
不错,分析的比较详细!
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbfnmxb 2010-10-11 13:50
12
0
学习中,不断学习才能不断进步
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
何厚铧 2010-10-11 14:25
13
0
这东西不错,很多人在玩。
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aait 2010-10-11 15:12
14
0
我的版本不是7e 14修改为90 90,而是7e 12,不知道怎么版本不同。
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
一蓑烟云 2010-10-11 15:53
15
0
不错,学习了
雪    币: 51
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
进款 2010-10-11 15:56
16
0
真是好文章,学习了,
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
丐天雪 2010-10-11 16:51
17
0
好强  在找几年你就是 金山游侠了  不错  好样滴
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
魁了 2010-10-11 17:03
18
0
很少玩游戏,看不懂。。。。。
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xjhma 2010-10-11 17:11
19
0
好文章,学习下
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
youngli 2010-10-11 18:20
20
0
学习了 !!!
雪    币: 166
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
琴剑书生 2010-10-11 18:25
21
0
不错啊,支持下啊。不过我用的挂玩的。嘿嘿
雪    币: 400
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
电灯泡 2011-2-15 12:39
22
0
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
JohnH 1 2011-2-15 13:08
23
0
真是厉害,没想到还可以这样…
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
魔飞 2011-2-15 13:46
24
0
顶一下楼主
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lajishanda 2011-2-15 14:56
25
0
高手。。。。。。。。
游客
登录 | 注册 方可回帖
返回