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

    文章

    3321

    浏览量

    149160
  • 安卓
    +关注

    关注

    5

    文章

    2081

    浏览量

    54461
  • BUG
    BUG
    +关注

    关注

    0

    文章

    154

    浏览量

    15579
收藏 人收藏

    评论

    相关推荐

    HAL库开启定时器中断时会卡死程序的原因?

    当开启定时器中断时候,开启定时器时会卡死程序,调试,全速运行卡死在-HAL_TIM_Base_Start_IT函数,单步调试发现卡死程序
    发表于 04-16 07:12

    程序运行到I2C_WaitOnFlagUntilTimeout时卡死的原因?

    程序运行到I2C_WaitOnFlagUntilTimeout时卡死,多次暂停读取HAL_GetTick()值没有变化;当把HAL_I2C_Mem_Read(size = 0),则会造成不知名
    发表于 03-12 07:51

    TC275读取没有数据的FLASH地址,程序卡死是怎么回事?

    我需要将区域的代码,全部拷贝到RAM中执行,这个PFLASH区域可能会有地址中没有写入数据,如果读取,程序就会卡死。但是,在Debug模式下,
    发表于 02-05 06:04

    如何避免PLC程序卡死呢?

    编写稳定的程序:编写良好的、稳定的PLC程序是避免程序卡死的关键。确保程序逻辑清晰、简洁,并遵循编程最佳实践。避免死循环、逻辑错误和冲突的发
    的头像 发表于 01-26 09:14 200次阅读

    当PLC程序卡死时我们该如何解决?

    当PLC程序卡死时,可以尝试以下几种方法来解决问题
    的头像 发表于 01-25 09:16 582次阅读

    什么是电压崩溃?产生电压崩溃的原因

    什么是电压崩溃?产生电压崩溃的原因  电压崩溃是指电源或电路中的电压突然下降或消失的现象。它可能由多种原因引起,包括电源故障、电路过载、电路短路、电缆接触不良、电子元件老化等。在本文中,我们将详细
    的头像 发表于 12-20 17:05 728次阅读

    锂电池负极上的黑点是什么?负极出现黑点的原因

    锂电池负极上的黑点是什么?负极出现黑点的原因 锂电池负极上的黑点是锂电池在使用过程中出现的一种异常现象。这些黑点通常是由于一些不良的电化学反应或物理变化引起的。下面将详细介绍锂电池负极
    的头像 发表于 11-10 14:58 1753次阅读

    如何在Windows下使用 Supervisor 重新拉起崩溃的Python程序

    我们用Python定时跑一些自动化程序的时候会出现程序崩溃的情况。此时如果你本人不在电脑面前,或者没有留意到程序崩溃,没有及时重新拉起
    的头像 发表于 10-21 11:23 1145次阅读
    如何在Windows下使用 Supervisor 重新拉起<b class='flag-5'>崩溃</b>的Python<b class='flag-5'>程序</b>

    不同线程对同一个bm_imag调用bm_image_destroy时,程序崩溃了如何解决?

    不同线程对同一个bm_imag调用 bm_image_destroy 时,程序崩溃
    发表于 09-19 08:24

    在STM32单片机上运行除零运算的C程序代码时为何程序崩溃

    众所周知,在 C 语言中,当一个数除以0的时候,会导致除法运算异常。程序也会因此崩溃。 为了避免程序崩溃,我们需要在代码中包含对 0 的判断。
    的头像 发表于 09-14 11:11 905次阅读
    在STM32单片机上运行除零运算的C<b class='flag-5'>程序</b>代码时为何<b class='flag-5'>程序</b>不<b class='flag-5'>崩溃</b>?

    Linux C语言获取当前程序名称的三种方式

    如果需要在程序内部获取当前运行程序的名称,可以使用如下 4 种方式:
    发表于 08-24 16:03 821次阅读
    Linux C语言获取<b class='flag-5'>当前程序</b>名称的三种方式

    使用 EN/ENO 机制可避免程序崩溃

    简介 使用使能输出 ENO,可检测和处理某些运行系统错误。后续指令的执行取决于该使能输出的信号状态。使用 EN/ENO 机制可避免程序崩溃。块状态将以布尔型变量的形式进行传递。 EN/ENO 机制
    的头像 发表于 06-28 16:21 1218次阅读
    使用 EN/ENO 机制可避免<b class='flag-5'>程序</b><b class='flag-5'>崩溃</b>

    ec200发送1063次数据后就卡死是何原因呢?

    卡在(AT+IPR)这条指令这儿(程序并没有崩溃),按道理AT+IPR这条指令发出后即使没有响应,应该超时会退出,感觉at组件这儿的处理有bug。先前有测试发现执行开机关机循环600多次后在AT+ATI指令
    发表于 05-17 11:22

    为什么2普通TTL与非门输出端并在起使用造成器件损坏呢?

    为什么2普通TTL与非门输出端并在起使用造成器件损坏呢?
    发表于 04-28 10:54

    在ESPBASIC中编程时是否有些关键字可以在加载新程序之前清除当前内存?

    在 ESPBASIC 中编程时是否有些关键字可以在加载新程序之前清除当前内存?我在程序
    发表于 04-26 07:09