突然,到朋友圈发现,你女朋友撤回了一条消息还亲了你一口这个消息是怎么回事啊,原来是微信出现了bug,问题出在"& # 8237"这个字符上。(由于该字符无法直接打出来,以下用\x代替),如果你撤回了一条消息,就会出现这个问题哦!虽然微信已经修复了这个bug,但是大神已经将这个bug插件下载下来了,大家复制到微信目录下面去就可以使用了。
你女朋友撤回了一条消息还亲了你一口微信bug插件原理
这个问题可以说是微信的一个BUG,问题出在"& # 8237"这个字符上。(由于该字符无法直接打出来,以下用\x代替)
当你撤回一条消息时,微信将会发送一条"XXX撤回了一条消息”给对方,这条消息是如何产生的呢?
——以下为推测,只是举例说明BUG可能发生的原理——
——以下伪代码,JAVA和C混写,学过一点点代码的应该都可以看懂——
——服务端——
当你撤回消息时,微信会执行以下命令:
sendMessageToReceiver("“%s”撤回了一条消息",getSenderName());
其中,getReceiverName命令是获取发送人,也就是撤回人的用户名。
情景一:你的用户名是“刘看山”,这条消息就会变成
消息①:“刘看山”撤回了一条消息
√完美
情景二:你的用户名是“刘看山\n”,\n是换行符,这条消息就会变成:
消息er:“刘看山
”撤回了一条消息
×这样不好看,于是微信会屏蔽昵称中\n\b\t等特殊字符。
情景三:你的用户名是“刘看山\x萌个了卖并”,这条消息会变成
消息③:“刘看山\x萌个了卖并”撤回了一条消息
√看起来也没什么错
——从服务端到客户端的分割线——
客户端收到服务端发来的这条消息,需要将这条消息展示给用户,那么对以上的消息①和③(②已经被屏蔽),分别产生的效果是:
消息①:“刘看山”撤回了一条消息
消息③:“刘看山”撤回了一条消息并卖了个萌
注意,此时在内存中,消息③的内容还是:“刘看山\x萌个了卖并”撤回了一条消息
现在再来说说“& # 8237”这个特殊字符。就像\n在windows是换行,\t是输出一个TAB一样,这个特殊字符的作用是:将此消息倒序。那倒序时究竟发生了什么呢?现在模拟一下微信输出时处理该消息的步骤,用下划线表示光标所在的位置:
字符串:“刘看山\x萌个了卖并”撤回了一条消息
·处理到“看”时,要输出的消息为
“刘看_”撤回了一条消息
·处理到“山”时:
“刘看山_”撤回了一条消息
·处理到特殊字符时:
“刘看山”撤回了一条消息_ (注意:此时光标移动到了末尾)
·处理到“萌”时:
“刘看山”撤回了一条消息_萌
·处理到“并”时:
刘看山”撤回了一条消息_并卖了个萌
这样,用户就会看到各种奇奇怪怪的消息了。
只要微信在客户端中屏蔽了这个字符,那么这个BUG也就不存在了。
你女朋友撤回了一条消息还亲了你一口微信bug插件使用方法
其实非常的简单,你只需要把这个插件放到根目录下面去就可以使用了。就会出现这个问题,逗一逗你的男/女朋友吧!
- PC官方版
- 安卓官方手机版
- IOS官方手机版