文件大小:
軟件介紹
微信閃退動(dòng)態(tài)表情圖是一款十分有意思也是有自主創(chuàng)新使用價(jià)值的表情圖,這款表情圖來(lái)源于是在每個(gè)微信圈中廣為流傳著一個(gè)天線寶寶的GIF神情。在iOS版的微信上,只需打開了包括這一GIF神情的交流對(duì)話框,就會(huì)導(dǎo)致微信閃退。諸位朋友有沒(méi)有感覺(jué)特別的奇妙,下邊就為各位產(chǎn)生詳細(xì)介紹。
微信閃退環(huán)境狀況:
5月17日起,在每個(gè)微信圈中廣為流傳著一個(gè)天線寶寶的GIF神情。在iOS版的微信上,只需打開了包括這一GIF神情的交流對(duì)話框,就會(huì)導(dǎo)致微信閃退。
在開展深入分析以前,對(duì)崩潰緣故做好了猜想:(1)iOS系統(tǒng)軟件內(nèi)置GIF解析作用存在的問(wèn)題;(2)手機(jī)微信自身完成GIF解析的作用,因?yàn)閷?duì)鍵入數(shù)據(jù)的校檢不嚴(yán)苛,導(dǎo)致出現(xiàn)異常。
通過(guò)檢測(cè),發(fā)覺(jué)iOS版QQ不受影響,因而可以清除iOS的GIF解析難題。
微信閃退gif基本原理:
1、樣版精減
原始的GIF樣版有1MB之多,不利精準(zhǔn)定位造成難題的實(shí)際數(shù)據(jù),因而他們必須對(duì)樣品開展精減。根據(jù)010 Editor開啟初始樣版GIF,運(yùn)用GIF模版解析,產(chǎn)生解析出現(xiàn)異常,這就表明樣版GIF的文件格式存在的問(wèn)題。
從模版解析的狀況表明,在38幀一切正常的照片數(shù)據(jù)后,發(fā)生了出現(xiàn)異常的數(shù)據(jù)。如下圖所示,因而人們將一切正常數(shù)據(jù)一部分清除,僅保存出現(xiàn)異常數(shù)據(jù),開展下一步精減。
可以見到,剩下的出現(xiàn)異常數(shù)據(jù)的一部分有10多萬(wàn)個(gè),根據(jù)二分法的形式開展檢測(cè)和清除。實(shí)際便是,刪掉一半后,檢測(cè)此外一半是不是可以導(dǎo)致崩潰。
假如崩潰了,表明造成出現(xiàn)異常的數(shù)據(jù)在保存的一半中,相反則表明在刪掉的一部分中。
通過(guò)持續(xù)的清除后,出現(xiàn)異常的數(shù)據(jù)就在下面的圖的藍(lán)紫色一部分中。只需含有GIF的圖象數(shù)據(jù)一部分含有這種出現(xiàn)異常數(shù)據(jù),就會(huì)導(dǎo)致iOS微信閃退。
2、調(diào)節(jié)剖析
通過(guò)樣版精減,大家早已發(fā)覺(jué)了造成出現(xiàn)異常的數(shù)據(jù)部位。那麼,如今就必須聯(lián)系實(shí)際的調(diào)節(jié),來(lái)明確具體造成出現(xiàn)異常的數(shù)據(jù)。
以iOS手機(jī)微信6.5.7版為例子,崩潰產(chǎn)生時(shí)的啟用棧如下所示,崩潰產(chǎn)生于手機(jī)微信內(nèi)部,表明是手機(jī)微信本身的GIF解析作用存在的問(wèn)題。
通過(guò)對(duì)相關(guān)函數(shù)的逆向分析,最后明確了造成出現(xiàn)異常的數(shù)據(jù)。最先來(lái)觀察sub_100B6CBF0這一涵數(shù),針對(duì)GIF中的數(shù)據(jù)開展循環(huán)系統(tǒng)搜索,假如存有0x21和0xF9,那麼當(dāng)今數(shù)據(jù)就表明是一個(gè)GraphicControlExtension構(gòu)造,并然后對(duì)GraphicControlExtension數(shù)據(jù)開展解析。
假如當(dāng)今搜索到的數(shù)據(jù)為0x2C,就表明檢索到一個(gè)ImageDescriptor,跳出來(lái)while循環(huán)系統(tǒng),開展具體照片數(shù)據(jù)的解析。這兒也就是出現(xiàn)異常數(shù)據(jù)的起止部位!
一切正常的幀數(shù)據(jù)的ImageDescriptor數(shù)據(jù)如下所示:
而造成出現(xiàn)異常的數(shù)據(jù)中,正好存有0x2C這一重要的分節(jié)符,導(dǎo)致以下白框中的數(shù)據(jù)被解析變成一個(gè)ImageDescriptor。可以見到,ImageWidth特性為0,ImageHeight特性為0x100。
下面,這一部分出現(xiàn)異常的數(shù)據(jù)就會(huì)進(jìn)到sub_100B6CE90涵數(shù)開展解析。因?yàn)镮mageWidth為0,導(dǎo)致與ImageHeight乘積后相當(dāng)于0,在new buffer時(shí),傳到的尺寸主要參數(shù)為0,這也是第一個(gè)難題,但這并不會(huì)導(dǎo)致卡屏,依然可以分派一個(gè)較小的堆塊。
造成崩潰的編碼如下所示,在else block中,sub_100B6C4F0的功效沒(méi)有實(shí)際追蹤,猜想是開展lzw壓縮包解壓,并回到壓縮包解壓后的數(shù)據(jù)長(zhǎng)短v21。
因?yàn)関10 = 0x0000010000000000,斷開成unsigned int后為0,這就導(dǎo)致 v10 – 1 – v21 為負(fù)值,做為memset
版權(quán)聲明:
1 本站所有資源(含游戲)均是軟件作者、開發(fā)商投稿,任何涉及商業(yè)盈利目的均不得使用,否則產(chǎn)生的一切后果將由您自己承擔(dān)!
2 本站將不對(duì)任何資源負(fù)法律責(zé)任,所有資源請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。
3 若有關(guān)在線投稿、無(wú)法下載等問(wèn)題,請(qǐng)與本站客服人員聯(lián)系。
4 如侵犯了您的版權(quán)、商標(biāo)等,請(qǐng)立刻聯(lián)系我們并具體說(shuō)明情況后,本站將盡快處理刪除,聯(lián)系QQ:2499894784
- 千億體育手機(jī)版本v2.0.1 安卓版
- tplink物聯(lián)電腦版(原tplink安防) v2.12.17.
- mtool修改器 V2023.11 官方最新版 / mtool
- 磁力兔子BT兔子 官方版
- Sandboxie Plus v1.9.8 / v5.64.8 開源電腦
- 奧維互動(dòng)地圖破解版永久vip2024 V9.9.1 永
- 社工庫(kù)查詢工具社工庫(kù)查詢工具v3.3 免費(fèi)版
- 字魂100號(hào)方方先鋒體字體包免費(fèi)版
- 奧維互動(dòng)地圖奧維地圖PC破解版VIP V9.0.6
- reWASD(Xbox One手柄映射工具) V6.0.1.5190
點(diǎn)擊加載更多評(píng)論>>