當前位置:生活全書館 >

綜合知識

> 病毒感染簡寫怎麼寫

病毒感染簡寫怎麼寫

1.什麼叫病毒感染

病毒感染是個極其複雜的過程,感染方式多樣,結果各異,病毒屬於亞細胞結構,只有屬於自己的核酸及其他一些必需的最簡結構。

病毒感染簡寫怎麼寫

病毒的感染可分為增殖性感染和非增殖性感染兩種型別。

增殖性感染:發生在病毒能在其內完成複製迴圈的允許細胞內,並以有感染性病毒子代產生為特徵

非增殖性感染:由於病毒或是細胞的原因,致使病毒的複製在病毒進入敏感細胞後的某一階段受阻,結果導致病毒感染的不完全迴圈。有三種類型:流產感染、限制型感染、潛伏感染。

從機體水平來說,病毒感染就是外源基因對被侵染體的侵略,結果是病毒基因取代宿主基因,宿主死亡(SARS病毒,致病性禽流感病毒都屬於這類),病毒被宿主免疫系統消滅(常見的病毒性感冒),或病毒整合於宿主基因(對於單細胞生物或簡單的多細胞生物來說相當於產生了一個新的物種)或潛伏於宿主細胞內發揮其作用(癌症的一個重要原因)

從細胞水平來說,被病毒感染的細胞都要面臨著死亡或“變態”。一些細胞被病毒侵入後,病毒分解和利用其內部的各種物質來完成子代病毒的複製,最終導致細胞死亡解體;另一些病毒侵入細胞後,不直接分解細胞,而是產生了其他的生物學效應使細胞形態變化,如果機體的免疫系統能夠識別這種變化,細胞將會自行被機體殺死(細胞凋亡),如果不能識別,則很有可能產生癌變等嚴重後果,hiv病毒能直接破壞人的免疫系統。

從分子水平說,病毒自身並不進行生產,他只是利用宿主細胞的各種分子和能量來完成他們自身攜帶基因所賦予他們的生命週期。

所以,總的說來,病毒是一種最純粹的生物,他對於我們理解物種的產生和基因的演變是很有用的。

病毒是一種比細菌小的可以導致感染的微生物,當它對人體細胞進行侵犯時,也就是病毒感染了.病毒通常在接觸人體時,人體的表皮和黏膜等防禦機制無法抵擋住時,病毒也就開始感染人體了.病毒分了很多種,會導致不同的疾病,象引起感冒的病毒,通常過了一個週期大概1周的樣子,也就消失了,如果不是因為機體抵抗力不夠而引起繼發性細菌感染,感冒自己也就好了.而象肝炎病毒,則會長期和機體之間戰鬥,如果機體贏了,那肝炎病毒就處於靜止期,如果輸了,那就會導致出現明顯症狀的肝炎,這時候就需要抗病毒治療了.針對不同的病毒,用不同的藥

2.怎樣編寫病毒

1.1病毒程式VIRUS.C

這是一個用C語言寫的病毒程式,當激發病毒程式時顯示時間,然後返回。病毒程式VIRUS.C可將病毒傳染給一個C語言程式。當被病毒感染的程式經編譯、連線和執行後,又可以將病毒部分傳染給其他的C語言源程式。每執行一次帶有病毒的C語言程式,就向C語言源程式傳播一次病毒。此程式的設計思路如下:

當含有病毒部分的程式被執行時,首先進入病毒程式。它在磁碟上找副檔名為C的匹配檔案,如果找到,查詢是否有被傳染過的標誌“INFECTED”。如果有此標誌,繼續找其它的C檔案,直至全部檢查一遍。若沒有這個標誌,則

(1)在未被感染的C程式頭部加入“INFECTED”已被傳染標誌。

(2)讀取病毒檔案的標頭檔案,將其插入到即將被感染的檔案頭部。如果發現有重複則不插入。

(3)在主程式中插入“VIRUSES();”呼叫VIRUSES函式。尋找printf、for、while、break語句,如果找到就在之前插入。

(4)在檔案尾部插入VIRUSES_SUB子程式。

(5)在插入到將感染檔案裡面的VIRUSES_SUB子程式裡面,必須把檔名改為當前自身的檔名,否則被傳染後的檔案經過編譯、連線和執行後不能再繼續傳染。

(6)最後插入VIRUSES子程式。這個子程式裡面呼叫了VIRUSES_SUB,執行到這裡返回執行結果資訊。

其中用到4個出錯的返回值,分別是:

1:使用者檔案太大,不傳染;

2:帶病毒檔案打不開,不傳染;

3:帶病毒檔案讀取不成功,不傳染;

4:查詢第一個匹配檔案不成功。

如果返回值是0代表檔案傳染成功。

具體實現過程如下:

其中用到的函式和結構體用法參考3.3節。

首先匯入病毒子程式要用到的三個庫檔案,分別是dir.h, stido.h, dos.h.在主函式裡面只調用VIRUSES函式。緊跟定義VIRUSES函式裡面要呼叫的VIURS_SUB函式。裡面定義了若干個變數。ffblk用來儲存查詢到的匹配檔案的資訊,用到裡面的ff_name變數來儲存匹配檔名。

然後定義儲存未感染的檔案和病毒檔案的檔案型指標變數,分別用是*virus_r和*virus_v.讀取檔案的緩衝區,放到二維陣列a[500][80]裡面臨時存放。因為此程式對大於500行的C檔案不進行傳染,所以完全可以放到裡面。首先用getdate函式獲取系統當前日期並輸出。接著用findfirst函式查詢副檔名為C的檔案,將其資訊儲存到ffblk裡面。用fgets函式讀檔案的第一行,長度是80-1個字元。然後用strstr函式檢測病毒的標誌,看檔案是否有INFECT這個標誌。

如果有,表示檔案已經被傳染,關閉檔案,不進行傳染。當含有病毒部分的程式被執行時,首先進入病毒程式。它在磁碟上查詢*.C的匹配檔案,一旦找到,查詢“已被傳染過”的標誌INFECTED。若有此標誌,繼續找其它*.C檔案,直至全部檢查一遍。

如果沒有這個標誌,將檔案全部讀入a[500][80],如果發現檔案超過500行,不傳染,返回。將檔案指標指向檔案頭,開啟帶病毒的檔案。如果打不開,返回。

然後讀取帶病毒檔案的前4行,也就是病毒子程式要用到的標頭檔案,寫入將被傳染的檔案。若不能讀取帶病毒檔案,返回。用n_line變數控制行數,把將被傳染檔案的源程式寫回原檔案。其中要進行處理不寫入病毒檔案已有的包含語句,也就是說使#Include語句不重複。

這點是這樣實現的:定義一個字元陣列char include_h[]=; strstr函式檢視將被傳染檔案的標頭檔案是否和*include_h[]相同,如果相同,。

3.病毒是怎麼寫出來的

組合語言底層,靈活,速度快,體積小的優勢能將一個病毒程式發揮到極至,通常一個程式寫出來才幾千位元組就包含了所有的功能。

一般一個病毒都有如下幾個功能:一 程式碼重定位 二 自己找到所需API地址 三 搜尋檔案、目錄 四 感染檔案 五 破壞系統或檔案(隨便你了) 其中一,二項功能是必要的,五項功能是可選的。而一個病毒程式感染檔案的功能是它的核心,是衡量它質量的重要標準。

(一)程式碼的重定位 一個變數或函式其實是一個記憶體地址,在編譯好後,程式中的指令通過變數或函式的記憶體地址再去存取他們,這個地址是個絕對地址。如果你將程式碼插入到其他任何地方,再通過原來編譯時產生的地址去找他們就找不到了,因為他們已經搬家了。

但是,在寫程式時考慮到這個問題,可以在程式碼最開始,放上幾行程式碼取得程式基地址,以後變數和函式作為偏移地址,顯式的加上這個基地址就能順利找到了,這就是重定位。就象這段程式碼。

Call getbaseaddress Getbaseaddress:pop ebx Sub ebx,offset getbaseaddress Mov eax,dword ptr [ebx+Var1] 如果使用巨集組合語言寫病毒,請儘量使用ebx做基地址指標,不要使用ebp,因為ebp在呼叫帶引數的函式時會改變。(二)自己取得所需的API地址 一個win32程式檔案,所呼叫的API函式地址,是由系統填入到程式檔案中描述各類資料位置的資料結構中的。

而病毒作為一個殘廢是享受不到這個待遇的。因為你在把病毒的程式碼插入目標程式時沒有把這些描述資料存放位置的資料結構資訊也弄進去。

它被插入到其他目標程式後就成了只有程式碼的殘廢兒童:(所以作為一個殘廢兒童,應當自力更生。自己搜尋自己需要的API地址。

目標程式檔案就包含了我們需要的東西,需要自己去找。目標程式檔案只要還是win32程式,它的地址空間中就包含的有Kernel32.dll。

如果找到了它,就能找到其他任何的東東。第一步,搜尋kernel32.dll的基地址。

當然了,整個地址空間有4GB,可供搜尋的使用者程序空間也有2GB。在2GB中搜索,太嚇人了。

在程式被載入後,載入程式會呼叫程式的主執行緒的第一條指令的位置。它使用的指令是CALL,就是說,程式還沒執行,堆疊區裡就有了一個返回地址了,這個返回地址指向的是載入程式,而載入程式是包含在KERNEL32.dll中的,順著它向上找,就能找到kernel32.dll的基地址了。

當然也不是一個位元組一個位元組的挨者找,而是一個頁面一個頁面地找。因為win32下,程式碼或資料的開始位置總是頁面單位(windows平臺下為4kb)對齊的。

Kernel32.dll是一個PE檔案,按比較PE檔案dos簽名標誌和PE簽名標誌的方法找。另外還有個辦法是通過SHE技術找。

這是最好的辦法了,前一個辦法因為堆疊是動態的原因不穩定,一般只能將獲取地址的程式碼塊放在最開頭,這個方法完全是與堆疊無關的,放在哪裡執行都不會出錯,如果你的病毒需要用一些遠端執行緒之類的技術,最好用這個方法。SHE結構,第一個成員指向下一個SEH結構,如果是最後一個那麼它的值就是0ffffffffh。

第二個成員指向異常處理函式,如果是最後一個SHE結構且沒有指定的話,預設的是函式地址。當異常觸發這個函式時就會彈出一個對話方塊,問你發不傳送錯誤。

98下顯示藍屏。這個函式是包含在KERNEL32.dll中的,只要取得它的地址向上找就能找到KERNEL32.dll的基地址了。

在說SHE時總忘不了TEB,TEB是建立一個執行緒時分配的執行緒相關的資料結構,SHE只是它開頭第一個資料結構體而已。它還包含了其他許多重要的東西,TEB由FS段選擇器指向,有興趣的查查資料,這裡篇幅原因就不再多說了。

接著上面的,看看如何找函式地址。先根據“下一個”SHE結構的值定位到最後一個SHE結構,這時取出she處理函式的地址,就是函式地址了,以頁面為單位向上找就可以找到Kernel32.dll了/ 得到Kernel32.dll的基地址後,定位到它的匯出表,找出GetProcAddress地址再利用GetProcAddress就能找到其他任何所需要的函數了。

在搜尋API時應該注意API的名字,API的名字實際的匯出名字很有可能不是你呼叫時的名字,windows下很多API都有兩個版本ANSI版和UNICODE版,ANSI版函式名字尾帶個A,比如CreateWindowExA,,而UNICODE版的函式名帶個W字尾,比如CreateWindowExW。不過考慮到麻煩問題,現有的很多編譯器都不讓你寫字尾,只是在編譯的時候根據你程式是ANSI版的還是UNICODE版的自動改名字。

Win2K以後的API函式都是Unicode 版本的,如果呼叫ANSI版本的函式,系統只是將函式中的字串通過程序預設堆將其轉換成Unicode字串,再呼叫Unicode版的API。Unicode是個發展方向,大家應該養成使用它的習慣而不是ANSI。

(三)搜尋檔案、目錄 主要是用FindFirstFile,FindNextFile,FindClose.這三個函式實現。值得注意的是在用“*.*”搜尋字串時得到的是程式檔案所在目錄的所有檔案和目錄。

而GetCurrentDirectory取得的是系統當前的目錄。後者是隨時會隨著使用者的操作而改變的,前者只會隨著目標程式檔案的位置改變而改。

4.病毒感染的型別

有兩種,多數為隱性感染(亞臨床感染),少數則bai發生顯性感染。顯性感染可分急性感染和持續性感染兩型急性感染:發病急,進du展快,病程一般為數日至數週。除少數在急性期死亡及發生後遺症者外,多數病例最終以組織器官中病毒被清除而痊癒。

持續zhi性感染:病毒長期存在於寄主體內,可達數月至數年,造成慢性持續性感染,又可分以下3型:①潛伏性感染。當病毒與人體免疫力dao處於相對平衡狀態時,病毒可長期潛伏在人體組織內,不引起症狀。一旦人體免疫力降低,病毒可重新繁殖而引起症狀。例如單純皰疹病毒、EB病毒和水痘-帶狀皰疹病毒引起的潛伏性專感染。②慢性感染。病毒長期存在人體組織器官中,造成慢性持續性病變,如乙型肝炎病毒引起的屬慢性乙型肝炎。③慢病毒感染。潛伏期長,可達數年,病變逐漸發展,最後導致死亡。

5.如何計算病毒的感染複數MOI

其公式為:P = 1- P(0) ,P(0) = e-m 或m = -InP(0)。

一般認為MOI是一個比值,沒有單位,其實其隱含的單位是pfu number/cell。後來MOI被普遍用於病毒感染細胞的研究中,含義是感染時病毒與細胞數量的比值。

然而,由於病毒的數量單位有不同的表示方式,從而使MOI產生了不同的含義。能產生細胞裂解效應的病毒例如單純皰疹病毒等習慣上仍用pfu表示病毒數量,因此其MOI的含義與傳統的概念相同。

傳統意義上的MOI的測定,其原理是基於病毒感染細胞是一種隨機事件,遵循Poisson分佈規律,可計算出感染一定比例的培養細胞所需的感染複數(MOI)。

擴充套件資料:

感染的多樣性,複數感染。傳統的MOI概念起源於噬菌體感染細菌的研究。它表示噬菌體數量與感染期間細菌數量的比率,即每個感染細菌的平均噬菌體數量。

實際上,隱含單位是PFU編號/單元格後來,MOI被廣泛用於病毒感染細胞的研究,這意味著感染時病毒與細胞數量的比例。

噬菌體的數量單位是pfu。通常認為MOI是比率且沒有單位。

參考資料來源:百度百科——感染複數

標籤: 簡寫 病毒感染
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/zonghezhishi/9n9r9k.html