西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
西西首頁(yè) 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專(zhuān)題合集

微信閃退gif表情包

gif完整版
  • 微信閃退gif表情包gif完整版
  • 軟件大小:1KB
  • 更新時(shí)間:2017-05-27 09:42
  • 軟件語(yǔ)言:中文
  • 軟件廠商:
  • 軟件類(lèi)別:國(guó)產(chǎn)軟件 / 免費(fèi)軟件 / QQ 表情
  • 軟件等級(jí):4級(jí)
  • 應(yīng)用平臺(tái):WinAll
  • 官方網(wǎng)站:暫無(wú)
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

裝機(jī)必備軟件

軟件介紹

微信閃退gif表情包是最近微信上玩的非常火的一個(gè)表情,這個(gè)表情可以跟朋友惡作劇讓朋友的微信閃退,只要讀秒三秒鐘,朋友的聊天界面還在你發(fā)的表情窗口的話(huà)就會(huì)導(dǎo)致他的微信閃退。目前西西測(cè)試的結(jié)果是ios系統(tǒng)會(huì)閃退,安卓的貌似沒(méi)反應(yīng),大家想要玩這個(gè)表情的可以試試。

微信閃退gif原理:

1、樣本精簡(jiǎn)

初始的GIF樣本有1MB之多,不利于定位引起問(wèn)題的具體數(shù)據(jù),因此我們需要對(duì)樣本進(jìn)行精簡(jiǎn)。通過(guò)010 Editor打開(kāi)原始樣本GIF,利用GIF模板解析,發(fā)生解析異常,這就表示樣本GIF的格式存在問(wèn)題。

從模板解析的情況顯示,在38幀正常的圖片數(shù)據(jù)后,出現(xiàn)了異常的數(shù)據(jù)。如圖所示,因此我們將正常數(shù)據(jù)部分移除,僅保留異常數(shù)據(jù),進(jìn)行下一步精簡(jiǎn)。

可以看到,剩余的異常數(shù)據(jù)的部分有10多萬(wàn)個(gè),通過(guò)二分法的方式進(jìn)行測(cè)試和排除。具體就是,刪除一半后,測(cè)試另外一半是否可以導(dǎo)致崩潰。

如果崩潰了,說(shuō)明引起異常的數(shù)據(jù)在保留的一半中,反之則說(shuō)明在刪除的部分中。

經(jīng)過(guò)不斷的排除后,發(fā)現(xiàn)異常的數(shù)據(jù)就在下圖的紫色部分中。只要帶有GIF的圖像數(shù)據(jù)部分帶有這些異常數(shù)據(jù),就會(huì)導(dǎo)致iOS微信閃退。 

2、調(diào)試分析

經(jīng)過(guò)樣本精簡(jiǎn),我們已經(jīng)發(fā)現(xiàn)了引起異常的數(shù)據(jù)位置。那么,現(xiàn)在就需要結(jié)合實(shí)際的調(diào)試,來(lái)確定實(shí)際引起異常的數(shù)據(jù)。

以iOS微信6.5.7版為例,崩潰發(fā)生時(shí)的調(diào)用棧如下,崩潰發(fā)生于微信內(nèi)部,說(shuō)明是微信自身的GIF解析功能存在問(wèn)題。

經(jīng)過(guò)對(duì)相關(guān)函數(shù)的逆向分析,最終確定了引起異常的數(shù)據(jù)。首先來(lái)觀察sub_100B6CBF0這個(gè)函數(shù),對(duì)于GIF中的數(shù)據(jù)進(jìn)行循環(huán)查找,如果存在0x21和0xF9,那么當(dāng)前數(shù)據(jù)就表示是一個(gè)GraphicControlExtension結(jié)構(gòu),并接著對(duì)GraphicControlExtension數(shù)據(jù)進(jìn)行解析。 

如果當(dāng)前查找到的數(shù)據(jù)為0x2C,就表示搜索到了一個(gè)ImageDescriptor,跳出while循環(huán),進(jìn)行實(shí)際圖片數(shù)據(jù)的解析。這里也就是異常數(shù)據(jù)的起始位置! 

正常的幀數(shù)據(jù)的ImageDescriptor數(shù)據(jù)如下:

而引起異常的數(shù)據(jù)中,恰好存在0x2C這個(gè)關(guān)鍵的分隔符,導(dǎo)致下述紅框中的數(shù)據(jù)被解析成了一個(gè)ImageDescriptor。可以看到,ImageWidth屬性為0,ImageHeight屬性為0x100。

接下來(lái),這部分異常的數(shù)據(jù)就會(huì)進(jìn)入sub_100B6CE90函數(shù)進(jìn)行解析。由于ImageWidth為0,導(dǎo)致與ImageHeight相乘后等于0,在new buffer時(shí),傳入的大小參數(shù)為0,這是第一個(gè)問(wèn)題,但這并不會(huì)導(dǎo)致閃退,仍然可以分配一個(gè)很小的堆塊。

引起崩潰的代碼如下,在else block中,sub_100B6C4F0的作用沒(méi)有具體跟蹤,猜測(cè)是進(jìn)行l(wèi)zw解壓縮,并返回解壓縮后的數(shù)據(jù)長(zhǎng)度v21。

由于v10 = 0x0000010000000000,截?cái)喑蓇nsigned int后為0,這就導(dǎo)致 v10 – 1 – v21 為負(fù)數(shù),作為memset第三個(gè)參數(shù),相應(yīng)的unsigned int形式就是一個(gè)很大的正數(shù)。在memset時(shí),就會(huì)導(dǎo)致崩潰,這是第二個(gè)問(wèn)題。

相關(guān)視頻:

微信閃退gif怎么處理:

(1)圖片中的什么內(nèi)容觸發(fā)的崩潰?

二分法挨個(gè)測(cè)試,定位94360-943EE的數(shù)據(jù)觸發(fā)了崩潰。具體數(shù)據(jù)如下:

然后,我們隨機(jī)選取任意一個(gè)gif表情包,把這塊內(nèi)容插進(jìn)去~

震驚!微信崩潰啦! 不刪除聊天記錄沒(méi)法打開(kāi)微信對(duì)話(huà)啦!

(2)崩潰是微信特有的嘛?

把這個(gè)天線寶寶的表情包扔進(jìn)了瀏覽器、qq、微信內(nèi)嵌網(wǎng)頁(yè),都沒(méi)有產(chǎn)生崩潰。這崩潰是微信聊天特有的。。。

其他版本下載

發(fā)表評(píng)論

昵稱(chēng):
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載