突然,到朋友圈發(fā)現(xiàn),你女朋友撤回了一條消息還親了你一口這個消息是怎么回事啊,原來是微信出現(xiàn)了bug,問題出在"& # 8237"這個字符上。(由于該字符無法直接打出來,以下用\x代替),如果你撤回了一條消息,就會出現(xiàn)這個問題哦!雖然微信已經(jīng)修復(fù)了這個bug,但是大神已經(jīng)將這個bug插件下載下來了,大家復(fù)制到微信目錄下面去就可以使用了。
你女朋友撤回了一條消息還親了你一口微信bug插件原理
這個問題可以說是微信的一個BUG,問題出在"& # 8237"這個字符上。(由于該字符無法直接打出來,以下用\x代替)
當你撤回一條消息時,微信將會發(fā)送一條"XXX撤回了一條消息”給對方,這條消息是如何產(chǎn)生的呢?
——以下為推測,只是舉例說明BUG可能發(fā)生的原理——
——以下偽代碼,JAVA和C混寫,學過一點點代碼的應(yīng)該都可以看懂——
——服務(wù)端——
當你撤回消息時,微信會執(zhí)行以下命令:
sendMessageToReceiver("“%s”撤回了一條消息",getSenderName());
其中,getReceiverName命令是獲取發(fā)送人,也就是撤回人的用戶名。
情景一:你的用戶名是“劉看山”,這條消息就會變成
消息①:“劉看山”撤回了一條消息
√完美
情景二:你的用戶名是“劉看山\n”,\n是換行符,這條消息就會變成:
消息er:“劉看山
”撤回了一條消息
×這樣不好看,于是微信會屏蔽昵稱中\(zhòng)n\b\t等特殊字符。
情景三:你的用戶名是“劉看山\x萌個了賣并”,這條消息會變成
消息③:“劉看山\x萌個了賣并”撤回了一條消息
√看起來也沒什么錯
——從服務(wù)端到客戶端的分割線——
客戶端收到服務(wù)端發(fā)來的這條消息,需要將這條消息展示給用戶,那么對以上的消息①和③(②已經(jīng)被屏蔽),分別產(chǎn)生的效果是:
消息①:“劉看山”撤回了一條消息
消息③:“劉看山”撤回了一條消息并賣了個萌
注意,此時在內(nèi)存中,消息③的內(nèi)容還是:“劉看山\x萌個了賣并”撤回了一條消息
現(xiàn)在再來說說“& # 8237”這個特殊字符。就像\n在windows是換行,\t是輸出一個TAB一樣,這個特殊字符的作用是:將此消息倒序。那倒序時究竟發(fā)生了什么呢?現(xiàn)在模擬一下微信輸出時處理該消息的步驟,用下劃線表示光標所在的位置:
字符串:“劉看山\x萌個了賣并”撤回了一條消息
·處理到“看”時,要輸出的消息為
“劉看_”撤回了一條消息
·處理到“山”時:
“劉看山_”撤回了一條消息
·處理到特殊字符時:
“劉看山”撤回了一條消息_ (注意:此時光標移動到了末尾)
·處理到“萌”時:
“劉看山”撤回了一條消息_萌
·處理到“并”時:
劉看山”撤回了一條消息_并賣了個萌
這樣,用戶就會看到各種奇奇怪怪的消息了。
只要微信在客戶端中屏蔽了這個字符,那么這個BUG也就不存在了。
你女朋友撤回了一條消息還親了你一口微信bug插件使用方法
其實非常的簡單,你只需要把這個插件放到根目錄下面去就可以使用了。就會出現(xiàn)這個問題,逗一逗你的男/女朋友吧!
- PC官方版
- 安卓官方手機版
- IOS官方手機版