




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章計算機病毒結構分析本章學習目標了解COM、EXE、NE、PE可執行文件格式掌握引導型病毒原理及實驗掌握COM文件病毒原理及實驗掌握PE文件型病毒及實驗總體概念DOS病毒定格在5000多種DOS是VXer的樂園(Aver)9x病毒ring3,ring02K病毒主要是ring3Windows文件格式變遷:COMEXE:MZ->NE->PEVxd:LE(16Bit,32Bit)章節主要內容
一、引導型病毒編制原理及實驗二、16位COM可執行文件病毒原理及實驗三、32位PE可執行文件病毒原理及實驗一、引導型病毒編制原理及實驗PC引導流程加電CPU\BIOS初始化POST自檢引導區、分區表檢查發現操作系統執行引導程序引導區病毒取得控制權的過程:MBR和分區表裝載DOS引導區運行DOS引導程序加載IO.sysMSDOS.sys加載DOS1正常的引導過程引導型病毒從軟盤加載到內存尋找DOS引導區的位置將DOS引導區移動到別的位置病毒將自己寫入原DOS引導區的位置2用被感染的軟盤啟動MBR和分區表將病毒的引導程序加載入內存運行病毒引導程序病毒駐留內存原DOS引導程序執行并加載DOS系統3病毒在啟動時獲得控制權引導區病毒實驗【實驗目的】通過實驗,了解引導區病毒的感染對象和感染特征,重點學習引導病毒的感染機制和恢復感染染毒文件的方法,提高匯編語言的使用能力。【實驗內容】本實驗需要完成的內容如下:引導階段病毒由軟盤感染硬盤實驗。通過觸發病毒,觀察病毒發作的現象和步驟學習病毒的感染機制;閱讀和分析病毒的代碼。DOS運行時病毒由硬盤感染軟盤的實現。通過觸發病毒,觀察病毒發作的現象和步驟學習病毒的感染機制;閱讀和分析病毒的代碼。【實驗環境】VMWareWorkstation5.5.3MS-DOS7.10【實驗素材】附書資源experiment目錄下的bootvirus目錄。實驗過程第一步:環境安裝安裝虛擬機VMWare,在虛擬機環境內安裝MS-DOS7.10環境。安裝步驟參考附書資源。第二步:軟盤感染硬盤1、運行虛擬機,檢查目前虛擬硬盤是否含有病毒。如圖表示沒有病毒正常啟動硬盤的狀態。2、在附書資源中拷貝含有病毒的虛擬軟盤virus.img。3、將含有病毒的軟盤插入虛擬機引導,可以看到閃動的字符*^_^*,如左圖4。按任意鍵進入右圖畫面。第三步:驗證硬盤已經被感染1、取出虛擬軟盤,通過硬盤引導,再次出現了病毒的畫面。2、按任意鍵后正常引導了dos系統。可見,硬盤已經被感染。第四步:硬盤感染軟盤1、下載empty.img,并且將它插入虛擬機,啟動電腦,由于該盤為空,如圖顯示。2、取出虛擬軟盤,從硬盤啟動,通過命令formatA:/q快速格式化軟盤。可能提示出錯,這時只要按R即可。如圖所示。3、成功格式化后的結果如圖所示。4、不要取出虛擬軟盤,重新啟動虛擬機,這時是從empty.img引導,可以看到病毒的畫面,如左圖所示。按任意鍵進入如右圖畫面。可見,病毒已經成功由硬盤傳染給了軟盤。
二、16位COM可執行文件病毒原理及實驗COM格式最簡單的可執行文件就是DOS下的以COM(CopyOfMemory)文件。COM格式文件最大64KB,內含16位程序的二進制代碼映像,沒有重定位信息。COM文件包含程序二進制代碼的一個絕對映像,也就是說,為了運行程序準確的處理器指令和內存中的數據,DOS通過直接把該映像從文件拷貝到內存來加載COM程序,系統不需要作重定位工作。加載COM程序DOS嘗試分配內存。因為COM程序必須位于一個64K的段中,所以COM文件的大小不能超過65,024(64K減去用于PSP的256字節和用于一個起始堆棧的至少256字節)。如果DOS不能為程序、一個PSP、一個起始堆棧分配足夠內存,則分配嘗試失敗。否則,DOS分配盡可能多的內存(直至所有保留內存),即使COM程序本身不能大于64K。在試圖運行另一個程序或分配另外的內存之前,大部分COM程序釋放任何不需要的內存。分配內存后,DOS在該內存的頭256字節建立一個PSP(ProgramSegmentPrefix:程序段前綴)。創建PSP后,DOS在PSP后立即開始(偏移100H)加載COM文件,它置SS、DS和ES為PSP的段地址,接著創建一個堆棧。DOS通過把控制傳遞偏移100H處的指令而啟動程序。程序設計者必須保證COM文件的第一條指令是程序的入口點。因為程序是在偏移100H處加載,因此所有代碼和數據偏移也必須相對于100H。匯編語言程序設計者可通過置程序的初值為100H而保證這一點(例如,通過在源代碼的開始使用語句org100H)。PSP結構偏移大小
長度(Byte)
說明
0000h
02
中斷20H
0002h
02
以節計算的內存大小(利用它可看出是否感染引導型病毒)
0004h
01
保留
0005h
05
至DOS的長調用
000Ah
02
INT22H入口IP
000Ch
02
INT22H入口CS
000Eh
02
INT23H入口IP
0010h
02
INT23H入口CS
0012h
02
INT24H入口IP
0014h
02
INT24H入口CS
0016h
02
父進程的PSP段值(可測知是否被跟蹤)
0018h
14
存放20個SOFT號
002Ch
02
環境塊段地址(從中可獲知執行的程序名)
002Eh
04
存放用戶棧地址指針
0032h
1E
保留
0050h
03
DOS調用(INT21H/RETF)
0053h
02
保留
0055h
07
擴展的FCB頭
005Ch
10
格式化的FCB1
006Ch
10
格式化的FCB2
007Ch
04
保留
0080h
80
命令行參數長度
0081h
127
命令行參數MZ格式MZ格式:COM發展下去就是MZ格式的可執行文件,這是DOS中具有重定位功能的可執行文件格式。MZ可執行文件內含16位代碼,在這些代碼之前加了一個文件頭,文件頭中包括各種說明數據,例如,第一句可執行代碼執行指令時所需要的文件入口點、堆棧的位置、重定位表等。裝載過程:操作系統根據文件頭的信息將代碼部分裝入內存,然后根據重定位表修正代碼,最后在設置好堆棧后從文件頭中指定的入口開始執行。DOS可以把MZ格式的程序放在任何它想要的地方。MZ標志MZ文件頭其它信息重定位表的字節偏移量重定位表重定位表可重定位程序映像二進制代碼//MZ格式可執行程序文件頭structHeadEXE{WORDwType;//00HMZ標志WORDwLastSecSize;//02H最后扇區被使用的大小WORDwFileSize;//04H文件大小WORDwRelocNum;//06H重定位項數WORDwHeadSize;//08H文件頭大小WORDwReqMin;//0AH最小所需內存WORDwReqMax;//0CH最大所需內存WORDwInitSS;//0EHSS初值WORDwInitSP;//10HSP初值WORDwChkSum;//12H校驗和WORDwInitIP;//14HIP初值WORDwInitCS;//16HCS初值WORDwFirstReloc;//18H第一個重定位項位置WORDwOverlap;//1AH覆蓋WORDwReserved[0x20];//1CH保留WORDwNEOffset;//3CHNE頭位置};
NE格式為了保持對DOS的兼容性并滿足Windows的需要,Win3.x中出現的NE格式的可執行文件中保留了MZ格式的頭,同時NE文件又加了一個自己的頭,之后才是可執行文件的可執行代碼。NE類型包括了EXE、DLL、DRV和FON四種類型的文件。NE格式的關鍵特性是:它把程序代碼、數據、資源隔離在不同的可加載區中;藉由符號輸入和輸出,實現所謂的運行時動態鏈接。NE裝載16位的NE格式文件裝載程序(NELoader)讀取部分磁盤文件,并生成一個完全不同的數據結構,在內存中建立模塊。當代碼或數據需要裝入時,裝載程序必須從全局內存中分配出一塊,查找原始數據在文件的位置,找到位置后再讀取原始的數據,最后再進行一些修正。每一個16位的模塊(Module)要負責記住現在使用的所有段選擇符,該選擇符表示該段是否已經被拋棄等信息。MS-DOS頭DOS文件頭保留區域Windows頭偏移DOSStub程序信息塊NE文件頭段表資源表駐留名表模塊引用表引入名字表入口表非駐留名表代碼段和數據段程序區重定位表3COM文件病毒原理感染過程:將開始的3個字節保存在orgcode中.將這3個字節更改為0E9H和COM文件的實際大小的二進制編碼。將病毒寫入原COM文件的后邊。在病毒的返回部分,將3個字節改為0E9H和表達式(當前地址-COM文件的實際大小-病毒代碼大小)的二進制編碼,以便在執行完病毒后轉向執行原程序。E9xxxxResume:E9XXXXE9AAAAAAAAXXXX源代碼:jump源代碼示例講解演示COM病毒COM文件病毒實驗(實驗二)【實驗目的】掌握COM病毒的傳播原理。【實驗平臺】VMWareWorkstation5.5.3MS-DOS7.10MASM611
實驗步驟(1)安裝虛擬機VMWare,安裝步驟參考網上下載的實驗配套資料“解壓縮目錄\Application\MSDOS71\虛擬機上安裝MSDOS.doc”文檔。(2)在虛擬機環境內安裝MS-DOS7.10環境。(3)在MS-DOSC:\MASM目錄下安裝MASM611,然后將binr目錄下的link.exe復制到bin目錄下。(4)從附書資源“experiment\com”下復制病毒程序Virus.asm及測試程序源代碼BeInfected.asm。(5)編譯鏈接BeInfected.asm,形成BeI測試程序。(6)編譯鏈接virus.asm,生成病毒程序virus.exe。(7)在C:\MASM\Bin目錄下建立del.txt文件,并且將BeI和病毒復制到此目錄下。(8)執行BeI,觀察未感染前的運行結果。(9)執行virus.exe文件以感染BeI文件并且自動刪除del.txt。(10)執行BeI觀察感染后的結果。【程序源碼】本實驗以尾部感染COM文件的病毒為例子,其中待感染COM文件源代碼BeInfected.asm、病毒源文件源代碼virus.asm參見附書源代碼。三、32位操作系統病毒示例分析
1PE文件結構及其運行原理2Win32文件型病毒編制技術3從ring3到ring0概述1PE文件結構及其運行原理(1)PE文件格式總體結構
PE(PortableExecutable:可移植的執行體)是Win32環境自身所帶的可執行文件格式。它的一些特性繼承自Unix的Coff(CommonObjectFileFormat)文件格式。可移植的執行體意味著此文件格式是跨win32平臺的,即使Windows運行在非Intel的CPU上,任何win32平臺的PE裝載器都能識別和使用該文件格式。當然,移植到不同的CPU上PE執行體必然得有一些改變。除VxD和16位的Dll外,所有win32執行文件都使用PE文件格式。因此,研究PE文件格式是我們洞悉Windows結構的良機。PE文件結構總體層次分布DOSMZheader‘MZ’格式頭DOSstubDos樁程序PEheaderPE文件頭Sectiontable節表Section1第1個節Section2第2個節……Sectionn第n個節2Win32文件型病毒編制技術Ring-3病毒的兼容性較好Ring-3病毒需要API的支持公開的未公開的技術包括:2.1病毒的重定技術為什么需要重定位?正常程序的變量和函數的相對地址都是預先計算好的。病毒是附加在宿主程序中的程序段,其問題在于:病毒變量和病毒函數的相對地址很難計算。解決方法:動態找一個參照點,然后再根據參照點的地址確定病毒函數和病毒變量的地址。calldeltadelta: popebp…leaeax,[ebp+(offsetvar1-offsetdelta)]參照量delta在內存中的地址+變量var1與參考量之間的距離=變量var1在內存中的真正地址舉例介紹dwVardd?call@F@@:popebxsubebx,offset@Bmoveax,[ebx+offsetdwVar]編譯文件(假設)0040100000000000BYTE4DUP(4)00401004E800000000call00401009004010095Bpopebx;ebx=004010090040100A81EB09104000subebx,00401009;ebx=0004010108B8300104000moveax,dwordprt[ebx+00401000];moveax,00401000;moveax,dwVar如果被定位到00801000處0080100000000000BYTE4DUP(4)00801004E800000000call00801009008010095Bpopebx;ebx=008010090080100A81EB09104000subebx,00401009;ebx=00400000008010108B8300104000moveax,dwordprt[ebx+00401000];moveax,[00801000];moveax,dwVar2.2獲取API函數為什么要獲得API函數?正常程序用引入表獲得病毒只是一個依附在正常程序中的代碼段,沒有自己的引入表思路:去動態連接庫中尋找---〉找相應連接庫(kernel32,user32等)在執行時的基地址。尋找基地址的方法包括(以kernel32為例):a)利用程序的返回地址,在其附近搜索Kernel32的基地址
Kernel32的push在應用程序中用esp在堆棧中獲取。CallCreateProcessCreatePrcess入口Push返回地址Jmp應用程序…PusheaxCallExitThread程序入口ret
OSkernel32.dll應用程序為什么能夠從
4GB
的內存中得到
Kernel32.dll
的基地址呢?其實是這樣的,Dll
有一個非常特殊的特性:當有別的程序調用它的時候,它的文件映象就會動態地映射到調用進程的內存地址空間。一般情況下,一個程序在運行的時候,
Kernel32.dll
這個
Dll
都會被映射到該程序的內存地址空間,成為它的一部分——這樣一來,我們就可以在宿主的內存地址空間中搜索到
Kernel32.dll
的基地址了.例子GetKBase:movedi,[esp+04h];這里的esp+04h是不定的,主要看從程序第一條指令執行到這里有多少push;操作,如果設為N個push,則這里的指令就是Movedi,[esp+N*4h]andedi,0FFFF0000h.whileTRUE.ifDWORDptr[edi]==IMAGE_DOS_SIGNATURE;判斷是否MZmovesi,ediaddesi,DWORDptr[esi+03Ch];esi指向PE標志.ifDWORDptr[esi]==IMAGE_NT_SIGNATURE;是否有PE標志.break;如果有跳出循環.endif.endif
subedi,010000h;分配粒度是10000h,dll必然加載在xxxx0000h處.ifedi<MIN_KERNEL_SEARCH_BASE;MIN_KERNEL_SEARCH_BASE等于70000000Hmovedi,0bff70000h;如果上面沒有找到,則使用Win9x的KERNEL地址.break.endif.endwmovhKernel32,edi;把找到的KERNEL32.DLL的基地址保存起來
b)對相應操作系統分別給出固定的Kernel32模塊的基地址對于不同的windows操作系統來說,Kernel32模塊的地址是固定的,甚至一些API函數的大概位置都是固定的。Windows98為BFF70000Windows2000為77E80000 WindowsXP為77E60000缺點是兼容性差GetAPI在得到了Kernel32的模塊地址以后,我們就可以在該模塊中搜索我們所需要的API地址。對于給定的API,可以通過直接搜索Kernel32.dll導出表的方法來獲得其地址.同樣我們也可以先搜索出GetProcAddress和LoadLibrary兩個API函數的地址,然后利用這兩個API函數得到我們所需要的API函數地址。2.3文件搜索
FindFirstFile:該函數根據文件名查找文件;FindNextFile:該函數根據調用FindFirstFile函數時指定的一個文件名查找下一個文件;FindClose:該函數用來關閉由FindFirstFile函數創建的一個搜索句柄;WIN32_FIND_DATA:該結構中存放著找到文件的詳細信息。FindFileProca)
指定找到的目錄為當前工作目錄b)
開始搜索文件(*.*)c)
該目錄搜索完畢?是則返回,否則繼續d)
找到文件還是目錄?是目錄則調用自身函數FindFile,否則繼續e)
是文件,如符合感染條件,則調用感染模塊,否則繼續f)
搜索下一個文件(FindNextFile),轉到C繼續FindFileEndp2.4內存映射文件內存映射文件提供了一組獨立的函數,這些函數使應用程序能夠像訪問內存一樣對磁盤上的文件進行訪問。這組內存映射文件函數將磁盤上的文件的全部或者部分映射到進程虛擬地址空間的某個位置,以后對文件內容的訪問就如同在該地址區域內直接對內存訪問一樣簡單。這樣,對文件中數據的操作便是直接對內存進行操作,大大地提高了訪問的速度,這對于計算機病毒來說,對減少資源占有是非常重要的。應用步驟a)調用CreateFile函數打開想要映射的HOST程序,返回文件句柄hFile。b)調用CreateFileMapping函數生成一個建立基于HOST文件句柄hFile的內存映射對象,返回內存映射對象句柄hMap。c)調用MapViewOfFile函數將整個文件(一般還要加上病毒體的大小)映射到內存中。得到指向映射到內存的第一個字節的指針(pMem)。d)用剛才得到的指針pMem對整個HOST文件進行操作,對HOST程序進行病毒感染。e)調用UnmapViewFile函數解除文件映射,傳入參數是pMem。f)調用CloseHandle來關閉內存映射文件,傳入參數是hMap。g)調用CloseHandle來關閉HOST文件,傳入參數是hFile。2.5病毒如何感染其他文件PE病毒感染其他文件的常見方法是在文件中添加一個新節,然后,把病毒代碼和病毒執行后返回宿主程序的代碼寫入新添加的節中,同時修改PE文件頭中入口點(AddressOfEntryPoint),使其指向新添加的病毒代碼入口。這樣,當程序運行時,首先執行病毒代碼,當病毒代碼執行完成后才轉向執行宿主程序。病毒感染其他文件的步驟1.判斷目標文件開始的兩個字節是否為“MZ”。2.判斷PE文件標記“PE”。3.判斷感染標記,如果已被感染過則跳出繼續執行宿主程序,否則繼續。4.獲得DataDirectory(數據目錄)的個數,(每個數據目錄信息占8個字節)。5.得到節表起始位置。(數據目錄的偏移地址+數據目錄占用的字節數=節表起始位置)6.得到節表的末尾偏移(緊接其后用于寫入一個新的病毒節信息)節表起始位置+節的個數*(每個節表占用的字節數28H)=節表的末尾偏移。7.開始寫入節表a)寫入節名(8字節)。b)寫入節的實際字節數(4字節)。c)寫入新節在內存中的開始偏移地址(4字節),同時可以計算出病毒入口位置。上一個節在內存中的開始偏移地址+(上一個節的大小/節對齊+1)*節對齊=本節在內存中的開始偏移地址。d)寫入本節(即病毒節)在文件中對齊后的大小。e)寫入本節在文件中的開始位置。上節在文件中的開始位置+上節對齊后的大小=本節(即病毒)在文件中的開始位置。f)修改映像文件頭中的節表數目。g)修改AddressOfEntryPoint(即程序入口點指向病毒入口位置),同時保存舊的AddressOfEntryPoint,以便返回宿主并繼續執行。h)更新SizeOfImage(內存中整個PE映像尺寸=原SizeOfImage+病毒節經過內存節對齊后的大小)。i)寫入感染標記(后面例子中是放在PE頭中)。j)在新添加的節中寫入病毒代碼。ECX=病毒長度ESI=病毒代碼位置(并不一定等于病毒執行代碼開始位置)EDI=病毒節寫入位置k)將當前文件位置設為文件末尾。2.6如何返回到宿主程序jmpoldAddressOfEntryPoint病毒演示病毒示例代碼PE文件格式實驗(實驗三)本實驗是根據PE文件結構及其運行原理而設計的實驗。通過該實驗,讀者可以了解PE文件的結構,為進一步學習PE文件病毒原理奠定基礎。【實驗目的】了解PE文件基本結構。【實驗環境】運行環境:Windows2000、Windows9x、WindowsNT以及WindowsXP。編譯環境:VisualStudio6.0【實驗步驟】文件位置:附書資源目錄\Experiment\winpe。使用編譯環境打開源代碼工程,編譯后可以生成可執行文件winpe.exe。預備步驟:找任意一個Win32下的EXE文件作為查看對象。實驗內容:運行winpe.exe,并打開任一exe文件,選擇不同的菜單,可以查看到exe文件的內部結構。實驗具體步驟可以參考本教材PPT。PE格式實驗步驟WinPE察看器演示ExeDll源代碼級PE察看器演示32位文件型病毒實驗(實驗四)本實驗是根據4.3.2節的文件型病毒編制技術而設計的原型病毒。之所以設計成原型病毒,是因為考慮到信息安全課程的特殊性。學習病毒原理的目的是為了更好地防治病毒,而不是教各位讀者編寫能運行于實際環境的病毒。【實驗目的】了解文件型病毒的基本制造原理。了解病毒的感染、破壞機制,進一步認識病毒程序。掌握文件型病毒的特征和內在機制。【實驗環境】運行環境Windows2000、Windows9x、WindowsNT和WindowsXP。【實驗步驟】文件位置:附書資源目錄\Experiment\win32virus。目錄中的virus.rar包中包括Virus.exe(編譯的病毒程序)、軟件使用說明書.doc(請仔細閱讀)、源代碼詳解.doc(對代碼部分加入了部分注釋)以及pll.asm(程序源代碼)。Example.rar包中選取的是一個常用程序(ebookedit)安裝后的安裝目錄下的程序,用于測試病毒程序。預備步驟:將example.rar解壓縮到某個目錄,比如D:\virus\example。解壓完畢后,應該在該目錄下有Buttons目錄、ebookcode.exe、ebookedit.exe、ebrand-it.exe以及keymaker.exe等程序,然后把virus.rar包解壓后的Virus.exe復制到該目錄中。實驗內容:通過運行病毒程序觀看各步的提示以了解病毒的內在機制。詳細的演示步驟參見教學PPT。【實驗注意事項】本病毒程序用于實驗目的,請妥善使用。在測試病毒程序前,請先關閉殺毒軟件的自動防護功能或直接關閉殺毒軟件。本程序是在開發時面向實驗演示用的,側重于演示和說明病毒的內在原理,破壞功能有限;而且前流行的病毒破壞方式比較嚴重,而且發作方式非常隱蔽,千萬不要把其他病毒程序采用本例的方式來進行直接運行測試。測試完畢后,請注意病毒程序的清除,以免誤操作破壞計算機上的其他程序。32位PE可執行文件型病毒詳細步驟
病毒引導說明:
文件型病毒,沒有引導部分演示
病毒傳染說明:
傳染范圍:Virus.exe所在目錄
傳染目標:可執行文件(.exe)
傳染過程:搜索目錄內的可執行文件,逐個感染
病毒觸發說明:
觸發條件:運行Virus.exe程序或被Virus.exe感染的程序文件型病毒功能說明:
病毒破壞說明:
破壞能力:無害型傳染時減少磁盤的可用空間,在可執行文件上附加一個節(4K)
破壞方式:攻擊文件在可執行文件上附加一個節(4K),修改可執行文件的入口地址
破壞范圍:Virus.exe所在目錄
病毒查殺說明:
病毒危害等級:低,屬于無害型病毒
病毒特征類型:Bloodhound.W32.1(NortonAntiVirus檢測結果,這是Symantec軟件來臨時指代新病毒的文件)
病毒查殺方法:刪除所有被感染的文件
步驟0(預備):當防病毒程序如NortonAntiVirus(注:此處的測試應以當前測試機器上安裝殺毒軟件為準,本示例運行時機器上安裝的只有Norton
AntiVirus,故以此為參照)自動防護功能打開時,鼠標光標位于病毒程序上時,會看到如下的圖例:圖例0
圖解說明:注解0-1表示NortonAntiVirus的自動防護功能打開著;注解0-2就是防病毒軟件在用戶鼠標置于圖例0中注解0-3處的Virus.exe程序上時的報警提示。
演示說明:作為自己開發的病毒程序,為了能夠更好的演示病毒的特征,在開發過程中我們沒有采用病毒的保護機制,故而防病毒軟件根據病毒程序的特征即可給出該程序為病毒程序的報警提示。步驟1(運行預備):關閉防病毒軟件的自動防護功能,點擊病毒程序Virus.exe,運行該程序,參見下圖:
圖例1
圖解說明:注解1-1表示NortonAntiVirus的自動防護功能被關閉;注解1-2為病毒程序運行主界面,本實驗為了能夠比較直觀演示病毒程序,讓用戶知道正在運行某個程序,故而有此主界面;但實際的病毒在感染其他程序前不會讓用戶感覺到病毒程序正在運行的,往往都是隱藏運行,或者是寄生在宿主程序中,這方面可參照病毒的引導機制的介紹。演示說明:詳見備注提示用戶是否觀看感染過程,如下圖:
圖例2
圖解說明:注解2-1提示用戶是否觀看病毒的感染過程,選擇“是”觀看感染過程,選擇“否”運行原程序,由于該病毒程序不具有其他功能,所以選“否”時就直接關閉程序。
演示說明:該文件型病毒側重于病毒感染過程的演示,所以在感染部分的提示比較詳細。步驟2步驟3:開始感染提示,如下圖:圖例3
圖解說明:注解3-1提示用戶病毒程序開始感染其他程序。
演示說明:無步驟4:提示病毒感染范圍,如下圖:圖例4
圖解說明:注解4-1提示用戶病毒程序感染目標是病毒程序所在目錄里的程序。
演示說明:為了減少病毒破壞的范圍,在編寫該病毒程序時,限定其感染范圍為目錄內感染,這也同時減少了病毒的破壞范圍;但就病毒特征而言,它還是很好的體現了病毒程序自我復制的這一特征。步驟5:提示當前搜索到的合法的目標程序,如下圖:圖例5
圖解說明:注解5-1提示說明當前搜索的目標程序是ebookedit.exe可執行文件。
演示說明:無步驟6:判斷目標程序是否是合法的可感染的程序,如下圖:圖例6
圖解說明:注解6-1提示目標程序是否為合法的可感染程序。演示說明:Virus.exe可以感染的目標程序為PE文件中的可執行文件(.exe),對于文件型病毒傳染機理可參照病毒的傳染機制。步驟7:感染情況說明提示,如下圖:圖例7
圖解說明:注解7-1提示對病毒的感染情況進行說明。
演示說明:Virus.exe感染方式是在宿主文件附加一個節(4K),被感染的宿主程序運行時先跳轉到該節處,運行感染代碼;感染結束后再返回宿主程序的入口地址執行宿主程序。這也體現了本病毒程序的破壞方式,作為一個演示的病毒程序,破壞程度應該在可控范圍內,一些惡性的破壞方式可參照病毒的破壞機制說明。感染結果情況可參照步驟12的圖例,Virus.exe被防病毒軟件查出為病毒也正是因為該操作,具體參照步驟18的圖例。步驟8:感染過程隱藏說明(小技巧),如下圖:圖例8
圖解說明:注解8-1提示說明病毒程序加入中sleep的代碼的目的。
演示說明:此處加入該說明是也是為了說明是否存在病毒運行的一種判斷思路,在手工查毒時有時就是依照該手段來判斷當前機器是否有異常程序在運行;如果機器沒有明顯的程序在運行,而硬盤的指示燈一直閃爍,在高速運轉著,則可粗略判斷機器有異常程序在運行。防病毒的相關技術可參照防病毒基礎技術部分介紹。當然對于病毒程序本身而言,為了避免被發現,就需要通過sleep一段時間再進行感染來降低被發現的可能性。步驟9:提示是否觀看其他程序感染過程,如下圖:圖例9
圖解說明:注解9-1提示是否觀看其他程序感染過程。
演示說明:無步驟10:病毒感染結束或用戶取消操作的提示,如下圖:圖例10
圖解說明:注解10-1是病毒感染結束或用戶取消操作后的提示。
演示說明:感染結束或用戶取消后就會運行宿主程序。如果我們隱藏前面介紹的這些步驟的對話框和主界面,則給用戶的感覺就是運行了一個正常的程序,只是程序啟動運行的時間相對慢了一點,這也就體現了病毒程序的潛伏性這一特征。步驟11:該圖例與步驟6的圖例同步,該圖例是目標程序不合法或已被感染后的提示,如下圖:圖例11
圖解說明:注解11-1是目標程序不合法或已被感染的提示。
演示說明:Virus.exe可感染的目標為標準的可執行文件(絕大部分的.exe文件),在感染過程中對已感染的程序會進行檢查是否已被感染,若已經被感染則不再進行感染:一可以提高病毒感染的效率,二可以防止多次感染使文件增大而引起用戶的察覺。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12
圖解說明:注解12-1是KeyMaker.exe程序感染前的大小298KB(305,664字節);注解12-2是KeyMaker.exe程序感染后的大小302KB(309,760)。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12A步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12B圖解說明:圖例12A、12B、12C、12D是通過PEViewer程序打開目標程序的圖示。對照圖例12A和12B的注解:注解1表示KeyMaker.exe程序的節數由感染前的9個增加到10個;注解2程序大小的變化由00043000增加到00044000;注解3是程序入口地址的變化由00043DE8變為00054B93;注解4是程序占用空間的變化由00054000增加到00055000;注解5是程序校驗和的變化由0004C1FB變為0004C543。步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12C
步驟12:比較目標程序感染前后的變化(注要指程序大小),如下圖(圖例12;圖例12A和圖例12B;圖例12C和圖例12D):圖例12D
圖解說明:對照圖例12C和12D的注解:注
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一活動書房活動方案
- 六一活動共青團活動方案
- 六一活動捉魚活動方案
- 六一活動節朗誦活動方案
- 六一活動集體活動方案
- 六一游戲活動釣魚活動方案
- 六一田園活動方案
- 六一美工活動方案
- 六一節活動餐廳活動方案
- 六一贊助班級活動方案
- 2023-2024學年湖北省仙桃市小學數學四年級下冊期末評估試卷
- GB/T 3505-2009產品幾何技術規范(GPS)表面結構輪廓法術語、定義及表面結構參數
- GB/T 21446-2008用標準孔板流量計測量天然氣流量
- 無領導小組面試評分表
- 大學語文-第四講魏晉風度和魏晉文學-課件
- 我們畢業啦畢業季通用模板課件
- 小升初數學復習八(平面圖形)講義課件
- (完整版)基建建設工程流程圖
- 公司金融課件(完整版)
- 墻體開槽技術交底及記錄
- 國家開放大學《調劑學(本)》形考任務1-4參考答案
評論
0/150
提交評論