0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)“黑點(diǎn)”表情,會(huì)造成當(dāng)前程序卡死崩潰?

454398 ? 作者:工程師吳畏 ? 2018-06-13 10:45 ? 次閱讀

幾乎每過一段時(shí)間,iOS上就會(huì)出現(xiàn)一些神秘消息“代碼”,發(fā)送相關(guān)文本將導(dǎo)致系統(tǒng)或者聊天APP崩潰。筆者還記得去年在微信上還出現(xiàn)了,發(fā)送“15個(gè)句號”導(dǎo)致某些品牌手機(jī)卡死的BUG。其中這些多與系統(tǒng)或者程序的文本渲染器有關(guān),而Youtube UP主Tom Scott發(fā)現(xiàn),安卓上也中招了。

簡單來說,如圖所示的這個(gè)“黑點(diǎn)”表情,發(fā)送和接收都沒有問題,但當(dāng)點(diǎn)擊它的時(shí)候,就會(huì)造成當(dāng)前程序卡死崩潰,老外反饋主要是Whatsapp。

Tom Scott分析后發(fā)現(xiàn),這又是一次Unicode的把戲。Unicode是計(jì)算機(jī)之間傳輸文本的國際標(biāo)準(zhǔn),包含數(shù)以萬計(jì)的字符,并且支持N種語言。

不過,在Unicode之中也有一些隱形的字符,比如定義寬度、定義從左向右(從右向左,阿拉伯/希伯來語使用)、定義連接詞、定義高低音的代碼。這個(gè)黑點(diǎn)的“詭計(jì)”就在于,使用OBJ編碼后發(fā)現(xiàn),我們看到的黑點(diǎn)之后其實(shí)還有一長串字符,編造者使用寬度為0、且定義左右順序的字符進(jìn)行了隱藏。

當(dāng)你點(diǎn)擊時(shí),安卓的文本渲染器需要判斷你點(diǎn)擊的是哪個(gè),這個(gè)過程存在BUG,導(dǎo)致程序崩潰。

所以,嚴(yán)格來講,這是安卓系統(tǒng)的BUG,理論上對于任何安卓消息應(yīng)用都有效,不僅僅是Whatsapp;第二,其實(shí)黑點(diǎn)只是創(chuàng)造者利用的一個(gè)表情而已,如果掌握了原理,這個(gè)表情可以任意替換。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • iOS
    iOS
    +關(guān)注

    關(guān)注

    8

    文章

    3385

    瀏覽量

    150323
  • 安卓
    +關(guān)注

    關(guān)注

    5

    文章

    2113

    瀏覽量

    56911
  • BUG
    BUG
    +關(guān)注

    關(guān)注

    0

    文章

    155

    瀏覽量

    15635
收藏 人收藏

    評論

    相關(guān)推薦

    ESP8266崩潰是什么原因造成的?

    我有個(gè)ESP8266連接到我電腦上的終端程序。 我看到的唯消息是這樣的: ets Jan 8 2013,rst cause:2, boot mode:(3,6) 負(fù)載
    發(fā)表于 07-19 06:52

    Flash 512K+512K MAP下擦寫扇區(qū)后崩潰的原因?

    是(512KB+512KB)的MAP中,user2的代碼擦寫user1的代碼扇區(qū)時(shí)出現(xiàn)的崩潰。1024K+1024KMAP中可以正常操作。 就是代碼在@0x81000地址啟動(dòng)后的user2下,執(zhí)行了spi_flash_erase_sector(1);擦除0x1000地址的扇區(qū),之后就
    發(fā)表于 07-09 06:07

    LE OTA APP崩潰的原因?

    Bluetooth_LE_Battery_Server proj開發(fā)自己的工程代碼,在安卓環(huán)境下使用LEOTA APP進(jìn)行測試開發(fā),藍(lán)牙連接都是正常的,在選擇升級文件,點(diǎn)擊update按鍵時(shí),LEOTA APP會(huì)崩潰,程序顯示
    發(fā)表于 07-04 08:26

    nvs使用時(shí)出現(xiàn)的系統(tǒng)崩潰的原因?怎么解決?

    問題:設(shè)備使用nvs儲(chǔ)存相關(guān)參數(shù),設(shè)備開始正常使用,在一兩個(gè)月后讀參數(shù)的過程中出現(xiàn)系統(tǒng)崩潰,而且不是所以設(shè)備都有問題,只有百分之十以內(nèi)會(huì)出現(xiàn),在重新寫完之后讀會(huì)變正常以下是程序以及崩潰
    發(fā)表于 06-12 06:27

    蘋果因Mac崩潰問題下架MLB應(yīng)用

    據(jù)悉,蘋果公司已于4月18日宣布,由于在上個(gè)月經(jīng)Mac App Store推出的iPad版美國職業(yè)棒球聯(lián)盟(MLB)應(yīng)用程序,存在無法修復(fù)的崩潰問題,現(xiàn)已實(shí)施暫時(shí)性下架措施。
    的頭像 發(fā)表于 04-18 11:34 ?2891次閱讀

    電源諧波會(huì)造成哪些危害

    電源諧波是由于非線性負(fù)載造成電壓或電流波形偏離正弦而發(fā)生畸變。電源諧波會(huì)影響設(shè)備的運(yùn)行與壽命、造成電力系統(tǒng)不穩(wěn)定、干擾通信系統(tǒng),因此抑制和防范電源諧波很重要,可以通過裝設(shè)諧波補(bǔ)償裝置來補(bǔ)償諧波、改造電力電子裝置等措施來改善。除此
    的頭像 發(fā)表于 04-17 13:56 ?445次閱讀
    電源諧波<b class='flag-5'>會(huì)</b><b class='flag-5'>造成</b>哪些危害

    HAL庫開啟定時(shí)器中斷時(shí)會(huì)卡死程序的原因?

    當(dāng)開啟定時(shí)器中斷時(shí)候,開啟定時(shí)器時(shí)會(huì)卡死程序,調(diào)試,全速運(yùn)行卡死在-HAL_TIM_Base_Start_IT函數(shù),單步調(diào)試發(fā)現(xiàn)卡死程序應(yīng)
    發(fā)表于 04-16 07:12

    程序運(yùn)行到I2C_WaitOnFlagUntilTimeout時(shí)卡死的原因?

    程序運(yùn)行到I2C_WaitOnFlagUntilTimeout時(shí)卡死,多次暫停讀取HAL_GetTick()值沒有變化;當(dāng)把HAL_I2C_Mem_Read(size = 0),則會(huì)造成不知名
    發(fā)表于 03-12 07:51

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用致性與崩潰致性的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用致性與崩潰致性的區(qū)別 在數(shù)字化時(shí)代,數(shù)據(jù)備份成為了企業(yè)信息安全的核心環(huán)節(jié)。但在備份過程中,兩個(gè)關(guān)鍵概念——應(yīng)用
    的頭像 發(fā)表于 03-11 11:29 ?768次閱讀
    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一</b>致性與<b class='flag-5'>崩潰</b><b class='flag-5'>一</b>致性的區(qū)別

    用VS2012編寫了個(gè)win32控制臺(tái)的小程序與CyUSB3014通信,調(diào)用write API就崩潰怎么解決?

    我用VS2012編寫了個(gè)win32控制臺(tái)的小程序與CyUSB3014通信,只有控制傳輸,使用靜態(tài)鏈接庫,調(diào)用EZ-USB FX3 SDK 1.3.3裡面提供的CypressEZ-USB FX3
    發(fā)表于 02-29 06:17

    TC275讀取沒有數(shù)據(jù)的FLASH地址,程序卡死是怎么回事?

    我需要將個(gè)區(qū)域的代碼,全部拷貝到RAM中執(zhí)行,這個(gè)PFLASH區(qū)域可能會(huì)有地址中沒有寫入數(shù)據(jù),如果讀取,程序就會(huì)卡死。但是,在Debug模式下,
    發(fā)表于 02-05 06:04

    如何避免PLC程序卡死呢?

    編寫穩(wěn)定的程序:編寫良好的、穩(wěn)定的PLC程序是避免程序卡死的關(guān)鍵。確保程序邏輯清晰、簡潔,并遵循編程最佳實(shí)踐。避免死循環(huán)、邏輯錯(cuò)誤和沖突的發(fā)
    的頭像 發(fā)表于 01-26 09:14 ?541次閱讀

    當(dāng)PLC程序卡死時(shí)我們該如何解決?

    當(dāng)PLC程序卡死時(shí),可以嘗試以下幾種方法來解決問題
    的頭像 發(fā)表于 01-25 09:16 ?1842次閱讀

    什么是電壓崩潰?產(chǎn)生電壓崩潰的原因

    探討電壓崩潰的原因以及可能的解決方案。 第部分:電壓崩潰的原因 1. 電源故障:電源崩潰是導(dǎo)致電壓崩潰的最常見原因之
    的頭像 發(fā)表于 12-20 17:05 ?1648次閱讀

    鋰電池負(fù)極上的黑點(diǎn)是什么?負(fù)極出現(xiàn)黑點(diǎn)的原因

    的原因。 首先,黑點(diǎn)可能是由于電池中的電解液泄漏所導(dǎo)致。鋰電池的電解液是種含有鋰鹽和有機(jī)溶劑的液體,它通常被封裝在聚合物膜或金屬箔中。如果電池內(nèi)部的密封性不好或者電解液泄漏,電解液可能會(huì)接觸到負(fù)極,導(dǎo)致負(fù)極表
    的頭像 發(fā)表于 11-10 14:58 ?2812次閱讀