惡意代碼原理、技術(shù)與防范 課件 3-計(jì)算機(jī)病毒_第1頁
惡意代碼原理、技術(shù)與防范 課件 3-計(jì)算機(jī)病毒_第2頁
惡意代碼原理、技術(shù)與防范 課件 3-計(jì)算機(jī)病毒_第3頁
惡意代碼原理、技術(shù)與防范 課件 3-計(jì)算機(jī)病毒_第4頁
惡意代碼原理、技術(shù)與防范 課件 3-計(jì)算機(jī)病毒_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章計(jì)算機(jī)病毒引言計(jì)算機(jī)病毒是出現(xiàn)最早、流行最廣的惡意代碼類型之一。隨著計(jì)算機(jī)、互聯(lián)網(wǎng)的普及和操作系統(tǒng)的多樣化,計(jì)算機(jī)病毒在傳染機(jī)制、表現(xiàn)形式上都有了很大的發(fā)展。本章在介紹PE文件結(jié)構(gòu)的基礎(chǔ)上,深入剖析了Win32病毒、宏病毒和腳本型病毒等文件型病毒的原理和關(guān)鍵技術(shù)。計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒1.計(jì)算機(jī)病毒的基本概念4定義:計(jì)算機(jī)病毒是指編制或者在計(jì)算機(jī)程序中插入的破壞計(jì)算機(jī)功能或者毀壞數(shù)據(jù),影響計(jì)算機(jī)使用,并能自我復(fù)制的一組計(jì)算機(jī)指令或者程序代碼。特點(diǎn):感染宿主式的自我復(fù)制花樣繁多的破壞方式有宿主會(huì)破壞能感染定義1.計(jì)算機(jī)病毒的基本概念計(jì)算機(jī)病毒狀態(tài)靜態(tài):是指存在于輔助存儲(chǔ)介質(zhì)中的狀態(tài),不具備破壞和表現(xiàn)功能;動(dòng)態(tài):處于運(yùn)行狀態(tài),獲得系統(tǒng)控制權(quán);可激活態(tài):病毒已被加載至內(nèi)存,能夠被系統(tǒng)的正常運(yùn)行機(jī)制所執(zhí)行卻未執(zhí)行病毒代碼時(shí)的狀態(tài);激活態(tài):系統(tǒng)正在執(zhí)行病毒代碼時(shí),病毒處于激活態(tài)。5定義1.計(jì)算機(jī)病毒的基本概念6病毒的生命周期狀態(tài)變遷圖

1.計(jì)算機(jī)病毒的基本概念7計(jì)算機(jī)病毒的基本結(jié)構(gòu)組成1.計(jì)算機(jī)病毒的基本概念注意:不是所有的計(jì)算機(jī)病毒均具有三個(gè)模塊的功能。上述三個(gè)模塊須由主控制模塊調(diào)用,協(xié)同完成工作。8main(){調(diào)用引導(dǎo)功能模塊;A:do{尋找傳染對(duì)象;if(傳染條件不滿足)gotoA;}while(滿足傳染條件);調(diào)用傳染功能模塊;while(滿足破壞條件){激活病毒程序;調(diào)用破壞功能模塊;}運(yùn)行宿主源程序;}1.計(jì)算機(jī)病毒的基本概念9計(jì)算機(jī)病毒的分類:按照計(jì)算機(jī)病毒攻擊的設(shè)備類型分類:PC機(jī)病毒、小型機(jī)病毒、移動(dòng)設(shè)備、工控設(shè)備病毒等;按照計(jì)算機(jī)病毒的鏈接方式:源碼型病毒、二進(jìn)制型病毒、解釋型病毒等;計(jì)算機(jī)病毒按感染對(duì)象分類:引導(dǎo)型病毒;文件型病毒;引導(dǎo)型兼文件型病毒分類1.計(jì)算機(jī)病毒的基本概念工作機(jī)制:包括傳播機(jī)制、觸發(fā)機(jī)制和破壞機(jī)制傳播機(jī)制又稱感染機(jī)制,指計(jì)算機(jī)病毒自我復(fù)制的方法。10磁盤的引導(dǎo)扇區(qū)可執(zhí)行文件OFFICE文檔模板(宏)網(wǎng)頁(js等腳本)其它…病毒的感染對(duì)象有哪些類型?傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念傳播機(jī)制核心要解決病毒代碼存儲(chǔ)在宿主什么地方,并能獲得控制權(quán)的問題。(a)引導(dǎo)型病毒的感染位置:替換MBR或DBR11MBRDBR......sec-0sec-1sec-n............Virus<446bytevirvirMBRDBR......sec-0sec-1sec-n............Virus>446bytevirheadvirpartvirhead傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念(b)文件型病毒腳本型病毒的感染

特點(diǎn):文本編輯解釋引擎翻譯執(zhí)行順序執(zhí)行病毒代碼也是文本12virus可以寫在宿主腳本的頭、中、尾的任何位置(最好包含在函數(shù)中)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念二進(jìn)制文件的感染控制權(quán):入口點(diǎn)、退出點(diǎn)、必經(jīng)路徑。形式:二進(jìn)制shellcode考慮重定位,插入的代碼不應(yīng)導(dǎo)致各節(jié)的偏移13傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念加殼式病毒將宿主文件整體打包并作為數(shù)據(jù)的一部分(類似加殼軟件),執(zhí)行時(shí)病毒先執(zhí)行,再將宿主脫殼后執(zhí)行。14HOST程序代碼頭HOST程序代碼病毒頭病毒代碼原Host(壓縮)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念壓縮式壓縮型將原Host代碼段進(jìn)行壓縮,將自身放入減少的代碼段空間,并通過修改EPO獲得控制權(quán);15HOST程序代碼頭HOST程序代碼HOST程序頭(改EPO)病毒代碼壓縮后的Host代碼代碼段可容納病毒HOST程序頭(改EPO)病毒代碼+JMPxx壓縮后的Host代碼病毒代碼2代碼段太小傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念空洞填充型16傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念17無入口點(diǎn)式入口點(diǎn)模糊技術(shù),即病毒在不修改宿主原入口點(diǎn)的前提下,通過在宿主代碼體內(nèi)某處插入跳轉(zhuǎn)指令來使病毒獲得控制權(quán)傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念18鏈?zhǔn)讲《靖腥緯r(shí),完全不改動(dòng)宿主程序本體,而是改動(dòng)或利用與宿主程序的相關(guān)信息,將病毒程序與宿主程序鏈成一體,這種感染方式叫做鏈?zhǔn)礁腥?。傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念19破壞型感染病毒感染時(shí),對(duì)宿主程序的一部分代碼,不作保留第進(jìn)行覆蓋寫入,病毒寫入處的原宿主程序代碼全部丟失。傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念編譯器和源碼的感染用被病毒感染的編譯器編譯新的代碼,生成帶病毒代碼的程序?qū)ο蟆?02016,Xcode風(fēng)波傳播機(jī)制1.計(jì)算機(jī)病毒的基本概念觸發(fā)機(jī)制利用特定條件激活病毒代碼,使其由可激活態(tài)轉(zhuǎn)換為激活態(tài)。觸發(fā)的條件包括:指令觸發(fā)日期和時(shí)間觸發(fā)鍵盤觸發(fā)開機(jī)觸發(fā)磁盤訪問觸發(fā)和中斷訪問觸發(fā)其它觸發(fā):OS型號(hào)、IP地址、語言、地區(qū)、特定漏洞21觸發(fā)機(jī)制破壞機(jī)制攻擊文件和硬盤;攻擊內(nèi)存;干擾系統(tǒng)的運(yùn)行;擾亂輸出設(shè)備;擾亂鍵盤;干擾瀏覽器和下載新的惡意軟件;實(shí)施網(wǎng)絡(luò)攻擊和敲詐;……221.計(jì)算機(jī)病毒的基本概念破壞機(jī)制計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒2Win32病毒PE可執(zhí)行文件是Windows系統(tǒng)下計(jì)算機(jī)病毒感染的主要文件類型,通常將感染PE文件的病毒稱為win32病毒。2.1

PE文件格式PE文件布局基址磁盤中的文件內(nèi)存中的文件2.1

PE文件格式26物理地址(Raw

Address,RA):數(shù)據(jù)在磁盤文件中的偏移;

虛擬地址(Virtual

Address,VA):數(shù)據(jù)加載到虛擬空間后的內(nèi)存地址;相對(duì)虛擬地址(RelativeVirtualAddresses,RVA),數(shù)據(jù)相對(duì)于在虛擬地址的基地址的偏移量。VA=ImageBase+RVA27typedefstruct_IMAGE_DOS_HEADER{

USHORTe_magic;//魔術(shù)數(shù)字MZUSHORTe_cblp;USHORTe_cp;……LONGe_lfanew;//新EXE頭部的文件地址}作用:判斷文件是否為PE文件;DOSStub是為了與DOS操作系統(tǒng)兼容而保留的頭部;2.1

PE文件格式2.1

PE文件格式28PEHeader(PE文件頭):是IMAGE_NT_HEADER的簡(jiǎn)稱,存放PE整個(gè)文件信息分布的重要字段,包含了許多PE裝載器用到的重要字段。2.1

PE文件格式IMAGE_NT_HEADERSSTRUCTSignaturedd?//’PE\0\0’FileHeaderIMAGE_FILE_HEADER<>//文件基本信息OptionalHeaderIMAGE_OPTIONAL_HEADER32<>//文件附屬信息IMAGE_NT_HEADERSENDStypedefstruct_IMAGE_FILE_HEADER{WORDMachine;//0x04,該程序要執(zhí)行的環(huán)境及平臺(tái)

WORDNumberOfSections;//0x06,文件中節(jié)的個(gè)數(shù)

DWORDTimeDateStamp;//0x08,文件建立的時(shí)間

DWORDPointerToSymbolTable;//0x0c,COFF符號(hào)表的偏移

DWORDNumberOfSymbols;//0x10,符號(hào)數(shù)目

WORDSizeOfOptionalHeader;//0x14,可選頭的長(zhǎng)度

WORDCharacteristics;//0x16,標(biāo)志集合}IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER;2.1

PE文件格式30緊跟映像文件頭后面的就是可選映像頭typedefstruct_IMAGE_OPTIONAL_HEADER{//標(biāo)準(zhǔn)域:WORDMagic;//0x18,一般是0x010BBYTEMajorLinkerVersion;//0x1a,鏈接器的主/次版本號(hào),

BYTEMinorLinkerVersion;//0x1b,這兩個(gè)值都不可靠

DWORDSizeOfCode;//0x1c,可執(zhí)行代碼的長(zhǎng)度

DWORDSizeOfInitializedData;//0x20,初始化數(shù)據(jù)的長(zhǎng)度(數(shù)據(jù)節(jié))DWORDSizeOfUninitializedData;//0x24,未初始化數(shù)據(jù)的長(zhǎng)度(bss節(jié))

DWORDAddressOfEntryPoint;//0x28,代碼的入口RVA地址,程序從這開始執(zhí)行

DWORDBaseOfCode;//0x2c,可執(zhí)行代碼起始位置,意義不大

DWORDBaseOfData;//0x30,初始化數(shù)據(jù)起始位置,意義不大

DWORDImageBase;//0x34,載入程序首選的RVA地址

DWORDSectionAlignment;//0x38,加載后節(jié)在內(nèi)存中的對(duì)齊方式,0x1000

(待續(xù))31DWORDFileAlignment;//0x3c,節(jié)在文件中的對(duì)齊方式,0x200

WORDMajorOperatingSystemVersion;//0x3e,操作系統(tǒng)主/次版本,WORDMinorOperatingSystemVersion;//0x40,Loader并沒有用這兩個(gè)值WORDMajorImageVersion;//0x42,可執(zhí)行文件主/次版本W(wǎng)ORDMinorImageVersion;//0x44WORDMajorSubsystemVersion;//0x46,子系統(tǒng)版本號(hào)WORDMinorSubsystemVersion;//0x48DWORDWin32VersionValue;//0x4c,Win32版本,一般是0DWORDSizeOfImage;//0x50,程序調(diào)入后占用內(nèi)存大小(字節(jié))DWORDSizeOfHeaders;//0x54,文件頭的長(zhǎng)度之和DWORDCheckSum;//0x58,校驗(yàn)和,DLL用WORDSubsystem;//0x5c,可執(zhí)行文件的子系統(tǒng)WORDDllCharacteristics;//0x5e,何時(shí)DllMain被調(diào)用,一般為0DWORDSizeOfStackReserve;//0x60,初始化線程時(shí)保留的堆棧大小DWORDSizeOfStackCommit;//0x64,初始化線程時(shí)提交的堆棧大小DWORDSizeOfHeapReserve;//0x68,進(jìn)程初始化時(shí)保留的堆大小DWORDSizeOfHeapCommit;//0x6c,進(jìn)程初始化時(shí)提交的堆大小DWORDLoaderFlags;//0x70,裝載標(biāo)志,與調(diào)試相關(guān)DWORDNumberOfRvaAndSizes;//0x74,數(shù)據(jù)目錄的項(xiàng)數(shù),一般是16IMAGE_DATA_DIRECTORYDataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];}IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;2.1

PE文件格式32節(jié)表是緊挨著NT映像頭的一結(jié)構(gòu)數(shù)組,其成員的數(shù)目由映像文件頭中NumberOfSections決定#defineIMAGE_SIZEOF_SHORT_NAME8typedefstruct_IMAGE_SECTION_HEADER{UCHARName[IMAGE_SIZEOF_SHORT_NAME];//節(jié)名

union{ULONGPhysicalAddress;//OBJ文件中表示本節(jié)物理地址

ULONGVirtualSize;//對(duì)齊前節(jié)的實(shí)際字節(jié)數(shù)

}Misc;

ULONGVirtualAddress;//本節(jié)的RVA

ULONGSizeOfRawData;//本節(jié)經(jīng)過文件對(duì)齊后的尺寸

ULONGPointerToRawData;//本節(jié)原始數(shù)據(jù)在文件中的位置,自裝載時(shí)有用

ULONGPointerToRelocations;//OBJ文件中表示本節(jié)重定位信息的偏移

ULONGPointerToLinenumbers;//OBJ行號(hào)偏移

USHORTNumberOfRelocations;//OBJ本節(jié)需重定位的數(shù)目

USHORTNumberOfLinenumbers;//OBJ本節(jié)在行號(hào)表中的行號(hào)數(shù)目

ULONGCharacteristics;//節(jié)屬性}IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;2.1

PE文件格式33代碼節(jié)的屬性一般是60000020H,即“可執(zhí)行”、“可讀”和“節(jié)中包含代碼”數(shù)據(jù)節(jié)的屬性一般是C0000040H,即“可讀”、“可寫”和“包含已初始化數(shù)據(jù)”

病毒在添加新節(jié)時(shí),都會(huì)將新添加的節(jié)的屬性設(shè)置為可讀、可寫、可執(zhí)行2.1

PE文件格式IMAGE_IMPORT_DESCRIPTORSTRUCT{union{DWORDCharacteristics DWORDOriginalFirstThun//該RVA指向一個(gè)IMAGE_THUNK_DATA

}DWORDTimeDateStamp //時(shí)間日期記錄,無意義

DWORDForwarderChain //正向連接索引

DWORD

Name //被調(diào)用dll的名字指針數(shù)組的指針

DWORDFirstThunk //該RVA指向一個(gè)IMAGE_THUNK_DATA}IMAGE_IMPORT_DESCRIPTOR34導(dǎo)入表格式導(dǎo)入表的重要性2.1

PE文件格式

_IMAGE_THUNK_DATA{

union{

DWORDForwarderString

DWORDFunction

DWORDOrdinal//序號(hào)

DWORDAddressOfData//指向IMAGE_IMPORT_BY_NAME

}}IMAGE_THUNK_DATAIMAGE_IMPORT_BY_NAME{

WORDHint//函數(shù)序號(hào),但有的編譯器不用此域

BYTEName[1]

//函數(shù)名稱,以0結(jié)尾}IMAGE_IMPORT_BY_NAMEends352.1

PE文件格式36PE加載前2.1

PE文件格式37PE加載后2.2

Win32病毒W(wǎng)in32病毒是一段二進(jìn)制代碼,但與正常程序有區(qū)別:1.只有代碼節(jié),沒有數(shù)據(jù)節(jié)等其它節(jié);2.病毒附著在宿主文件,附著的位置不確定;3.病毒功能需要的API宿主程序的導(dǎo)入表并不提供;38病毒代碼入口重定位查找Kernel32基地址獲取API函數(shù)地址搜索文件讀寫操作文件操作是否成功讀取文件PE頭信息是否已經(jīng)被感染修改PE節(jié)感染Host,設(shè)置新入口點(diǎn),并在病毒結(jié)束處指向原入口點(diǎn)判斷發(fā)作條件是否符合發(fā)作條件轉(zhuǎn)到Host程序執(zhí)行正常程序操作成功否是否是不成功進(jìn)行破壞或竊聽潛伏并監(jiān)聽怎么辦?原理2.2

Win32病毒重定位問題病毒的寄生性決定了病毒只能作為一段代碼寄生在PE文件中,而不是一個(gè)完整的可執(zhí)行文件。病毒中所有的數(shù)據(jù)和代碼都必須融合在代碼段完成;39重定位bvsegment;定義段

assumecs:bv,ds:bv,es:bv;聲明段與寄存器的結(jié)合start:

oint13_ipdw?;定義雙字

oint13_csdw?

;定義雙字……2.2

Win32病毒40callvstartvstart:popebx…var1:db10dup(0)leaeax,[ebx+(offsetvar1-offsetvstart)]//eax中存放著var1在內(nèi)存中的真實(shí)地址感染不同的宿主對(duì)象后病毒代碼所在內(nèi)存位置不同,執(zhí)行時(shí)對(duì)地址的調(diào)用如何解決?重定位找一個(gè)相對(duì)穩(wěn)定的位置2.2

Win32病毒API函數(shù)的問題宿主程序并不保證提供病毒代碼實(shí)現(xiàn)功能的API函數(shù)。41解決方案:(1)在宿主程序的內(nèi)存空間中搜索需要的API(2)動(dòng)態(tài)獲得API函數(shù)的地址調(diào)用API2.2

Win32病毒(1)在宿主程序的內(nèi)存空間中搜索需要的API條件:適合宿主程序的內(nèi)存空間已經(jīng)加載了所需API的動(dòng)態(tài)鏈接庫,不具有普適性;方法:找到所在DLL的基址,再根據(jù)其導(dǎo)出表找到所需API的地址;調(diào)用API2.2

Win32病毒typedefstruct_IMAGE_EXPORT_DIRECTORY{

//導(dǎo)出表結(jié)構(gòu) DWORDCharacteristics;//保留 DWORDTimeDateStamp;//時(shí)間戳

WORDMajorVersion;//

WORDMinorVersion;//

DWORDName;//指向模塊名稱的RVA DWORDBase;//導(dǎo)出表用于導(dǎo)出函數(shù)序號(hào)基數(shù)

DWORDNumberOfFunctions;//導(dǎo)出函數(shù)成員個(gè)數(shù)

DWORDNumberOfNames;//導(dǎo)出函數(shù)名稱表成員個(gè)數(shù)

DWORDAddressOfFunctions;//導(dǎo)出函數(shù)址表RAV DWORDAddressOfNames;//函數(shù)名稱表RAV DWORDAddressOfNameOrdinals;//導(dǎo)出函數(shù)序號(hào)表}IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;調(diào)用API2.2

Win32病毒(2)動(dòng)態(tài)獲取API函數(shù)地址(普適性)獲取Kernel32.dll的基地址;獲得LoadLibrary和GetProcAddress函數(shù)地址調(diào)用API2.2

Win32病毒46mov

edx,

[esp].Next:dec

edxXordx,

dx

;減去跨度,或andedx,0xFFFF0000

cmp

word

[edx],

’ZM’

jz

.IsPe

jmp

.Next

.IsPe:

mov

eax,

[edx+3ch]

cmp

word

[eax+edx],

‘EP'

jnz

.Next

xchg

eax,

edx

eax

=

kernel32

基地址獲得KERNEL32的基地址方法利用HOST程序入口點(diǎn)的返回地址,在其附近搜索KERNEL32模塊基地址(適合入口點(diǎn)病毒)。調(diào)用API2.2

Win32病毒47通過PEB(ProcessEnviromentBlock)獲取PEB基本結(jié)構(gòu)基本原理:NT內(nèi)核系統(tǒng)中FS寄存器指向TEB,TEB+0X30處指向PEB結(jié)構(gòu),PEB+0X0C處指向PEB_LDR_DATA結(jié)構(gòu),PEB_LDR_DATA+0X14處存放一些DLL地址,其中第一個(gè)為NTDLL.DLL,第二個(gè)為KERNEL32.DLL調(diào)用API2.2

Win32病毒48

__asm{ pusheax mov eax,fs:[30h]//獲得PEB指針 mov eax,[eax+0ch]//獲得PEB_LDR_DATA結(jié)構(gòu)

mov eax,[eax+14h]//PEB->Ldr.InInitializationOrderModuleList.Flink mov eax,[eax]//eax,現(xiàn)在是ntdll.dll

moveax,[eax]//現(xiàn)在是kernel32.dll

mov eax,[eax+10h] //得到Kernel32.dll的BaseAddress

movret,eax popeax }基于PEB結(jié)構(gòu)獲得基地址的代碼實(shí)例調(diào)用API2.2

Win32病毒通過SEH獲取異常處理鏈表的頂端節(jié)點(diǎn)默認(rèn)情況下會(huì)放置Kernel32.UnhaldledExceptionFilter函數(shù)。因此,可以通過遍歷異常處理鏈表來找到它的未處理異?;卣{(diào)函數(shù)的地址,通過該地址向低地址尋找PE文件的DOS頭標(biāo)志.49EXCEPTION_REGISTRATIONTEB(fs:[0])回調(diào)函數(shù)1的地址下一個(gè)回調(diào)函數(shù)2的地址下一個(gè)Toplevel函數(shù)的地址0xFFFFFFFF…調(diào)用API2.2

Win32病毒常見感染方法:新加代碼節(jié),修改入口點(diǎn)主要的工作:增加一個(gè)節(jié)表項(xiàng);向節(jié)表增加一個(gè)新段(病毒代碼);//注意對(duì)齊調(diào)整文件映像尺寸,節(jié)表數(shù)(即SizeofImage/NumberofSections)以及節(jié)的屬性。50文件修改病毒寫到哪個(gè)位置不會(huì)影響原功能?2.2

Win32病毒病毒對(duì)文件頭的修改修改映像文件頭中節(jié)表數(shù)目NumberOfSections;新增節(jié)表SectionTable;修改入口點(diǎn)AddressOfEntryPoint;修改內(nèi)存映像大小SizeOfImage(內(nèi)存中整個(gè)PE映像尺寸=原SizeOfImage+病毒節(jié)經(jīng)過內(nèi)存節(jié)對(duì)齊后的大小);寫入感染標(biāo)記。51注意:為了將控制權(quán)轉(zhuǎn)回宿主程序,病毒代碼中需要一個(gè)變量用于存放原來的入口點(diǎn)!文件修改計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒3宏病毒什么是宏?宏(macro)是一種批量處理的稱謂,是指把常用的動(dòng)作寫成類似批處理命令的多行代碼的集合。適合所有文檔操作,通常是將重復(fù)操作設(shè)置為宏;創(chuàng)建或錄制;宏的類型自建宏:只對(duì)本文檔有效的宏,如FileSave、FilePrint等;自動(dòng)宏:對(duì)于所有文檔都有效的,如AutoExit、AutoOpen、AutoClose、AutoNew等;自定義宏:用戶自己建立或錄制。53概念3宏病毒54SubHelloVBA()DimNormProjMsgBox"HelloWold!這是我的第一個(gè)VBA宏!",vbOKOnly,"宏測(cè)試"SetNormProj=NormalTemplate.VBProjectMsgBoxNormProj.Name,vbOKOnly,"模板文件名"'顯示模板文件名

WithAssistant.NewBalloon'調(diào)出助手

.Icon=msoIconAlert.Animation=msoAnimationGetArtsy.Heading="請(qǐng)注意!".Text="助手在此!".ShowEndWithEndSubOffice軟件的宏主要采用VBA語言編寫。概念3宏病毒定義使用宏語言編寫的程序,附著在文字處理的文檔、表格、數(shù)據(jù)庫、演示文檔等數(shù)據(jù)文件中,由數(shù)據(jù)處理軟件運(yùn)行,利用宏語言的功能將自己復(fù)制、繁殖到其他數(shù)據(jù)文檔中。寄生性:宏程序可以附著在一個(gè)文檔文件上;傳染性:宏程序可以隨著文檔文件的復(fù)制傳播;破壞性:宏程序不需要用戶的干預(yù)而自動(dòng)執(zhí)行相應(yīng)功能。55概念3宏病毒宏病毒同樣需要解決如下問題:如何獲得控制權(quán)?充分利用自動(dòng)宏和內(nèi)建宏的事件觸發(fā)機(jī)制如何傳播?如何保護(hù)?56工作原理3宏病毒利用文檔模板共享的特性,先感染模板,再由染毒模板向干凈文檔的復(fù)制;57宏病毒如何傳播?工作原理有毒文檔打開,激自動(dòng)宏活寫入干凈模板Normal.dot有毒模板打開新文檔,激活自動(dòng)宏寫入干凈文檔

有毒文檔3宏病毒宏病毒的自我保護(hù)58OnErrorResumeNext'如果發(fā)生錯(cuò)誤,不彈出出錯(cuò)窗口,繼續(xù)執(zhí)行下面語句Application.DisplayAlert=wdAlertsNoe'不彈出警告窗口Application.EnableCancelKey=wdCancelDisabled'不允許通過ESC鍵結(jié)束正在運(yùn)行的宏Application.DisplayStatusBar=False'不顯示狀態(tài)欄,避免顯示宏的運(yùn)行狀態(tài)Application.ScreenUpdating=False'不讓刷新屏幕,避免病毒運(yùn)行引起刷新速度變慢Option.VirusProtection=False'關(guān)閉病毒保護(hù)功能,運(yùn)行前如果包含宏,不提示Option.SaveNormalPrompt=False'如果公用模板被修改,不給用戶提示窗口而直接保存工作原理計(jì)算機(jī)病毒概述Win32病毒宏病毒腳本病毒4腳本病毒腳本語言腳本語言前身是批處理文件,后通過優(yōu)化、擴(kuò)充形成腳本編程語言。VBScript既是客戶端腳本語言,也是服務(wù)器端腳本語言??捎糜诟鞣N應(yīng)用程序。JavaScript只是一種客戶端腳本語言,用于各種網(wǎng)站瀏覽器上的各種操作。PowerShell是一個(gè)強(qiáng)類型的動(dòng)態(tài)腳本語言,支持面向?qū)ο?,支持調(diào)用系統(tǒng)API和.NET庫。604腳本病毒W(wǎng)in32

APIWindows

Desktop

Windows

StartMenuWindows

Applications

Windows

File

SystemQuick

Lanch

Bar

Network

PrintersNetwork

Drivers

Windows

RegistryWeb

Application

WebAPICloud

Native

ApplicationMobile

Application

IoTMachine

learningWSH(Windows

Script

Host)CSript

Execution

HostWSript

Execution

HostVBScriptJScriptPowershell.NETWindows腳本架構(gòu)4腳本病毒W(wǎng)SH(WindowsScriptingHost)WSH是一個(gè)基于32位Windows平臺(tái)、并獨(dú)立于語言的腳本運(yùn)行環(huán)境,是腳本語言/命令的工具。在WSH腳本環(huán)境里,預(yù)定義了一些對(duì)象,通過這些內(nèi)置對(duì)象,可以實(shí)現(xiàn)獲取環(huán)境變量、創(chuàng)建快捷方式、加載程序、讀寫注冊(cè)表等功能。624腳本病毒63訪問文件WScript.Echo("WSH應(yīng)用舉例")'在D盤根目錄下建立5個(gè)新文件夾dimobjdirsetobjdir=WScript.CreateObject("Scripting.filesystemobject")fork=1to5sNewFolder="d:\WSHsample"&k'給新的文件夾命名

objdir.Createfolder(sNewFolder)next'在C盤根目錄創(chuàng)建一個(gè)文本文件testfile.txtSetRegWsh=Wscript.CreateObject("Wscript.Shell")RegWsh.Run("notepad"&WScript.ScriptFullName)Setfs=WScript.CreateObject("Scripting.FileSystemObject")Seta=fs.CreateTextFile("c:\testfile.txt",True)a.WriteLine("HelloWorld!")a.Close4腳本病毒64訪問注冊(cè)表DimRegWsh,sReadKey,sPrompt,sFixpromptSetRegWsh=WScript.CreateObject("WScript.Shell")RegWsh.RegWrite"HKCU\MyRegKey","一級(jí)鍵值"'創(chuàng)建一級(jí)鍵值sReadKey=RegWsh.RegRead("HKCU\MyRegKey")'讀取(默認(rèn))鍵值sPrompt="(默認(rèn))鍵值為:"&sReadKeyMsgBox"讀取的HKCU\MyRegKey下"&sPromptRegWsh.Reg

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論