首页
社区
课程
招聘
[原创]微信打飞机变无敌,详细分析
发表于: 2013-8-11 11:13 32936

[原创]微信打飞机变无敌,详细分析

2013-8-11 11:13
32936

坛友neite给出了个插件(http://bbs.pediy.com/showthread.php?p=1208300#post1208300),可以很方便的调成无敌模式以及取消,但是没有讲诉技术细节,花点时间用IDA看了下,发现还是挺容易实现的,和大家分享下分析过程,希望能帮到和我一样的菜鸟们。
纯属技术交流,切勿用于非法用途,否则后果自负。

打飞机游戏中,击落敌方战机或者死亡等都会有音乐效果,微信程序目录下有很多音乐文件,如图:


因为要实现无敌功能,我们就从game_over.mp3文件下手吧,这个就是游戏结束时候的音效,我们要分析下看什么情况会走到这个流程里进来,并且想办法修改跳转,让game永不over.

打开IDA的字符串索引窗口,搜索到game_over.mp3字符串


双击跳到字符串所在地址,连续两次查看交叉索引,可以看到这个字符串在一个叫killPlayer的函数被引用了。







发现killPlayer这个函数里面没什么判断,一进来就肯定game over了,所以继续查找对这个函数的引用,可以发现这个函数会被collisionDetection函数调用:


很明显,collisionDetection函数就是判断是否撞机了,如果撞机就killPlayer。在这个函数里,可以看到一个很明显的跳转,如果跳转成功,就会结束游戏,否则继续:



猜测NOP掉0B2A63E处的跳转皆可实现无敌,于是用DBG验证。
启动微信,查找微信进程号,GDB 附加

root# ps ax | grep MicroM
27017 ?? Ss 0:11.52 /var/mobile/Applications/C7119A9B-18E3-44C8-ACA7-FB31C0CC3F30/MicroMessenger.app/MicroMessenger

root# gdb -p 27017

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (29)
雪    币: 78
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
拜师学打飞机
2013-8-11 11:25
1
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
不错,学习,不知道用到cocos2d引擎没?改天有时间也用Hopper看看
2013-8-11 12:01
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
4
你这种方法,需要越狱才行的.
2013-8-11 14:07
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
请教不越狱刷分方法,莫非是直接伪造分数数据提交?
2013-8-11 14:37
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
6
之前我打飞机没有排第一,这两天手打的,在好友里面排名第一了,150W+的分.  
我正准备尝试无越狱刷分.
不过最近太忙.还没有时间深入研究.
我的思路就如你所说的, 不过不是伪造,只是改包.
2013-8-11 14:47
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我来回复下吧,打飞机的插件我也有写,而且还是附加了改色子改猜拳的,方法就如上面所讲
楼上所说的改包什么的就不用试了,肯定是不行的,服务器会记录你的开始时间,对应算法获取一个合理的数值范围,超过这个范围都将不记录在内。
2013-8-12 13:15
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
难怪我找到设置分数的地方,直接修改分数,界面显示成功了,但是没提交。。
如果封包没加密,或者加密很简单,在数据包发出去之前修改,就不会碰到分数是否合理的检测了。如果开始结束时间也发给服务器,那这两个一起改了就是
2013-8-12 13:40
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
9
不知你们修改包 是在IPHONE里面修改的? 还是在windows或者linux上修改的? 还是在模拟器之类的平台上修改的?
2013-8-12 15:23
0
雪    币: 2166
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
如果你想不越狱操作,应该没法在iphone上修改吧。
2013-8-12 18:44
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
11
没改过封包。。如果不是https,哪里改都方便吧
2013-8-12 18:51
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
12
应该还是有办法改的吧?
2013-8-12 22:33
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
13
https 用 MITM attack也都一样吧.
2013-8-12 22:34
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
14
那就不算是iphone上改了
不过我对MITM也不了解,没用过
2013-8-13 10:32
0
雪    币: 223
活跃值: (516)
能力值: ( LV13,RANK:520 )
在线值:
发帖
回帖
粉丝
15
用IPHONE访问WEB.通过WEB来处理packet也算是在IP上处理了吧?
2013-8-13 11:00
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
自然是不行的,服务器肯定校验本地时间,根本无法修改你所谓的时间,不要想得这么简单
2013-8-13 11:12
0
雪    币: 93
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
还有如果你仔细观察会发现服务器分2次收取时间,然后比对服务器时间,你怎么可能超过它的服务器时间呢。所以算法会控制分数在合理范围内。
2013-8-13 11:15
0
雪    币: 545
活跃值: (1502)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
一群牛人啦。。
2013-8-18 23:29
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
厉害,支持一下
2013-8-23 08:22
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
可否详细分享一下?
2013-9-2 21:18
0
雪    币: 261
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
1、在linux上如何进行这一系列的操作?
2、貌似除了win就只有mac平台可以安装调试环境了吧?
3、如果“1”可以,那么有没有相关的环境搭建教程? for linux的
4、难道是在linux上用virtualbox虚拟一个MAC??
2013-9-2 21:20
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
很犀利,学习之
2013-9-3 10:33
0
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
23
有linux版IDA,静态分析不是问题。
调试的话直接用iphone上的gdb调试就可以了,ssh到手机就好了,linux完全可以
2013-9-3 14:18
0
雪    币: 218
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
搞不懂 不知道怎么搞。
2013-9-3 17:28
0
雪    币: 2166
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这样还真得算是在ip上处理了
<竟然找不到赞的表情>
2013-11-22 11:03
0
游客
登录 | 注册 方可回帖
返回
//