主頁(yè) > 知識(shí)庫(kù) > GIF心情引發(fā)微信閃退?這里有最強(qiáng)技術(shù)分析

GIF心情引發(fā)微信閃退?這里有最強(qiáng)技術(shù)分析

熱門(mén)標(biāo)簽:電話機(jī)器人怎么 如何做百度高德地圖標(biāo)注 領(lǐng)地人生mmo地圖標(biāo)注 商務(wù)彩鈴地圖標(biāo)注店 蘇州自動(dòng)外呼系統(tǒng)收費(fèi) 小語(yǔ) 海洋家園生存島2地圖標(biāo)注 百度地圖標(biāo)注進(jìn)度在哪查看 云南電銷外呼系統(tǒng)原理是什么
 

5 月 17 日擺布,微信群中出現(xiàn)了可使 iOS 版微信閃退的GIF心情,雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng))今早報(bào)道了關(guān)于該事件的大致情況。 5 月 26 日傍晚, 360 安適研究員宋申雷對(duì)雷鋒網(wǎng)體現(xiàn),微信知道這個(gè)漏洞兩周了,但是攔截策略依然不行,第一個(gè)crash出現(xiàn)時(shí)就對(duì)樣本做了hash 攔截,這都兩周了,改一個(gè)字節(jié)的版本都有多少個(gè)了。此外,他還指出,現(xiàn)在不在原圖改字節(jié)了,直接把有漏洞的最后一幀構(gòu)造到任意的GIF中。

為了更好地促進(jìn)讀者了解其中的機(jī)制,360NirvanTeam對(duì)于此事件進(jìn)行了具體的技術(shù)分析。

本文作者「 360 涅槃團(tuán)隊(duì)的安適研究員王兆威」,授權(quán)雷鋒網(wǎng)發(fā)布。

一、配景情況

5 月 17 日起,在各個(gè)微信群中流傳著一個(gè)天線寶寶的GIF心情。在iOS版的微信上,只要打開(kāi)了包羅這個(gè)GIF心情的聊天窗口,就會(huì)造成微信閃退。

在進(jìn)行具體分析之前,對(duì)瓦解原因進(jìn)行了猜測(cè):(1)iOS系統(tǒng)自帶GIF解析功能存在問(wèn)題;(2)微信本身實(shí)現(xiàn)GIF解析的功能,由于對(duì)輸入數(shù)據(jù)的校驗(yàn)不嚴(yán)格,導(dǎo)致異常。經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)iOS版QQ不受影響,因此可以排除iOS的GIF解析問(wèn)題。

二、原因分析

1.     樣本精簡(jiǎn)

初始的GIF樣本有1MB之多,倒霉于定位引起問(wèn)題的具體數(shù)據(jù),因此我們需要對(duì)樣本進(jìn)行精簡(jiǎn)。通過(guò)010 Editor打開(kāi)原始樣本GIF,利用GIF模板解析,發(fā)生解析異常,這就體現(xiàn)樣本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ù)就體現(xiàn)是一個(gè)GraphicControlExtension結(jié)構(gòu),并接著對(duì)GraphicControlExtension數(shù)據(jù)進(jìn)行解析。 

如果當(dāng)前查找到的數(shù)據(jù)為0x2C,就體現(xiàn)搜索到了一個(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??梢钥吹剑琁mageWidth屬性為0,ImageHeight屬性為0x100。

標(biāo)簽:珠海 楚雄 遂寧 臺(tái)灣 陽(yáng)泉 鹽城 眉山 西藏

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《GIF心情引發(fā)微信閃退?這里有最強(qiáng)技術(shù)分析》,本文關(guān)鍵詞  GIF,心情,引發(fā),微信,閃退,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《GIF心情引發(fā)微信閃退?這里有最強(qiáng)技術(shù)分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于GIF心情引發(fā)微信閃退?這里有最強(qiáng)技術(shù)分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章