幾乎每過一段時間,iOS上就會出現一些神祕訊息“程式碼”,傳送相關文字將導致系統或者聊天APP崩潰。筆者還記得去年在微信上還出現了,傳送“15個句號”導致某些品牌的手機卡死的BUG。其中這些多與系統或者程式的文字渲染器有關,而Youtube UP主Tom Scott發現,安卓上也中招了。
簡單來說,如圖所示的這個“黑點”表情,傳送和接收都沒有問題,但當點選它的時候,就會造成當前程式卡死崩潰,老外反饋主要是Whatsapp。
Tom Scott分析後發現,這又是一次Unicode的把戲。Unicode是計算機之間傳輸文字的國際標準,包含數以萬計的字元,並且支援N種語言。
不過,在Unicode之中也有一些隱形的字元,比如定義寬度、定義從左向右(從右向左,阿拉伯/希伯來語使用)、定義連線詞、定義高低音的程式碼。這個黑點的“詭計”就在於,使用OBJ編碼後發現,我們看到的黑點之後其實還有一長串字元,編造者使用寬度為0、且定義左右順序的字元進行了隱藏。
當你點選時,安卓的文字渲染器需要判斷你點選的是哪個,這個過程存在BUG,導致程式崩潰。
所以,嚴格來講,這是安卓系統的BUG,理論上對於任何安卓訊息應用都有效,不僅僅是Whatsapp;第二,其實黑點只是創造者利用的一個表情而已,如果掌握了原理,這個表情可以任意替換。
來源:快科技