計算機病毒能夠以毒攻毒嗎?

醫學上都有以毒攻毒,那計算機病毒可以嗎?


能。

我五年級的時候,整天泡在小學的機房搞NOIP。那時候正好流行Autorun病毒,U盤那時候還是新興的東西(至少當時的我還在拿著一張3.5inch雙面高密度軟盤滿學校亂跑呢),Autorun病毒們就借著U盤和區域網還有裝了硬碟保護系統從而沒法打補丁(但是有幾個分區是沒有保護的所以病毒得以留存)的Windows XP滿世界傳播。

但是Autorun病毒的入口點只有一個:autorun.inf(至少當時還是如此)。所以,不同病毒之間會互相爭搶這個入口點,有時候就會出現autorun.inf被改動從而找不到文件的情況(互相攻擊,互相刪文件)。當時年幼的我用了四年級時候百度而得的顯示屬性為+S+H+R的文件的方法和一點點英語能力,順利找到了病毒的運行機理。

然後我寫了個.bat把整個機房的殘餘病毒文件殺光光了。滿滿的成就感。


360不就是以毒攻毒嗎?


有良性的病毒,以專殺另外一種病毒而生存的

典型的例子 曾經出現過一款扼殺紅色代碼為目的的病毒 叫 綠色代碼

詳情翻閱 病毒技術詳解 內本前輩書尋求答案。(抱歉 具體的忘記了)

之所以說 良性病毒 的定義 不嚴謹的來說呢 就是 具備病毒的 自我複製、傳播、等特性

但是它的破壞性目的只針對另外一個病毒,而非用戶本身。

歡迎拍磚


傳說的鐵芯大戰,貝爾實驗室的三位小夥子自編的程序互殺遊戲,如果這是真實的故事的話,應該算是最早的以毒攻毒的程序病毒戰。

理論上,如果系統資源有限,病毒以佔用系統資源並搶奪其他程序的資源為目的(或獨佔控制一切能有利於其傳播的資源為目的),並且具有檢測其他程序並自我完善的能力,或者病毒就能以毒攻毒,或者另一種說法就是,互P。


拋磚引玉,只在大一的時候粗略地掃過一些計算機病毒相關的書籍,多年未接觸專業術語基本忘光.

病毒原理

因為計算機病毒相互篡改宿主文件,導致其中一些病毒無法再次運行是可行的.所以針對某病毒A,編寫專門的清除病毒B,讓B自動傳播並刪除所有宿主機上面的A病毒絕對可行.

這其中的原理要翻一下計算機病毒原理相關的書籍.簡述一下,一個完整的病毒主體應該包括:

  • 入侵模塊:這個功能負責篡改宿主文件,將病毒自身的所有代碼寫入宿主文件.一般會篡改文件頭部,實現在運行宿主文件時,病毒先執行完畢再調用宿主文件執行.病毒通常會入侵系統的關鍵進程相關的文件.
  • 駐留內存模塊:這個功能是主體,負責運行病毒,並在運行病毒之後運行宿主文件的主體代碼,使其在內存中與宿主文件共同的駐留.
  • 自複製模塊:這個功能負責將病毒代碼寫入宿主文件,會使用加密及加殼等操作避免病毒代碼被識別.

  • 特徵碼模塊:這個功能負責按照某種規則生成特徵碼,為了避免病毒寫入重複的內容到宿主文件中,或者反覆執行病毒文件,導致系統太慢,病毒的作者一般會編寫具有某種規則的特徵碼到宿主文件中做為識別.當檢測到宿主文件中具有特徵碼,就不會再寫入,當檢測到內存中已駐留病毒,就不再運行.
  • 自保護模塊:這個功能負責駐留內存.
    • 定時調用自複製模塊保護宿主文件中的病毒源代碼,避免出現病毒源代碼被清除.
    • 定時檢測病毒是否運行,如果運行的病毒主體被關閉,它會重新調用病毒文件,保證病毒主體一直在內存駐留,這個功能一般會做好幾個鉤子駐留在不同的系統進程中,實現相互保護的作用.

一個系統的主要文件並不多,常駐內存的更少,所以大量的病毒入侵的宿主文件基本相同,由於病毒爭奪的是宿主文件的文件頭,會出現一個宿主文件頭部被寫入n個病毒的執行代碼,一旦宿主文件運行,這n個病毒就會按寫入的順序先後執行,最後才會執行宿主文件.

清除病毒的原理

要實現清除某種病毒,有以下步驟:

  • 識別病毒的特徵碼
  • 關閉並清除病毒駐留內存的自保護鉤子,防止病毒再次運行.
  • 關閉並清除內存中駐留的病毒.
  • 清除宿主文件中的病毒代碼.

所以要讓病毒B(或者叫疫苗B)具有清除A病毒的功能,它除了要具備病毒的所有功能以外,要在主體中具有清除某病毒的功能,當然這樣的病毒也可以設置自刪除的功能,在運行多長時間之後自我清除.

八卦一把

在黑色產業鏈中病毒是入侵用戶的第一軍團,作用就是入侵用戶的電腦,奪取運行許可權,黑產中的人員會購買成功免殺的病毒,將其與木馬結合.當病毒成功入侵系統獲得運行許可權之後,再運行下載木馬,運行木馬等功能.通過木馬竊取更多用戶信息.所謂殺毒軟體的雲更新,早在很多年前已經被哪些黑色產業鏈的人員玩爛了.

只入侵,不破壞的病毒可能有很多沒有被發現,說不定就潛伏在某台電腦上,等待著下載服務端的木馬文件.


Nematode

A Nematode is a computer virus or worm that attempts to remove another virus. Nematodes have existed as long as viruses and worms themselves have. The idea is extremely controversial with most in the antivirus industry being strongly against it.

Nematode - The Virus Encyclopedia


病毒 本身就是程序軟體。。。殺毒不就是一個程序搞另一個程序么?於是產生了紅客和黑客


如果說要以「毒」來殺毒,只要稱之為「毒」,就一定會對電腦有破壞性作用,不然就成殺毒軟體了。 病毒可以互不干擾,編程人員應該不會費那個時間去殺掉某種病毒。


可以很確定的說,可以,但是有副作用。

因為一切病毒都是以駐留,傳播,破壞,竊取數據為目的,所以就算A病毒把B病毒給幹掉了,但是A病毒還是要留在你的電腦里。不會消失。


每種病毒的機制和破壞性都是不一樣,所以很多病毒可以共存。比如最多的木馬病毒一個機子就可以共存N個。共存不同類型的病毒,一般各個病毒都能發揮自己本來的破壞力,最終的破壞力以破壞力最大病毒為準,很少存在以毒攻毒的情況,比如機器狗+宅男病毒+CIH,該怎麼破壞怎麼破壞,幾乎不干擾。


本質上都是計算機程序,至於程序用來幹什麼,取決於寫程序的人,所以是絕對有可能的


題主啊,殺毒軟體的本質其實也是病毒

它們是一群干擾病毒正常工作的病毒


在當今互聯網,存在一種情況,就是黑吃黑:一個病毒在自我運行正常的前提下,破壞另一個病毒,讓它無法運行。


病毒,或者廣義地說流氓軟體,其實說白了就是偷偷的在系統後面做事不告訴你。好像在你身體里工作而你看不見一樣。殺毒軟體好比白細胞,在體內(計算機內)有超高許可權吃別的他認為不好的細胞(程序)。吃啊吃啊吃啊吃啊。你說殺軟和病毒有什麼區別呢?一個你知道的病毒去殺另一個罷了。


計算機病毒是程序軟體。你說程序軟體能攻擊程序軟體嗎?


推薦閱讀:

深入PCI與PCIe之二:軟體篇
什麼樣的技術 Leader 是稱職的?
做遊戲,學編程(C語言) 5 數組之生命遊戲
給你講個來自《格列佛遊記》的計算機故事
學會網頁製作需要多長時間?

TAG:計算機技術 | 計算機病毒 |