主页 > 知识库 > GIF心情引发微信闪退?这里有最强技术分析

GIF心情引发微信闪退?这里有最强技术分析

热门标签:阿里云 使用U盘装系统 智能手机 百度竞价点击价格的计算公式 美图手机 网站建设 硅谷的囚徒呼叫中心 检查注册表项
 

5 月 17 日摆布,微信群中出现了可使 iOS 版微信闪退的GIF心情,雷锋网(公众号:雷锋网)今早报道了关于该事件的大致情况。 5 月 26 日傍晚, 360 安适研究员宋申雷对雷锋网体现,微信知道这个漏洞两周了,但是拦截策略依然不行,第一个crash出现时就对样本做了hash 拦截,这都两周了,改一个字节的版本都有多少个了。此外,他还指出,现在不在原图改字节了,直接把有漏洞的最后一帧构造到任意的GIF中。

为了更好地促进读者了解其中的机制,360NirvanTeam对于此事件进行了具体的技术分析。

本文作者「 360 涅槃团队的安适研究员王兆威」,授权雷锋网发布。

一、配景情况

5 月 17 日起,在各个微信群中流传着一个天线宝宝的GIF心情。在iOS版的微信上,只要打开了包罗这个GIF心情的聊天窗口,就会造成微信闪退。

在进行具体分析之前,对瓦解原因进行了猜测:(1)iOS系统自带GIF解析功能存在问题;(2)微信本身实现GIF解析的功能,由于对输入数据的校验不严格,导致异常。经过测试,发现iOS版QQ不受影响,因此可以排除iOS的GIF解析问题。

二、原因分析

1.     样本精简

初始的GIF样本有1MB之多,倒霉于定位引起问题的具体数据,因此我们需要对样本进行精简。通过010 Editor打开原始样本GIF,利用GIF模板解析,发生解析异常,这就体现样本GIF的格式存在问题。

从模板解析的情况显示,在 38 帧正常的图片数据后,出现了异常的数据。如图所示,因此我们将正常数据部分移除,仅保存异常数据,进行下一步精简。

可以看到,剩余的异常数据的部分有 10 多万个,通过二分法的方式进行测试和排除。具体就是,删除一半后,测试别的一半是否可以导致瓦解。如果瓦解了,说明引起异常的数据在保存的一半中,反之则说明在删除的部分中。

经过不停的排除后,发现异常的数据就不才图的紫色部分中。只要带有GIF的图像数据部分带有这些异常数据,就会导致iOS微信闪退。 

2.     调试分析

经过样本精简,我们已经发现了引起异常的数据位置。那么,现在就需要结合实际的调试,来确定实际引起异常的数据。以iOS微信6.5. 7 版为例,瓦解发生时的调用栈如下,瓦解发生于微信内部,说明是微信自身的GIF解析功能存在问题。

经过对相关函数的逆向分析,最终确定了引起异常的数据。首先来不雅观察sub_100B6CBF0 这个函数,对于GIF中的数据进行循环查找,如果存在0x21 和0xF9,那么当前数据就体现是一个GraphicControlExtension结构,并接着对GraphicControlExtension数据进行解析。 

如果当前查找到的数据为0x2C,就体现搜索到了一个ImageDescriptor,跳出while循环,进行实际图片数据的解析。这里也就是异常数据的起始位置! 

正常的帧数据的ImageDescriptor数据如下:

而引起异常的数据中,恰好存在0x2C这个关键的分隔符,导致下述红框中的数据被解析成了一个ImageDescriptor。可以看到,ImageWidth属性为0,ImageHeight属性为0x100。

标签:烟台 怀化 山南 通辽 湘潭 黄山 贺州 湖北

巨人网络通讯声明:本文标题《GIF心情引发微信闪退?这里有最强技术分析》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266