0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个“黑点”表情,会造成当前程序卡死崩溃?

454398 作者:工程师吴畏 2018-06-13 10:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

几乎每过一段时间,iOS上就会出现一些神秘消息“代码”,发送相关文本将导致系统或者聊天APP崩溃。笔者还记得去年在微信上还出现了,发送“15个句号”导致某些品牌的手机卡死的BUG。其中这些多与系统或者程序的文本渲染器有关,而Youtube UP主Tom Scott发现,安卓上也中招了。

简单来说,如图所示的这个“黑点”表情,发送和接收都没有问题,但当点击它的时候,就会造成当前程序卡死崩溃,老外反馈主要是Whatsapp。

Tom Scott分析后发现,这又是一次Unicode的把戏。Unicode是计算机之间传输文本的国际标准,包含数以万计的字符,并且支持N种语言。

不过,在Unicode之中也有一些隐形的字符,比如定义宽度、定义从左向右(从右向左,阿拉伯/希伯来语使用)、定义连接词、定义高低音的代码。这个黑点的“诡计”就在于,使用OBJ编码后发现,我们看到的黑点之后其实还有一长串字符,编造者使用宽度为0、且定义左右顺序的字符进行了隐藏。

当你点击时,安卓的文本渲染器需要判断你点击的是哪个,这个过程存在BUG,导致程序崩溃。

所以,严格来讲,这是安卓系统的BUG,理论上对于任何安卓消息应用都有效,不仅仅是Whatsapp;第二,其实黑点只是创造者利用的一个表情而已,如果掌握了原理,这个表情可以任意替换。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3403

    浏览量

    155788
  • 安卓
    +关注

    关注

    5

    文章

    2189

    浏览量

    60637
  • BUG
    BUG
    +关注

    关注

    0

    文章

    156

    浏览量

    16324
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    LAT1596文说明白STM32G4双Bank启动与升级

    1. 背景STM32G4 系列 MCU 越来越多的应用在数字电源项目中,客户希望软件升级的过程中,不影响当前程序的执行或者尽量减少打断当前程序执行的时间,本文介绍 STM32G4 的双Bank 特性
    发表于 04-15 16:14 0次下载

    技术探讨|直线电机模组卡死原因与处理方案

    直线电机模组因其高速度、高精度和高响应特性,在自动化设备中应用广泛。然而,运行中可能出现的“卡死”故障严重影响生产效率和设备寿命。卡死通常表现为模组无法启动、运动阻力剧增或运行中突然停止。系统性
    的头像 发表于 04-07 15:55 181次阅读
    技术探讨|直线电机模组<b class='flag-5'>卡死</b>原因与处理方案

    LAT1596 文说明白 STM32G4 双 Bank 启动与升级

    STM32G4 系列 MCU 越来越多的应用在数字电源项目中,客户希望软件升级的过程中,不影响当前程序的执行或者尽量减少打断当前程序执行的时间,本文介绍 STM32G4 的双Bank 特性以及应用该
    发表于 03-11 10:47 0次下载

    实战排障|RK平台启动卡死、SPL崩溃,两行日志直接定位DDR硬件死穴!

    在嵌入式Linux产品开发中,U-Boot SPL启动崩溃、主板不上电、启动卡死在初始化阶段是最让人头疼的硬故障之。日志乱码、CPU异常复位、看不到完整启动流程,往往让软件工程师误以为是代码BUG,硬件工程师无从下手。
    的头像 发表于 02-24 15:22 1292次阅读
    实战排障|RK平台启动<b class='flag-5'>卡死</b>、SPL<b class='flag-5'>崩溃</b>,两行日志直接定位DDR硬件死穴!

    华阳集团荣获前程无忧2026杰出雇主称号

    2026年1月8日,前程无忧正式发布“2026人力资源管理杰出奖”暨“2026杰出雇主”榜单,华阳集团荣获“2026杰出雇主”荣誉称号。
    的头像 发表于 01-13 17:31 1680次阅读

    CW32F030的FLASH存储器支持擦写PC页的保护功能

    CW32F030 的 FLASH 存储器支持擦写 PC 页保护功能。 当用户程序运行 FLASH 时,如果当前程序指针 PC 正好位于待擦写的 FLASH 地址页范围内,则该擦写操作失败,同时
    发表于 12-11 07:38

    睿擎平台CoreDump实战指南:系统崩溃现场的完美捕获 | 技术解析

    在嵌入式系统开发中,系统崩溃往往是最令人头疼的问题之。当程序突然宕机、出现硬故障或断言失败时,如何快速定位根本原因?CoreDump技术为开发者提供了种「时间冻结」的能力,能在系统
    的头像 发表于 10-29 16:58 4417次阅读
    睿擎平台CoreDump实战指南:系统<b class='flag-5'>崩溃</b>现场的完美捕获 | 技术解析

    关于蜂鸟E203内核中断硬件实现中断嵌套的设计

    开发板:MCU200T 中断机制即处理器核在执行程序指令流的过程中突然被别的请求打断而中止执行当前程序,转而处理别的事情,处理完重新回到之前程序终端的位置继续执行。处理器收到中断请求,保存当前
    发表于 10-23 07:07

    mailbox和消息队列 recv两次会卡死怎么解决?

    , &data, 1, 500); rt_pin_write(LED0_PIN, PIN_HIGH); // 第二次设置的超时时间无效卡死在这里 rt = rt_mq_recv(g_mqt
    发表于 09-19 06:26

    wiznet+w5500程序卡死怎么解决?

    , &arg)函数无效,于是想到手动关闭端口,在link status becomes link down处添加closesocket后程序卡死,进步调试发现在任何地方调用
    发表于 09-10 06:48

    真随机数和伪随机数的区别

    随机数在当前程序运行环境中是种常用参数,目前主要分为两种,伪随机数和真随机数,本期我们就来讲下二者的区别。
    的头像 发表于 08-27 17:46 3004次阅读

    M058多次写入数据闪存崩溃怎么解决?

    我的 m058 没有作系统,W/R dataflash 成功了,但是有问题:写入 dataflash 多次 m058 崩溃,请问如何解决这个问题? 代码如下: int32_t
    发表于 08-27 08:21

    STM32G473进行双bank升级的时候,进行FLASH的批量擦除回卡死是怎么回事?

    我在进行双bank升级的时候,先进行FLASH的批量擦除。在连续的升级过程中发现成功几次后出现了执行擦除flash操作时程序卡死的情况,直观上看灯没有闪烁。成功次数不规律,可能更新2次后才
    发表于 06-18 08:04

    STM32G473 flash擦除时程序卡死,为什么?

    我在进行双bank升级的时候,先进行FLASH的批量擦除。在连续的升级过程中发现成功几次后出现了执行擦除flash操作时程序卡死的情况,直观上看灯没有闪烁。成功次数不规律,可能更新2次后才
    发表于 06-12 08:05

    STM32G473 flash擦除时程序卡死的原因?

    我在进行双bank升级的时候,先进行FLASH的批量擦除。在连续的升级过程中发现成功几次后出现了执行擦除flash操作时程序卡死的情况,直观上看灯没有闪烁。成功次数不规律,可能更新2次后才
    发表于 06-09 07:23