首页
社区
课程
招聘
一张图让安卓版微信崩溃、以及定位崩溃原因
发表于: 2019-2-14 17:13 18919

一张图让安卓版微信崩溃、以及定位崩溃原因

2019-2-14 17:13
18919

今天下午,有一张gif在群里疯传,就是下面这张图:

样本md5:653b5f03a500b82a3949740d6aedc0f9

微信在加载这张图的过程中,会出现闪退,而且概率很高,基本上每次都崩。

迷人的是,对于这张图,只有微信版安卓有效,iOS版、PC/MAC甚至网页版都可以正常显示,当然迫于时间原因,我们也没有测量到安卓版微信的每一个版本,大家都在微信7上测过了都会崩。

以下分析由葫芦娃(看雪ID:葫芦娃)提供

崩溃信息如下所示:

崩溃地址在libwechatcommon.so (Java_com_tencent_mm_plugin_gif_MMGIFJNI_drawFramePixels+124),也就是本地GIF库在画帧的像素的时候崩溃了。那我们到libwechatcommon.so里去看下这个drawFramePixels函数的+124处长什么样子:

这里应该是个溢出,也可能是个bug,但是没有源码,很难进一步分析,我们改变思路,看看能不能修好这个gif

既然是画gif的帧像素的过程中出现的bug,那我们来看下这个帧,看看能不能找到“罪魁祸首”的那一帧。

打开gif的文件格式,可以看到有文件头、屏幕描述、颜色表、具体数据和文件尾。打开即可解析,说明文件格式还是很标准的,这也解释了为什么iOS、PC/MAC和网页版都是OK的原因。

接下来既然是Frame的问题,我们来看每一帧,帧的组合在gif文件格式中也非常规整,打开struct DATA Data就可以看到,每一帧的图形拓展、描述和数据都在里面。

最后观察到一个现象,就是根据微信崩溃的时机,是在图像的加载之初,说明很有可能在第一帧、第二帧就出现问题,我们观察前三帧的异同,发现第二帧的ImageLeftPosition有很大的嫌疑。

8166这个数字明显太大了,我们把它改成0之后,再发送出去,发现已经不崩溃了。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-2-14 17:28 被roysue编辑 ,原因:
上传的附件:
收藏
免费 4
支持
分享
最新回复 (15)
雪    币: 930
活跃值: (1333)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
2
好玩
2019-2-14 17:20
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
"最后观察到一个现象,就是根据微信崩溃的时机,是在图像的加载之初,说明很有可能在第一帧、第二帧就出现问题"

其实是直觉告诉我第一帧、第二帧有问题的,因为这两帧长得一毛一样
2019-2-14 17:21
0
雪    币: 86
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
7.0.0 没有问题,7.0.3有问题。又发了一次发现7.0.0也有问题
最后于 2019-2-14 17:58 被cowpeas编辑 ,原因:
2019-2-14 17:54
0
雪    币: 26205
活跃值: (63302)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
哈哈哈 666
2019-2-14 18:10
0
雪    币: 368
活跃值: (431)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
6
 版主怎么练就这种直觉的
2019-2-14 18:27
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
没有试出来~不闪退 好气哦
2019-2-14 19:30
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
想知道楼主分析gif用的工具

最后于 2019-2-14 21:41 被chaoscat编辑 ,原因:
2019-2-14 20:14
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
chaoscat 想知道楼主分析gif用的工具另外我这边读出来发现gif的第二帧 宽度是8402可能并不只有那一个问题
应该010editor吧
2019-2-14 21:33
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好玩
2019-2-15 08:46
0
雪    币: 3352
活跃值: (10987)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
11
我把帖子中的图下载下来,改成gif后缀打开,复制发给同事,同事收不到
2019-2-15 08:59
0
雪    币: 474
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
xinpoo 我把帖子中的图下载下来,改成gif后缀打开,复制发给同事,同事收不到
可能已经被微信屏蔽了吧,我用微信的文件传输助手发送到自己手机上也接收不到这张图
2019-2-15 17:05
0
雪    币: 16
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
求个大神带带
2019-2-16 00:32
0
雪    币: 13
活跃值: (215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
很正常呀
2019-2-19 17:17
0
雪    币: 103
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
完全不崩啊,我试了两次都没崩啊
2019-2-27 16:01
0
雪    币: 1
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我的也不崩溃了,估计已经修复; 
2019-2-28 09:36
0
游客
登录 | 注册 方可回帖
返回
//