1. 程式人生 > >病毒檢測與防毒技術大揭祕2

病毒檢測與防毒技術大揭祕2

1.關於防毒軟體,你需要知道的

1.1.防毒軟體的重要性

電腦的使用已普及到社會生活的方方面面,無論是工作、娛樂、學習、購物等等都會接觸到電腦。使用電腦實際上是使用電腦中的各種軟體。

什麼軟體重要呢?對於不同的人、不同的目標,答案也不盡相同,但是無論做什麼,安全自然是不容忽視的:網上購物需要確保交易安全、資金安全;聊天娛樂需要保護隱私;工作學習需要防止資料、機密洩漏,即便沒有這些諸多考慮只是隨意上網也要需要一個安全穩定的作業系統環境,這一切需要被人們擔心、防範的又是什麼呢?是木馬、病毒、惡意軟體。而防毒軟體正是用來對付這些威脅、保護電腦正常使用的必不可少的軟體。

1.1.1.學習防毒軟體開發的重要性

對於大多數普通的電腦使用者來說並不重要。

絕大多數的電腦使用者並不需要學會開發防毒軟體,也不需要懂防毒原理,會用就足夠了。但對於某些人也許很重要,有的需要了解、有的需要熟悉,甚至有的需要掌握。

電腦行業相關從業者,譬如網管、空間服務商、系統管理員或其它從事系統安全維護人員等,有必要多瞭解防毒軟體相關知識,熟愁防毒軟體功能重點,以及防防毒原理,以便在進行選用防毒軟體或部署防防毒安全方案等操作時有更多好的選擇。

因為防毒軟體的重要性所至,絕大多數的電腦都會安裝防毒軟體,因此防毒軟體的目標使用者群非常之大、市場非常廣闊。也就意味著從業者的前景較為光明。有條件以此方向進行創業是個不錯的選擇,當然並不是指跟國內外幾大防毒巨頭抗衡,現存的一些小眾反病毒安全產品也有不錯的生存空間。

在安全公司或開展安全相關技術專案的公司供職者,如果自己掌握著此方面技術,想必在工作中更會如魚得水。

最後,從興趣或是研究、學習角度講,如果以廣義的技術含量而論,防毒技術無疑居於金字塔的頂端,是一個門檻級高的領域,掌握了其技術,就等於掌握一門稀缺的技藝,何樂而不為呢?

1.2.防毒軟體技術難嗎?

不難。

防毒軟體開發技術之所以在人們眼中高深莫測,是因為通常無法窺得其門禁所至。就好像要做一件從未做過的不一般事情一樣,會覺的無從下手。

造成這種境況的原因源自相關資料的匱乏,就像在武俠小說中,常會有某門派高等功夫很厲害,卻傳男不傳女、傳內不傳外,更沒有印刷量為5000冊的祕籍。結果造成江湖人士們天天聽說,卻見不得、習不到。感覺就是很好很強大,自己學不會。

防毒軟體開發技術便像是如此,掌握在全地球為數不多的幾家或幾十家企業手中,使用者能聽到的往往是某某防毒引擎、啟發式技術甲、主動式技術乙、八重防禦系統、九層監測技術等等這些貌似很厲害的字眼,使用者無法判斷其倒底有多麼強大,只能中這些晦澀神奇的詞句中下意識的自我判斷,書店中各種類的也更加使人們覺的防毒是一個神密不可及的領域。

而事實上,防毒技術真的有那麼難嗎?

不可否認,任何領域的任何事情做到極致都是很難的,防毒技術確實有很難的部分,但如果想入門、想掌握,並不會是想像中的那麼困難。很多內容其實是已知的,但只是之前沒有把它跟防毒開發聯想起來,只是以前沒有想到防毒軟體是用如此的方法開發的,只是以前不知道如此技術有如此用法。

相信很多人讀完本書後會有這樣的感覺:原來如此,不難,我也可以掌握的。

2.防毒軟體功能設計

進行防毒軟體開發之前,首先需要明確功能。

防毒軟體需要具備的基本功能分為:防毒、防毒、升級、自我保護、設定以及其它輔助功能。

2.1.防毒

查毒防毒,是防毒軟體的基本功能。

在實際的軟體應用中,使用者通常有不同的操作需求,比如有要要對記憶體和敏感系統區域進行快速掃描、有時需要進行全硬碟掃描、有時臨時使用U盤,插入U盤後,需要對U盤進行單獨掃描。 為了滿足這些需求,通常在防毒軟體中提供三種掃描方式:快速掃描、全盤掃描、自定義掃描,也就是經典的三按鈕式防毒功能。國內外很多防毒軟體都採用了這種方式,並不是跟風,而是這樣的設計確實實用、確實能滿足使用者的需求。

既然進行病毒掃描,理所當然可能會掃描到病毒。在掃描到病毒後,需要提供給使用者相應的操作措施,如清除、自動清除、忽略、隔離。

2.2.防毒

在一定意義上而言,防毒功能的重要性甚至大於防毒功能。如果使用者有憂患意識,在安裝系統後及時安裝好防毒軟體,做好病毒防護工作,時刻阻止病毒侵入系統,遠比中毒後再防毒效果要好的多,亡羊補牢在電腦使用過程中是常常會晚的。因此,防毒功能是防毒軟體另一個非常重要且不可缺的部分。

在這裡要對雲安全進行一些簡單的介紹,因為本書中對防毒軟體的設計中,將要在防毒功能中引入雲安全概念,這是一個與常見的主流防毒軟體不同的防毒理念。

雲安全,是個新興的技術,高度依賴網際網路、依賴頻寬、依賴使用者量,是網際網路高度發展衍生出的一種技術。在防毒軟體領域中,具有極高的實用性。目前主要的防毒軟體中,大都有云安全應用的身影,甚至有完全的雲查殺軟體。使用雲技術,利用雲病毒庫進行病毒的檢測和查殺。

但本人認為,雲安全技術在這一領域更適用來做防護,而不適用做防毒。原因在於:雲查殺,是在建立雲伺服器的基礎上,將病毒庫特徵碼置於伺服器資料庫中。使用者在本地進行掃描時獲取到本地檔案特徵碼,然後需要連線到伺服器,進行特徵碼匹配驗證,以確定被掃描的檔案否是病毒。網路驗證,不管當前的網速達到了多快,但其速度是永遠無法與本地相比的,進行檔案掃描查殺,使用者需要速度,而此舉降低了掃描速度。況且,儲存於伺服器中的病毒庫,是完全可以可以以升級病毒庫的方式下載到客戶機器中,進行高速掃描,這是傳統防毒軟體慣用的方式,沒有必要,也沒有理由非存放在伺服器。再則,雲的思想,原本是將工作量分散到大量的網際網路終端執行,而現行的這種雲查殺,反而是將大量的客戶端工作量集中到伺服器執行,根本有駁雲的思路。因此,雲查殺不是一種優勢的做法。

而如果將它應用到防護方面,在大數量使用者的基礎上,可以做到自動、快速的病毒特徵碼提取,將大量網際網路客戶端的資料上交到伺服器,並且可以將特徵碼即時放置在雲伺服器病毒庫,在有使用者查詢時,又能做到即時的反饋,直接提高了對新出病毒的反映速度。而這種防護式的雲檢測,對速度要求遠低於雲查殺的強度。

介於以上原因,本書中設計的防毒軟體,將使用此種雲安全防護技術。

2.3.升級

防毒軟體,需要帶有病毒庫,病毒庫是病毒特徵碼的集合,防毒軟體效能的強弱在很大程度上依賴於病毒庫。病毒庫是很龐大的,通常有幾十MB,甚至上百MB,因為它要存放幾十萬上百萬的病毒特徵碼。最新最全的病毒庫放置在網路中的伺服器端,為了實時的將病毒庫更新到客戶機器,便需要用到下載升級功能。這是防毒軟體的輔助的功能,卻也是必不可少的。

另一方面,升級功能也用於更新防毒軟體的功能模組,以方便戶在不必重新下載安裝軟體即可使用到最新最穩定的功能。

2.4.自我保護

防毒軟體需要一定的自我保護能力甚至是絕對的自我保護能力,以防止被病毒或其它惡意軟體強行將自身程序結束,換句話說,即是要防止沒殺掉病毒反被病毒殺掉。

很多病毒木馬為了提高生存率,會與防毒軟體對抗,反殺防毒軟體。比如某些病毒木馬在執行時,會檢測系統中是否已經安裝了防毒軟體,如果檢測到,會想盡辦法終止防毒軟體,以方便進一步入侵系統。此時,防毒軟體必須有足夠的能力自保,以確認能夠擊敗病毒。

當然,防毒軟體的主要功能是保護系統的正常執行,而不是與病毒木馬進行技術對抗,在使用自我保護功能時,需多方面考慮,即不過份影響系統性能和穩定性又能確保系統安全為最佳。

2.5.黑白名單

黑白名單是一個簡化的特徵碼庫,輔助病毒庫工作。

有了病毒庫,為什麼還要使用黑白名單?

病毒庫中存放的是病毒木馬的特徵碼,有某些情況下,除了病毒木馬還有一些邊緣軟體,不屬於病毒木馬範疇,不會對系統造成危害,但它會對系統產生一些不好的影響,比如某些P2P線上影音軟體的後臺程式,會將機器做為一臺種子機器,不停的上傳下載電影,佔用大量寶貴的頻寬和流量、比如某些聊天軟體登入時彈出的廣告等等。這些軟體是正常電腦使用不需要的,但它卻是某些正常軟體附加軟體,出於多種原因的考慮,不能將其列入到病毒庫,那麼只能使用黑名單功能阻止其執行。

甚至是系統中存在的某些正常軟體,因為一些個人原因想阻止它的啟動,等等這些都可以使用黑名單功能。

至於白名單,與此恰恰相反。比如一些除錯工具,往往被歸為惡意工具的一種而被列入病毒庫,如果出於工作或其它需要需要使用這些工具,則需要使用白名單功能使期能夠執行而不被防毒軟體阻止。

歸結起來,黑白名單的存在,是為了擴充病毒庫的使用範圍,和減少防毒軟體的誤報率。

2.6.設定

防毒軟體需要提供合理自由的設定選項,對軟體功能進行配置,以符合使用者的使用習慣。

比如是否使用右鍵選單。檔案及資料夾的右鍵選單可以使掃描病毒等工具簡單化,但有的使用者卻不喜歡在右鍵選單中增加過多的內容而寧可使用自定義掃描。

比如是否要讓軟體在系統啟動後自動執行、是否開啟自動保護、是否啟用雲安全等等。

細節決定成敗,使用者使用軟體的舒適度,決定著使用者對軟體的忠誠度。

2.7.介面

除了功能性方面,軟體介面也是不可忽視的一部分,對使用者而言,基本功能相近的情況下,選擇一款軟體時,往往會根據對軟體介面的第一感覺進行選擇。

介面不單單是美工、設計的事,在程式設計中巧妙的利用技巧對介面進行美化、優化也會起到非常好的效果。比如可以做換膚、動態按鈕、顯示特效等等。

2.8.其它

除上面介紹到的具體功能外,軟體中還需要對版本號、病毒庫日期等使用者較為關心的相關資訊在介面中合理的位置進行顯示。在以上的設計理念中,多次提到了對使用者的感受,之所以要多次提及,是因為不管設計任何軟體,都是以使用者使用、為使用者解決問題為目的,設計防毒軟體當然也不例外,一方面設計功能,一方面也要考慮使用者體驗。

以上,對於功能的設計已經寫完了,到此也許有疑惑:防毒引擎呢?主動防禦呢?為什麼都沒有說到。

誠然,在各種防毒軟體的推廣宣傳詞中,常會到見各自引擎的名稱,甚至是雙引擎、四引擎,好似引擎越多功能越強大,當然在大多數使用者認知當中也確實會是這樣。那麼防毒引擎倒底是什麼呢?它是檢測和查殺病毒的方式,比如在掃描一個檔案時,首先獲取它的特徵碼,然後與病毒庫中的病毒特徵碼進行比對,如果確認是病毒,對它進行查殺,如果是感染型病毒,需要對檔案重寫,還原檔案入口點,等等這一系列操作組合整合起來就是防毒軟體的引擎。對源程式而言它就是一部分程式碼。同理,主動防禦也只是防毒功能而已。

是否有這種一種感覺:宣傳中那樣神祕莫測的防毒引擎原來不過如此。

注:作者:wing qq:6465660 本書理論及功能、程式碼源於防毒軟體:“Ty2y防毒軟體”,作者授意,文章可自由轉載,只需註明原出處即可,特此說明。