天天看點

因為360,火絨幹掉了win 10的電腦桌面

因為360,火絨幹掉了win 10的電腦桌面

不知道差友們現在還有多少人還在用 Win 10 呢?

前兩天 Win10 20H2 的系統更新出事了,不少小夥伴更新完之後跑到知乎上大喊:

我桌面呢???

圖檔源自知乎 @ 風筝

因為360,火絨幹掉了win 10的電腦桌面

這些丢了桌面的小夥伴一番摸索之後發現,自己電腦上的 explorer.exe 程式不見了。

因為360,火絨幹掉了win 10的電腦桌面

給不知道的小夥伴解釋一下,在 win11 之前, explorer 這個系統程式總管電腦裡的工作列、桌面、開始菜單、以及檔案管理器。

它沒了,桌面自然就沒了。

再一番追查之後,大家發現這個系統元件居然是被自己裝的第三方防毒軟體火絨給殺掉的!

因為360,火絨幹掉了win 10的電腦桌面

好好的,為啥原本該給系統當保安的火絨會突然開始反過來攻擊 “ 自己人 ” ,把更新之後的系統元件給删了呢?

抱着好奇,世超接着往下翻,看看有沒有大佬來分析一下到底是怎麼回事。

結果不看不要緊,一看更迷惑了——這整個烏龍事件裡,不僅涉及到剛才我們談到的主角 Windows 和火絨,竟然還有一個看起來八竿子打不着的 360 。

不知道大家有沒有注意過,從 Win 10 開始,底部工作列預設狀态下會有一個搜尋框。

因為360,火絨幹掉了win 10的電腦桌面

顯然 Windows 并不滿足于工作列搜尋之前的功能,是以在裡面加入了不少資訊、興趣類的内容。

360 也看上了工作列這個 “ 好地段 ” ,強行往工作列裡也塞入了自己的搜尋欄。

圖檔源自知乎@大賢者初春令月

因為360,火絨幹掉了win 10的電腦桌面

一山肯定不能容二虎,工作列就這麼大, 360 再強插一腳進來很難不出現問題。

據有的小夥伴兒說,這兩個功能都啟用的時候,會有機率當機、崩潰。

Windows 自然不能放着這樣的事情不管,但它不知道出于什麼原因,沒有對 360 重拳出擊,反而是出了個更新檔,來避讓 360 。

根據知乎使用者 @Henryzhao 分析, Windows 的這個更新檔特地在工作列裡做了一個叫 “ IsHijackingProcessRunning ” ( 劫持程式是否運作 )的函數檢查 360 程序運作情況。

大家可以看一下截圖中的檢測函數代碼。

它掃描的 360 Safe 、 ZhuDongFangYu 這些,都是 360 系程式的經典程序。

因為360,火絨幹掉了win 10的電腦桌面

如果檢測到 360 的産品正在運作,就會主動讓 Windows 自己的工作列資訊功能停止工作,也就是代碼中的 SellFeedsCampain = 0 。

這樣做避免了出現 360 的搜尋欄和 Windows 工作列互相沖突的情況。

但是 Windows 的這段代碼,本身就是新加入的内容,實作的又是檢測其他程序這麼敏感的動作,加上名字裡 “ 劫持 ” 這個詞聽起來也很敏感,所有的因素疊加起來很自然就引起了火絨的注意。

最後的結果就是防毒軟體火絨把 Windows 的這個更新檔行為直接當成了病毒來處理,給殺掉了。

然後大家的桌面就沒了。。。

不過火絨這邊的動作也非常快,很快就發了公告,更新完特征庫了。

是以大家現在可以放心更新系統了。

因為360,火絨幹掉了win 10的電腦桌面

回過頭來看,整個事情無非是 360 想要強行在系統工作列裡貼賺流量,結果和微軟自家搞的流量口子沖突了。

微軟想着給 360 擦屁股,反而被火絨打了手。

說來也巧,這種系統給應用擦屁股的行為其實并不是第一次出現。

我們大家熟悉的 iPhone 和微信,也有過這麼一檔子樂子。

因為360,火絨幹掉了win 10的電腦桌面

蘋果之前就發現,微信的性能監控方案裡調用了一個系統功能 API —— stack _ logging _ enable _ logging 。

這個 API 在很早之前的 iOS 版本當中可以啟用堆棧日志,但是後來蘋果把這個功能遷移到了别的 API 上, stack _ logging 這個 API 就沒有任何實際意義了。

然而微信的程式員并沒有随着蘋果在系統中做出的調整來調整自己的代碼,依舊會在微信中調用 stack _ logging 。

結果就導緻蘋果的遙測背景會收到大量的 “ 無效 API 調用 ” 報錯。

雖然這個報錯不會對 App 的正常使用造成任何影響,但估計全中國 2 億多的 iPhone 使用者都在跟蘋果 “ 報錯 ” ,把蘋果後端的工程師也給看無語了,是以後來的 iOS 更新當中,又特地把這個 API 作為一個 “ 空殼子 ” 加了回來。。。

因為360,火絨幹掉了win 10的電腦桌面

這一次,蘋果工程師直接把 stack _ logging _ enable _ logging 的注釋改成了:這串 API 什麼用也沒有,鬼知道為什麼微信還在調用它。

然後把包含這個 API 更新的檔案命名為了 “make tapi happy” ( 讓騰訊 API 開心 )

因為360,火絨幹掉了win 10的電腦桌面

很明顯,這次 Windows 和 360 并沒有像蘋果和微信一樣獲得一個 “ 開心 ” 的結局,反而把火絨也卷了進來,鬧了一個大笑話。

這裡面有兩家在遇到沖突的時候,沒有溝通好的原因。

假如, Windows 能夠及時告知 360 并制止它這樣的行為,而不是吭哧吭哧地給它打更新檔擦屁股。

可能就不會有這樣的笑話了。

再退一步,如果 Windows 和 360 都不往工作列裡加搜尋、資訊這些牛皮癬一樣的内容,問題是不是就在源頭解決了呢?

繼續閱讀