• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    GIF心情引发微信闪退?这里有最强技术分析
     

    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。

    上一篇:战胜棋手只是开始,AI 下一步要挑战「翻译官」
    下一篇:解读畅游私有化:张朝阳的这只“老奶牛”即将出栏了
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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