首页
论坛
课程
招聘
[原创]植物大战僵尸玉米大炮自动轰炸与自动拾取阳光金币
2021-9-24 18:16 19347

[原创]植物大战僵尸玉米大炮自动轰炸与自动拾取阳光金币

2021-9-24 18:16
19347

前言

经过长时间的逆向学习,老师为了增加我们对逆向分析的能力,同时也保证学习的趣味性,于是让我们研究植物大战僵尸这款经典游戏。

 

布置人:武汉科锐钱林松老师
作者:Cr39班 凌哥

玉米大炮自动发射


分析带动画的自动发射

CD入手

1、首先从CD入手,因为大炮发射后有一个重置大炮的功能,而他重置大炮的地方一定有对大炮是否可以发射的相关代码。而我们知道植物大战僵尸的CD都是由0向上增长到一定值时重置为0的特性。通过此特性找到大炮CD。

 

2、通过一番寻找后,发现大炮的CD与卡片的CD计算方式不同,所以使用未知的初始值,变动的值和未变动的值进行搜索,结果很快就找到了玉米大炮的CD,通过将CD改为0即可重新填充大炮。

 

3、那么该CD值一定为玉米大炮对象的一个属性,有了这个猜测所以向上跟踪他的基地址。

Flag入手

1、那么换个思路,他的CD结束后一定会操作一个类似于flag的变量来保存大炮的状态,当大炮发射的时候会改变这个状态,那么同理我们使用未知的初始值,变动的值和未变动的值进行搜索,也很方便的找到了玉米大炮的flag,经过测试,当值为35的时候为爆炸状态,36的时候为装填状态,37的时候为装填完毕,38的状态为发射。
图片描述
2、那么这个时候我们附加X64dbg,去跟踪一下大炮的发射CALL。

 

3、通过硬件写入断点,我们很快的就跟踪到了玉米大炮发射的时候改变标志位的位置。
图片描述
4、那么通过栈回溯,就找到了玉米大炮发射call的位置了
图片描述
玉米大炮发射call偏移: 0x66D50

1
2
3
4
mov ecx,dword ptr ss:[ebp+8] // 玉米大炮指针
push esi // x
push ecx // y
call plantsvszombies.466D50

5、通过指针扫描得出地图植物的基地址。
图片描述

分析不带动画的自动发射

1、通过上述分析我们找到了自动发射炮弹的call,而我们发现他貌似有一个内部循环调用call类似于消息机制一样,当满足了什么条件就会自动的进行相对应的操作,所以通过分析自动发射的call我们发现他给了几处内存地址进行了赋值。通过观察这些内存地址我们发现了一些猫腻。经过测试满足了自动开炮的功能。
图片描述
2、自动发射炮弹的结论是当发射动画cd大于2的时候,则玉米大炮会对x和y所指定的位置进行轰炸。

自动拾取阳光金币


 

1、我们知道阳光是点击后有一个动画,这个动画结束后将会阳光自增。那么先找到阳光数据后下写入断点通过回溯寻址拾取阳光的call。
图片描述
2、现在已经断下来了,那么开始向上回溯。我们找到了一处call当有阳光来的时候他会一直断下来,通过观察可以分析得出他的eax是阳光的指针,有几个阳光他就会有几次循环。那么可以判断他的阳光收集应该在这个call里面,所以我们进入这个call对里面的所有call下断,如果没有点击阳光断下来的call就不是我们需要的,点击后断下来的可能就是关键call了。
图片描述
3、经过逐步筛选只剩几个call还有断点,但是点击阳光来的call只有下图这一个,所以断定他就是我们的关键call。这里我们通过分析已经得知他是收集阳光的call并且在阳光的内部循环里,而他的循环本身就含有了阳光的指针所以,我们找找相关的跳转指令那里强制跳过了这个call我们改掉让他一直执行这个call有了阳光自动收入,查看是否成功。
图片描述
4、通过分析上面有一处jne选择性执行还是不执行这个call,所以我们将他改为jmp测试一下。

 

5、经过测试,此处也可以自动收集金币,所以目前已经完成了我们需要的功能了,那么就剩代码编写,完成我们上述手动操作。


2021 KCTF 秋季赛 防守篇-征题倒计时(11月14日截止)!

最后于 2021-9-26 13:55 被凌哥编辑 ,原因:
上传的附件:
收藏
点赞9
打赏
分享
最新回复 (3)
雪    币: 223
活跃值: 活跃值 (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ronle 活跃值 2021-9-30 16:12
2
0
谢谢分享,学习大佬的思路
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
at10086 活跃值 2021-10-13 09:42
3
0
学习学习学习
雪    币: 4397
活跃值: 活跃值 (528)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
email123 活跃值 2021-10-13 09:58
4
0
表哥,是哪个版本的plantzombies,对照学习下,提供下链接就好了
游客
登录 | 注册 方可回帖
返回