



检测到是安卓设备,电脑版软件不适合移动端
微信闪退动态表情图是一款十分有意思也是有自主创新使用价值的表情图,这款表情图来源于是在每个微信圈中广为流传着一个天线宝宝的GIF神情。在iOS版的微信上,只需打开了包括这一GIF神情的交流对话框,就会导致微信闪退。诸位朋友有没有感觉特别的奇妙,下边就为各位产生详细介绍。
微信闪退环境状况:
5月17日起,在每个微信圈中广为流传着一个天线宝宝的GIF神情。在iOS版的微信上,只需打开了包括这一GIF神情的交流对话框,就会导致微信闪退。
在开展深入分析以前,对崩溃缘故做好了猜想:(1)iOS系统软件内置GIF解析作用存在的问题;(2)手机微信自身完成GIF解析的作用,因为对键入数据的校检不严苛,导致出现异常。
通过检测,发觉iOS版QQ不受影响,因而可以清除iOS的GIF解析难题。
微信闪退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。
下面,这一部分出现异常的数据就会进到sub_100B6CE90涵数开展解析。因为ImageWidth为0,导致与ImageHeight乘积后相当于0,在new buffer时,传到的尺寸主要参数为0,这也是第一个难题,但这并不会导致卡屏,依然可以分派一个较小的堆块。
造成崩溃的编码如下所示,在else block中,sub_100B6C4F0的功效沒有实际追踪,猜想是开展lzw压缩包解压,并回到压缩包解压后的数据长短v21。
因为v10 = 0x0000010000000000,断开成unsigned int后为0,这就导致 v10 – 1 – v21 为负值,做为memset第三个主要参数,相对应的unsigned int方式是一个挺大的正数。在memset时,就会导致崩溃,这也是第二个难题。
微信闪退相关视频:
软件信息
程序写入外部存储
读取设备外部存储空间的文件
获取额外的位置信息提供程序命令
访问SD卡文件系统
访问SD卡文件系统
查看WLAN连接
完全的网络访问权限
连接WLAN网络和断开连接
修改系统设置
查看网络连接
我们严格遵守法律法规,遵循以下隐私保护原则,为您提供更加安全、可靠的服务:
1、安全可靠:
2、自主选择:
3、保护通信秘密:
4、合理必要:
5、清晰透明:
6、将隐私保护融入产品设计:
本《隐私政策》主要向您说明:
希望您仔细阅读《隐私政策》
最新软件
相关合集
更多
相关教程
热搜标签
网友评论
举报反馈