今天,V2EX上一篇名为《QQ 正在尝试读取你的浏览记录》的文章突然爆发。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(1)

帖子内容大致是。一位技术员在使用QQ过程中,为了防止一些流氓行为,特地去MS Store里面安装了一个QQ桌面版,因自己使用了火绒的自定义拦截功能,设置了一些重要或敏感数据目录的保护。

最终得出结论,QQ正在尝试读取你的浏览记录。

网帖一出,在程序员届也是引起轩然大波。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(2)

随着热度的提升,某知名大V本着探索的精神,去简单抓取了一下QQ的文件访问行为,和简单的逆向分析。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(3)

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(4)

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(5)

得出结论,QQ并不是针对chrome,而是会遍历读取所有浏览器历史记录,确认会中招的浏览器包括但不限于如Chrome、Chromium、360极速、360安全、猎豹、2345等浏览器。

帖子发布后,引起了网友的广泛关注。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(6)

回忆明天zero也是CrazyxZ-:没错呀,澄清:QQ不是想读取Chrome的历史记录,而是想读取所有Chromium类浏览器的历史记录(包括但不限于Chrome、360极速浏览器、猎豹浏览器)

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(7)

单_小_双:QQ一直以来都是这样啊,当年360出扣扣保镖,主打就是发现了QQ遍历电脑文件然后上传服务器,当年360也发布了不少相关文章的。


而就在网友发生激烈争论的同时,另一位操作系统程序员Anhkgg通过技术对比表示:QQ后台读取历史记录,或许并不是侵害用户隐私。

我们先来看看Anhkgg又做了哪些测试:

通过history搜索到关键代码。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(8)

仔细一点,就会发现下面的代码。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(9)

很明显,QQ仅仅暂时拷贝了chrome历史记录文件到临时文件temphis.db,然后刷选了url进行了一些检测,log信息中看到关键字ptjcur Detect2。

然后通过DeleteFile删除了临时文件temphis.dbg,中间代码也并没有发现什么上传服务器的代码。

到这一步,Anhkgg认为:落雪原文作者qwqdanchun在得到QQ后台读取浏览器历史记录,并臆测可能会对用户做什么危害的行为,上升到了用户隐私上,这个结论下的有点不妥。因为读取历史记录和删除临时文件中间并没有什么上传服务器之类的操作,所有都是本地完成的。这个结论对企鹅不公平,对一个如日冲天的互联网公司不公平。

为了搞清楚真相,Anhkgg又进行了更深入的分析。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(10)

到这一步,Anhkgg发现,读取历史记录相关逻辑是在一个线程中,线程首先会判断dns domain是tencent.com或者存在SNGPERF,则bint为1,那么后面的读取历史记录也就不会做了(这是不针对企鹅内部环境?)。

如果bint是0,则开始detect。

首先通过urlcache(后面再读取chrome历史记录)读取url信息(ptjcur Detect1)。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(11)

然后计算url的md5,比几个固定的md5值比较。

qq的浏览次数怎么不见了 QQ正在读取你所有的浏览记录(12)

如果md5匹配,会解析url分析&后面的参数,然后继续把这个参数做md5计算,和一些md5比较,匹配存入一块内存。

具体后续有什么动作,经过这些简单的分析还不能确认,所以也不能轻易对其下结论。

最后,Anhkgg就自己的发现希望有条件的程序员可以去跑跑比较url的md5的结果是什么,自己动手过一遍,企鹅究竟是什么目的就可以一目了然。

0x1C6389BA, 0xF2FA5666, 0xF2A2E0D3, 0xC892E7BA 0xB829484C, 0x520F7CC3, 0x94EC8A73, 0xD808E79 0xDDA1029, 0x9E67F3BB, 0xB18ACC45, 0x597CF438 0x2564591C, 0x5B11347B, 0x846A0F72, 0xEF704A8

最终Anhkgg得出结论:

我们并不能对QQ的行为下结论,并不能因为临时读取和计算了一下url,就判定腾讯是对用户隐私的侵害(有可能真的如某些人说的,这可能是对某些不雅网站的检查呢)。

当然,在这件事情中,QQ并不完全是无辜者,读取用户浏览器历史记录是一个非常敏感的行为,应该必须让用户清楚得知道,你并没用用此信息做什么伤害用户利益的事情。

,