前言1:将反诈骗进行到底,百度搜索关键字:郭盛华是骗子,为反诈尽绵薄之力。
前言2:近日发现微信有卡死的聊天记录,国庆闲着无聊就研究了一波,发现一个有意思的情况就发文水一篇。
1.微信卡死
前一段时间有发现一些群聊里有很多人发一段聊天记录,只要点开就会导致微信崩溃的情况。
感觉原理是个很有意思,于是乎我就研究了一波。
2.剖析原理
2.1细节发现
通过电脑复制那段字符串到notepad++,发现看上去短短的一句话竟然有7000个字符
2.2大胆猜测
为啥这7000多个字符在手机上就只显示短短一串?
一开始猜测是阿拉伯或者印度语这些从后往前读的文字,为了显示全而导致的压缩问题。后来把字符串复制到谷歌翻译,进行语种检测,发现啥也不是。
既然不是特殊语种,大概率就是特殊字符的原因了。但是这个字符我们也打出来,为了知道是什么字符,我们先把字符进行转码,urlencode,ascii,unicode这些常见的挨个尝试。最终发现可以转成unicode。
2.unicode,神奇的u0e
把字符串进行unicode转码之后发现对应的unicode为"u0e49",这时候就发现了一个有趣的现象,当多个u0e49在一起的时候,不会显示多个字符,而是把字符在第一个字符上累加。
演示:
转码前:
转码后:
这样就真相了,当超多个字符串压缩成一个,就类似缓冲区溢出的原理一样。
只申请了一个字节的内存,但是里面塞了N多个字符串。这大概率就是造成卡死的原因了。
后来通过尝试不仅u0e49会折叠,u0e49附件的字符串也会,下面列举几个:
u0e31:ััััััััััััััััััััััััััััััั
u0e36 : ึึึึึึึึึึึึ
u0e37 : ืืืืืืืืืืืืืื
u0e39 : ูููููููููููููููููููููููููู
u0e47 : ็็็็็็็็็็็็็็็็็็็็
u0e48 :่่่่่่่่่่่่่่่่่่่่่
u0e49 : ้้้้้้้้้้้้้้้้้้้
3.到处插,只要有编辑框没限制字符大小的都能插
后来发现这是个通用问题,手机比电脑更容易卡死。大概是因为内存的问题。
本来以为windows/linux的显示也会出现问题,后来尝试后大失所望,竟然分开了,但是这不影响我们插其他APP或者应用。
dingtalk:在公司大群发一个代码(离职代码)
写在最后:
祝大家双节快乐,也祝我生日快乐,又大一岁了,还是没找到女朋友,有没有单身适龄的女粉丝请联系我 ~~~~
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论