[IT杂谈] 谁动了我的QQ号:简述为何7月15日QQ号大规模冻结

thaha-avatar

thaha

2020-07-11T10:40:50+00:00

按:本文主要从技术层面上对QQ大规模冻结账号的原因稍作科普。其中牵扯的技术性细节会尽量简单化处理,如果有不准确之处还请包涵。

7月15日中午11点左右,大量的网友发现自己的QQ号被冻结,很多人的工作受到了影响,还要满世界地寻找解封方法。
不过在拆包技术分析之下,触发封禁逻辑的原因只是因为一个小小的bug。

长求总:安卓QQ在8.4.1版本中更新了某个组件,导致其判断自己一定运行在一个开挂了的环境之下。

这事情还得先从和平精英开始说起。
经常玩机的人应该对“框架”这东西不陌生:Xposed(XP框架)及其衍生EdXposed,太极(无极)。
这些框架类应用从系统层面给留下了很多接口,如同一把瑞士军刀一般可以让用户自己给APP定制扩展功能。
不过有人拿刀起瓶,就有人拿刀撬门。很多“扩展功能”损害的不止是开发者的利益,还有其他用户的利益。

最为人熟知的应该就是微信QQ的自动抢红包了。其实还有微信骰子必出6,蚂蚁森林秒偷能量……
想当年360的XX保镖都引发了惊天大战,腾讯爸爸早就看XP框架不爽了,不过我想真正让腾讯收紧策略的是和平精英。
7月初,有人利用太极的过签名功能制作了和平精英外挂。腾讯的对策简单粗暴,只要检测到安装了太极框架,你就开挂,封禁10年。[s:ac:冷]

没错,检测开没开挂不容易,检测有没有框架可简单的多。
为了应对各种群发机器人,QQ也早就实装了这个检测功能,如果你的行为像是个挂比,系统里还装了框架,那你就是个挂比。
直到它更新了一次依赖库——
先插播一个科普。什么是依赖库呢,程序A的运行需要库B里面的东西,那么在编译执行A的时候会把这个库B给包括进来。
如果这个库B还依赖了库C,库C依赖了库D呢?
那么就会像套娃一样,你下载安装了A你也自动获得了BCD。

太极的作者维术写了个用于性能监控的小工具epic,开源了放在Github上。简单来说就是为了帮助调试人员知道这个程序到底在哪个阶段吃了很多资源,会显得“很卡”。
安卓QQ在很早之前就引入了这个工具,而且从代码来看还不是无脑抄作业,做过了一定的修改。
但是epic的作者自己也在迭代更新,(出于兼容性考虑)在大约一年前依赖了Xposed框架的部分功能。
然后某个腾讯程序员在更新QQ的时候决定将这个“一年多没更新的外部库”给更新一下。[s:ac:blink]

好了,现在我们整理一下依赖关系。以前,安卓QQ依赖epic,无事发生。现在,安卓QQ依赖epic,epic依赖Xposed,于是安卓QQ包括了Xposed,而安卓QQ检测Xposed……

嗯,我是个预言家,我查杀我自己。[s:ac:哭笑]

PS:epic工具与Epic游戏商店除了名称相同之外毫无关系

参考文献:
一个依赖库更新引发的血案:QQ号被冻结技术分析。作者:维术