WeChat昵称bug
利用这个bug能做到什么呢?我先上张图大家感受一下:
其实这个bug在挺早的时候就有人发现过了,当时微信并没有修改,但这次可能使用的人太多,对微信的使用造成了一定的影响,所以微信很快就把这个bug封了。
接下来,我们就来看看这个bug到底是怎么实现的
预备知识
当然首先要了解一点基本知识:
Unicode控制字符就是特殊的Unicode字符:
- 启动从左到右的优先(LRO):当需要用于特殊情况(例如,用于部件编号)时,优先于双向字符类型。LRO强制字符成为从左到右的字符。
- 启动从右到左的优先(RLO):当需要用于特殊情况(例如,用于部件编号)时,优先于双向字符类型。RLO强制字符成为从右到左的字符。
- ……
看到了吗?就是上面那个RLO字符,当你在微信昵称后面插入一个RLO字符,然后再倒序输出你想要的文字效果,例如:
YTJ(RLO字符)脸小的你下一了亲并
撤回时就会变成
YTJ (撤回了一条消息)并亲了一下你的小脸
括号里面是微信自己的文字,呐原理是不是很简单?
实现方法
现在弄懂了这个原理,是不是好奇那个字符怎么打出来呢?
1.复制别人发给你的字符
2.如果手机有Unicode之类的软件,可以直接搜索这个字符,u+202e是他的代码,复制然后按照上面的方法就可做到了
当然了,由于这个消息欺骗性高,误导性强,所以微信已经修复了这个bug,现在已经无法使用了,但是你们可以试试其他的软件,说不定也能有奇效哦
最后,不得不说一句,WeChat团队程序猿简直注孤生啊,这么好的撩妹工具就这么没了(手动再见)
Update
看到网上网友讨论,可能名称最后还要加一个LRO字符修正,代码是U+202d(0x202d),可惜微信已经修复了,不然就能实践一下看看是不是真的要了
Update 2016-05-19
今天在看到微信那个bug又能用了,别人用的是JS自动生成,于是看了网站源代码
1 | String.fromCharCode(65197)+suffix +String.fromCharCode(65197) + name; |
查询了Unicode字符库,官方说是Arabic Letter Reh Isolated Form,代码中将后缀隔在Unicode字符中,但这两个字符貌似并不是控制字符,对原理表示疑惑,但是这方法在微信中可以使用,先Mark.
Update 2017-10-01
最新的字符 \ufee9
传送门
1 | String.fromCharCode(65257)+suffix +String.fromCharCode(65257) + name; |