iOS,Android用戶千萬(wàn)別點(diǎn)一個(gè)黑點(diǎn)表情,手機(jī)秒崩潰的后面有大學(xué)問(wèn)!
幾乎每過(guò)一段時(shí)間,iOS上就會(huì)出現(xiàn)一些神秘消息“代碼”,發(fā)送相關(guān)文本將導(dǎo)致系統(tǒng)或者聊天APP崩潰。還記得去年在微信上還出現(xiàn)了,發(fā)送“15個(gè)句號(hào)”導(dǎo)致某些品牌的手機(jī)卡死的BUG。
其中這些多與系統(tǒng)或者程序的文本渲染器有關(guān),國(guó)外有網(wǎng)友發(fā)現(xiàn),安卓手機(jī)也中招了。
簡(jiǎn)單來(lái)說(shuō),如圖所示的這個(gè)“黑點(diǎn)”表情,發(fā)送和接收都沒(méi)有問(wèn)題,但當(dāng)點(diǎn)擊它的時(shí)候,就會(huì)造成當(dāng)前程序卡死崩潰,老外反饋主要是Whatsapp。
Tom Scott分析后發(fā)現(xiàn),這又是一次Unicode的把戲。Unicode是計(jì)算機(jī)之間傳輸文本的國(guó)際標(biāo)準(zhǔn),包含數(shù)以萬(wàn)計(jì)的字符,并且支持N種語(yǔ)言。
不過(guò),在Unicode之中也有一些隱形的字符,比如定義寬度、定義從左向右(從右向左,阿拉伯/希伯來(lái)語(yǔ)使用)、定義連接詞、定義高低音的代碼。這個(gè)黑點(diǎn)的“詭計(jì)”就在于,使用OBJ編碼后發(fā)現(xiàn),我們看到的黑點(diǎn)之后其實(shí)還有一長(zhǎng)串字符,編造者使用寬度為0、且定義左右順序的字符進(jìn)行了隱藏。
當(dāng)你點(diǎn)擊時(shí),安卓的文本渲染器需要判斷你點(diǎn)擊的是哪個(gè),這個(gè)過(guò)程存在BUG,導(dǎo)致程序崩潰。
而這個(gè)讓安卓手機(jī)信息APP秒卡死的“黑點(diǎn)”表情,被證實(shí)對(duì)iOS同樣有效。
在iOS 11.4 Beta 4, 11.3.1, 11.3或者說(shuō)任何iOS 11/10版本設(shè)備上,一旦在信息應(yīng)用中(比如短信、iMessage)點(diǎn)擊到這個(gè)表情,就會(huì)讓該APP立即卡死。
iPhone X中,即便是從后臺(tái)關(guān)掉信息重新進(jìn)甚至是重啟手機(jī),都無(wú)法解決。你能做的是,使用3D Touch呼出新建信息,然后退回消息界面,刪除掉帶表情的那條信息流即可。