QQ正在讀取你所有的瀏覽記錄?
今天,V2EX上一篇名為《QQ 正在嘗試讀取你的瀏覽記錄》的文章突然爆發。

帖子內容大致是。一位技術員在使用QQ過程中,為了防止一些流氓行為,特地去MS Store里面安裝了一個QQ桌面版,因自己使用了火絨的自定義攔截功能,設置了一些重要或敏感數據目錄的保護。
最終得出結論,QQ正在嘗試讀取你的瀏覽記錄。
網帖一出,在程序員屆也是引起軒然大波。

隨著熱度的提升,某知名大V本著探索的精神,去簡單抓取了一下QQ的文件訪問行為,和簡單的逆向分析。


得出結論,QQ并不是針對Chrome,而是會遍歷讀取所有瀏覽器歷史記錄,確認會中招的瀏覽器包括但不限于如Chrome、Chromium、360極速、360安全、獵豹、2345等瀏覽器。
帖子發布后,引起了網友的廣泛關注。

回憶明天zero也是CrazyxZ-:沒錯呀,澄清:QQ不是想讀取Chrome的歷史記錄,而是想讀取所有Chromium類瀏覽器的歷史記錄(包括但不限于Chrome、360極速瀏覽器、獵豹瀏覽器)

單_小_雙:QQ一直以來都是這樣啊,當年360出扣扣保鏢,主打就是發現了QQ遍歷電腦文件然后上傳服務器,當年360也發布了不少相關文章的。
而就在網友發生激烈爭論的同時,另一位操作系統程序員Anhkgg通過技術對比表示:QQ后臺讀取歷史記錄,或許并不是侵害用戶隱私。
我們先來看看Anhkgg又做了哪些測試:
通過history搜索到關鍵代碼。

仔細一點,就會發現下面的代碼。

很明顯,QQ僅僅暫時拷貝了chrome歷史記錄文件到臨時文件temphis.db,然后刷選了url進行了一些檢測,log信息中看到關鍵字ptjcur Detect2。
然后通過DeleteFile刪除了臨時文件temphis.dbg,中間代碼也并沒有發現什么上傳服務器的代碼。
到這一步,Anhkgg認為:落雪原文作者qwqdanchun在得到QQ后臺讀取瀏覽器歷史記錄,并臆測可能會對用戶做什么危害的行為,上升到了用戶隱私上,這個結論下的有點不妥。因為讀取歷史記錄和刪除臨時文件中間并沒有什么上傳服務器之類的操作,所有都是本地完成的。這個結論對企鵝不公平,對一個如日沖天的互聯網公司不公平。
為了搞清楚真相,Anhkgg又進行了更深入的分析。

到這一步,Anhkgg發現,讀取歷史記錄相關邏輯是在一個線程中,線程首先會判斷dns domain是tencent.com或者存在SNGPERF,則bint為1,那么后面的讀取歷史記錄也就不會做了(這是不針對企鵝內部環境?)。
如果bint是0,則開始detect。
首先通過urlcache(后面再讀取chrome歷史記錄)讀取url信息(ptjcur Detect1)。

然后計算url的md5,比幾個固定的md5值比較。

如果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并不完全是無辜者,讀取用戶瀏覽器歷史記錄是一個非常敏感的行為,應該必須讓用戶清楚得知道,你并沒用用此信息做什么傷害用戶利益的事情。