4个月前 (05-14)  互联网最新资讯 |   抢沙发  88 
文章评分 2 次,平均分 4.5
[收起] 文章目录

前一阵子QQ群里流行了一个东西,一段话加上一个黑点(表情),点击之后QQ就会卡死。

又见卡死图,竟然一个“小黑点”就能干掉QQ?

当时只觉得很好玩,没多久就又见了一次。

又见卡死图,竟然一个“小黑点”就能干掉QQ?

既然又看到了就一定要好好看看了。

刚开始遇到这个时第一反应是曾经看过的文章《一张GIF引发的微信崩溃》,所以第一反应也是扔进010Editor看看,然而并没有什么异常的地方。就在这时无意间看到了图片的名字,觉得不一般,后想了想会不会是和“十五个句号”一样触发了什么东西。

表情图片名称:

又见卡死图,竟然一个“小黑点”就能干掉QQ?又见卡死图,竟然一个“小黑点”就能干掉QQ?又见卡死图,竟然一个“小黑点”就能干掉QQ?

最后看了看实在想不到有什么异常的。虽然名字奇怪了点但一般这种图片不都是这样吗。更何况都有后缀名结尾,应该是翻不起什么浪的。这一会的我怕是已经有点草木皆兵了。

如果不是图片的话那么就是文字的原因喽?文字复制~

又见卡死图,竟然一个“小黑点”就能干掉QQ?

浏览器顺利爆炸:

又见卡死图,竟然一个“小黑点”就能干掉QQ?

地址栏里好像有什么东西。经过精简最后拿到了:%E2%80%8E

浏览器中重复出现这个东西:

又见卡死图,竟然一个“小黑点”就能干掉QQ?

到这里真相就差不多了,N多个%E2%80%8E循环出现。那么这个%E2%80%8E到底是什么呢个?经过查阅资料这东西叫ZERO-WIDTH SPACE,顾名思义0宽度,所以这东西看不见。那么既然是“隐形”的那它隐藏了什么?编码转换后得到如下:

又见卡死图,竟然一个“小黑点”就能干掉QQ?

我们可以看出这三个起来作用“‎‏‫”

‎LRM‎ 从左到右标记

‏RLM从右向左标记

‫RLE‫ 开始从右向左嵌入

到这里就可以看出了,其实&#8235也是可以去掉的,真正生效的是LRM和RLM。多个左右标记循环出现,当用户去指定一个位置时会因为“反复横跳”导致当前程序崩溃。而原来的黑点以及国旗只是给用户错觉,让人以为是它的原因。而“‎‏‫”重复出现应该也只是制造者为了尽量卡死用户而特意重复书写,并不是因为某种原因而生成的。理论上来说这个对所有触屏手机和其运行的软件能够生效。(如果点一次没卡可以多作几次,iOS未测试)。

那么既然知道了原理我们也可以制作一个自己的“卡死图”。

<code class="hljs css">格式基本为:(&amp;<span class="hljs-selector-id">#8206</span>;&amp;<span class="hljs-selector-id">#8207</span>;)*<span class="hljs-selector-tag">N</span>+图片或文字</code>

然后将(&#8206;&#8207;)*N由unicode转换为ASCII,得到的即为只显示文字或图片的“卡死图”。

原聊天记录中的代码(未保存图片)。

链接: https://pan.baidu.com/s/1VRss3DSb79WFfydY4Vh7YQ 密码: v5qt

 

查阅资料

《一个特殊的字符?(%E2%80%8B)》

《[BUG随想录] 看不见的分隔符:Zero-width space》




//下面这个css和插件后台设置的主题有关系,如果需要换样式,则需要修改以下CSS名称

  原文地址:http://www.freebuf.com/articles/system/171435.html

发表评论

暂无评论

切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

扫一扫二维码分享