亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 反病毒引擎設計.htm

?? 反病毒引擎設計
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
      ;產生一個異常<BR>當然,后面還有恢復原來中斷入口地址和異常處理幀的代碼。<BR><BR><BR>剛才所討論的技術僅限于WIN9X,想在WINNT/2000下進入Ring0則沒有這么容易。主要的原因是WINNT/2000沒有上述的漏洞,它們的系統代碼頁面(2G--4G)有很好的頁保護。大于0x80000000的虛擬地址對于用戶程序是不可見的。如果你用Softice的PAGE命令查看這些地址的頁屬性,你會發現S位,這說明這些地址僅可從核心態訪問。所以想在IDT,GDT隨意構造描述符,運行時修改內核是根本做不到的。所能做的僅是通過加載一個驅動程序,使用它來做你在Ring3下做不到的事情。病毒可以在它們加載的驅動中修改內核代碼,或為病毒本身創建調用門(利用NT由Ntoskrnl.exe導出的未公開的系統服務KeI386AllocateGdtSelectors,KeI386SetGdtSelector,KeI386ReleaseGdtSelectors)。如Funlove病毒就利用驅動來修改系統文件(Ntoskrnl.exe,Ntldr)以繞過安全檢查。但這里面有兩個問題,其一是驅動程序從哪里來,現代病毒普遍使用一個稱為“Drop”的技術,即在病毒體本身包含驅動程序二進制碼(可以進行壓縮或動態構造文件頭),在病毒需要使用時,動態生成驅動程序并將它們扔到磁盤上,然后馬上通過在SCM(服務控制管理器)注冊并最終調用StartService來使驅動程序得以運行;其二是加載一個驅動程序需要管理員身份,普通帳號在調用上述的加載函數時會返回失敗(安全子系統要檢查用戶的訪問令牌(Token)中有無SeLoadDriverPrivilege特權),但多數用戶在大多時候登錄時會選擇管理員身份,否則連病毒實時監控驅動也同樣無法加載,所以留給病毒的機會還是很多的。 
      <BR><BR>1.2.2駐留病毒<BR>駐留病毒是指那些在內存中尋找合適的頁面并將病毒自身拷貝到其中且在系統運行期間能夠始終保持病毒代碼的存在。駐留病毒比那些直接感染(Direct-action)型病毒更具隱蔽性,它通常要截獲某些系統操作來達到感染傳播的目的。進入了核心態的病毒可以利用系統服務來達到此目的,如CIH病毒通過調用一個由VMM導出的服務VMMCALL 
      _PageAllocate在大于0xC0000000的地址上分配一塊頁面空間。而處于用戶態的程序要想在程序退出后仍駐留代碼的部分于內存中似乎是不可能的,因為無論用戶程序分配何種內存都將作為進程占用資源的一部分,一旦進程結束,所占資源將立即被釋放。所以我們要做的是分配一塊進程退出后仍可保持的內存。<BR><BR>病毒寫作小組29A的成員GriYo 
      運用的一個技術很有創意:他通過CreateFileMappingA 
      和MapViewOfFile創建了一個區域對象并映射它的一個視口到自己的地址空間中去,并把病毒體搬到那里,由于文件映射所在的虛擬地址處于共享區域(能夠被所有進程看到,即所有進程用于映射共享區內虛擬地址的頁表項全都指向相同的物理頁面),所以下一步他通過向Explorer.exe中注入一段代碼(利用WriteProcessMemory來向其它進程的地址空間寫入數據),而這段代碼會從Explorer.exe的地址空間中再次申請打開這個文件映射。如此一來,即便病毒退出,但由于Explorer.exe還對映射頁面保持引用,所以一份病毒體代碼就一直保持在可以影響所有進程的內存頁面中直至Explorer.exe退出。 
      <BR><BR>另外還可以通過修改系統動態連接模塊(DLL)來進行駐留。WIN9X下系統DLL(如Kernel32.dll 
      映射至BFF70000)處于系統共享區域(2G-3G),如果在其代碼段空隙中寫入一小段病毒代碼則可以影響其它所有進程。但Kernel32.dll的代碼段在用戶態是只能讀不能寫的。所以必須先通過特殊手段修改其頁保護屬性;而在WINNT/2000下系統DLL所在頁面被映射到進程的私有空間(如Kernel32.dll 
      映射至77ED0000)中,并具有寫時拷貝屬性,即沒有進程試圖寫入該頁面時,所有進程共享這個頁面;而當一個進程試圖寫入該頁面時,系統的頁面錯誤處理代碼將收到處理器的異常,并檢查到該異常并非訪問違例,同時分配給引發異常的進程一個新頁面,并拷貝原頁面內容于其上且更新進程的頁表以指向新分配的頁。這種共享內存的優化給病毒的寫作帶來了一定的麻煩,病毒不能象在WIN9X下那樣僅修改Kernel32.dll一處代碼便可一勞永逸。它需要利用WriteProcessMemory來向每個進程映射Kernel32.dll的地址寫入病毒代碼,這樣每個進程都會得到病毒體的一個副本,這在病毒界被稱為多進程駐留或每進程駐留(Muti-Process 
      Residence or Per-Process Residence )。 
      <BR><BR>1.2.3截獲系統操作<BR>截獲系統操作是病毒慣用的伎倆。DOS時代如此,WINDOWS時代也不例外。在DOS下,病毒通過在中斷向量表中修改INT21H的入口地址來截獲DOS系統服務(DOS利用INT21H來提供系統調用,其中包括大量的文件操作)。而大部分引導區病毒會接掛INT13H(提供磁盤操作服務的BIOS中斷)從而取得對磁盤訪問的控制。WINDOWS下的病毒同樣找到了鉤掛系統服務的辦法。比較典型的如CIH病毒就是利用了IFSMGR.VXD(可安裝文件系統)提供的一個系統級文件鉤子來截獲系統中所有文件操作,我會在相關章節中詳細討論這個問題,因為WIN9X下的實時監控也主要利用這個服務。除此之外,還有別的方法。但效果沒有這個系統級文件鉤子好,主要是不夠底層,會丟失一些文件操作。<BR><BR>其中一個方法是利用APIHOOK,鉤掛API函數。其實系統中并沒有現成的這種服務,有一個SetWindowsHookEx可以鉤住鼠標消息,但對截獲API函數則無能為力。我們能做的是自己構造這樣的HOOK。方法其實很簡單:比如你要截獲Kernel32.dll導出的函數CreateFile,只須在其函數代碼的開頭(BFF7XXXX)加入一個跳轉指令到你的鉤子函數的入口,在你的函數執行完后再跳回來。如下圖所示: 
      <BR><BR>;; Target 
      Function(要截獲的目標函數)<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;TargetFunction:(要截獲的目標函數入口)<BR>&nbsp;&nbsp;jmp 
      DetourFunction(跳到鉤子函數,5個字節長的跳轉指令)<BR>&nbsp;&nbsp;TargetFunction+5:<BR>&nbsp;&nbsp;push 
      edi<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;;; 
      Trampoline(你的鉤子函數)<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;TrampolineFunction:(你的鉤子函數執行完后要返回原函數的地方)<BR>&nbsp;&nbsp;push 
      ebp<BR>&nbsp;&nbsp;mov ebp,esp<BR>&nbsp;&nbsp;push ebx<BR>&nbsp;&nbsp;push 
      esi(以上幾行是原函數入口處的幾條指令,共5個字節)<BR>&nbsp;&nbsp;jmp 
      TargetFunction+5(跳回原函數)<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;&nbsp;&nbsp;但這種方法截獲的僅僅是很小一部分文件打開操作。<BR><BR>在WIN9X下還有一個鮮為人知的截獲文件操作的辦法,說起來這應該算是WIN9X的一大后門。它就是Kernel32.dll中一個未公開的叫做VxdCall0的API函數。反匯編這個函數的代碼如下:<BR><BR>mov 
      eax,dword ptr [esp+00000004h] ;取得服務代號<BR><BR>pop dword ptr [esp] 
      ;堆棧修正<BR><BR>call fword ptr cs:[BFFC9004] 
      ;通過一個調用門調用3B段某處的代碼<BR><BR>如果我們繼續跟蹤下去,則會看到:<BR><BR>003B:XXXXXXXX int 30h 
      ;這是個用以陷入VWIN32.VXD的保護模式回調<BR><BR>有關VxdCall的詳細內容,請參看Matt Pietrek的《Windows 
      95 System Programming 
      Secrets》。<BR><BR>當服務代號為0X002A0010時,保護模式回調會陷入VWIN32.VXD中一個叫做VWIN32_Int21Dispatch的服務。這正說明了WIN9X還在依賴于MSDos,盡管微軟聲稱WIN9X不再依賴于MSDos。調用規范如下:<BR><BR>&nbsp;&nbsp;my_int21h:push 
      ecx<BR>&nbsp;&nbsp;push eax ;類似DOS下INT21H的AX中傳入的功能號<BR>&nbsp;&nbsp;push 
      002A0010h<BR>&nbsp;&nbsp;call dword ptr 
      [ebp+a_VxDCall]<BR>&nbsp;&nbsp;ret<BR>&nbsp;&nbsp;我們可以將上面VxdCall0函數的入口處第三條遠調用指令訪問的Kernel32.dll數據段中用戶態可寫地址BFFC9004Υ媧⒌?FWORD'六個字節改為指向我們自己鉤子函數的地址,并在鉤子中檢查傳入服務號和功能號來確定是否是請求VWIN32_Int21Dispatch中的某個文件服務。著名的HPS病毒就利用了這個技術在用戶態下直接截獲系統中的文件操作,但這種方法截獲的也僅僅是一小部分文件操作。<BR><BR>1.2.4加密變形病毒<BR>加密變形病毒是虛擬機一章的重點內容,將放到相關章節中介紹。<BR><BR>1.2.5反跟蹤/反虛擬執行病毒<BR>反跟蹤/反虛擬執行病毒和虛擬機聯系密切,所以也將放到相應的章節中介紹。<BR><BR>1.2.6直接API調用<BR>直接API調用是當今WIN32病毒常用的手段,它指的是病毒在運行時直接定位API函數在內存中的入口地址然后調用之的一種技術。普通程序進行API調用時,編譯器會將一個API調用語句編譯為幾個參數壓棧指令后跟一條間接調用語句(這是指Microsoft編譯器,Borland編譯器使用JMP 
      <BR><BR>DWORD PTR [XXXXXXXXh])形式如下:<BR><BR>&nbsp;&nbsp;push 
      arg1<BR>&nbsp;&nbsp;push arg2<BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;call dword 
      ptr[XXXXXXXXh]<BR>地址XXXXXXXXh在程序映象的導入(Import 
      Section)段中,當程序被加載運行時,由裝入器負責向里面添入API函數的地址,這就是所謂的動態鏈接機制。病毒由于為了避免感染一個可執行文件時在文件的導入段中構造病毒體代碼中用到的API的鏈接信息,它選擇運用自己在運行時直接定位API函數地址的代碼。其實這些函數地址對于操作系統的某個版本是相對固定的,但病毒不能依賴于此。現在較為流行的做法是先定位包含API函數的動態連接庫的裝入基址,然后在其導出段(Export 
      Section)中尋找到需要的API地址。后面一步幾乎沒有難度,只要你熟悉導出段結構即可。關鍵在于第一步--確定DLL裝入地址。其實系統DLL裝入基址對于操作系統的某個版本也是固定的,但病毒為確保其穩定性仍不能依賴這一點。目前病毒大都利用一個叫做結構化異常處理的技術來捕獲病毒體引發的異常。這樣一來病毒就可以在一定內存范圍內搜索指定的DLL(DLL使用PE格式,頭部有固定標志),而不必擔心會因引發頁面錯誤而被操作系統殺掉。<BR><BR>由于異常處理和后面的反虛擬執行技術密切相關,所以特將結構化異常處理簡單解釋如下:<BR><BR>共有兩類異常處理:最終異常處理和每線程異常處理。<BR><BR>其一:最終異常處理<BR><BR>當你的進程中無論哪個線程發生了異常,操作系統將調用你在主線程中調用SetUnhandledExceptionFilter建立的異常處理函數。你也無須在退出時拆去你安裝的處理代碼,系統會為你自動清除。<BR><BR>&nbsp;&nbsp;PUSH 
      OFFSET FINAL_HANDLER <BR>&nbsp;&nbsp;CALL SetUnhandledExceptionFilter 
      <BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;CALL ExitProcess 
      <BR>&nbsp;&nbsp;;************************************ 
      <BR>&nbsp;&nbsp;FINAL_HANDLER: <BR>&nbsp;&nbsp;…… <BR>&nbsp;&nbsp;;(eax=-1 
      reload context and continue) <BR>&nbsp;&nbsp;MOV EAX,1 <BR>&nbsp;&nbsp;RET 
      ;program entry point <BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;;code covered by 
      final handler <BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;;code to provide a polite 
      exit <BR>&nbsp;&nbsp;……<BR>&nbsp;&nbsp;;eax=1 stops display of closure box 
      <BR>&nbsp;&nbsp;;eax=0 enables display of the box 
      <BR>&nbsp;&nbsp;其二:每線程異常處理<BR><BR>FS中的值是一個十六位的選擇子,它指向包含線程重要信息的數據結構TIB,線程信息塊。其的首雙字節指向我們稱為ERR的結構:<BR><BR>1st 
      dword +0 pointer to next err structure<BR><BR>(下一個err結構的指針) <BR><BR>2nd 
      dword +4 pointer to own exception 
      handler<BR><BR>(當前一級的異常處理函數的地址)<BR><BR>所以異常處理是呈練狀的,如果你自己的處理函數捕捉并處理了這個異常,那么當你的程序發生了異常時,操作系統就不會調用它缺省的處理函數了,也就不會出現一個討厭的執行了非法操作的紅叉。<BR><BR>下面是cih的異常段:<BR><BR>MyVirusStart:<BR>&nbsp;&nbsp;push 
      ebp<BR>&nbsp;&nbsp;lea eax, [esp-04h*2]<BR>&nbsp;&nbsp;xor ebx, 
      ebx<BR>&nbsp;&nbsp;xchg eax, fs:[ebx] 
      ;交換現在的err結構和前一個結構的地址<BR>&nbsp;&nbsp;; eax=前一個結構的地址<BR>&nbsp;&nbsp;; 
      fs:[0]=現在的err結構指針(在堆棧上)<BR>&nbsp;&nbsp;call 
      @0<BR>&nbsp;&nbsp;@0:<BR>&nbsp;&nbsp;pop ebx<BR>&nbsp;&nbsp;lea ecx, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模娜娜一区二区三区| 综合久久久久综合| 欧美日免费三级在线| 91视频一区二区三区| 成人av资源站| 9l国产精品久久久久麻豆| 国产精品原创巨作av| 国产福利一区在线| 国产高清精品久久久久| 成人免费视频视频在线观看免费| 国产乱码精品1区2区3区| 国产精品资源在线| 不卡电影一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| www.色精品| 欧美私人免费视频| 91精品午夜视频| 久久综合五月天婷婷伊人| 久久久国产精品不卡| 欧美国产日本视频| 亚洲精品免费看| 日韩av一区二| 国产91在线|亚洲| 欧美伊人久久大香线蕉综合69 | 精品国产一区二区三区忘忧草 | 欧美三级日本三级少妇99| 91福利小视频| 日韩写真欧美这视频| 久久精品亚洲精品国产欧美| 亚洲少妇30p| 午夜精品久久久久久久99水蜜桃 | 日本伦理一区二区| 91精品国产免费久久综合| 久久先锋影音av| 亚洲欧洲av在线| 裸体在线国模精品偷拍| 国产成人精品亚洲日本在线桃色| 色吧成人激情小说| 精品国产凹凸成av人网站| 亚洲日本在线天堂| 精品在线免费观看| 欧洲中文字幕精品| 国产视频在线观看一区二区三区| 一区二区三区高清| 国产91丝袜在线观看| 欧美丰满少妇xxxxx高潮对白| 国产丝袜欧美中文另类| 性欧美大战久久久久久久久| 国产成人精品免费| 欧美一区二区在线看| 亚洲欧美电影一区二区| 韩国成人精品a∨在线观看| 在线精品国精品国产尤物884a| 久久免费精品国产久精品久久久久| 一区二区三区免费看视频| 国产不卡在线视频| 精品日韩99亚洲| 丝袜国产日韩另类美女| 在线精品视频免费播放| 国产精品久久久久婷婷| 国产在线不卡一卡二卡三卡四卡| 欧美蜜桃一区二区三区| 一区二区三区在线观看欧美| 成人免费视频视频| 久久九九全国免费| 国产一区二区三区不卡在线观看| 欧美人与禽zozo性伦| 亚洲精品免费电影| 91久久精品一区二区三区| 日本一区二区三区高清不卡| 91在线视频免费观看| 色婷婷久久综合| 欧美亚洲一区二区在线观看| 欧美一级国产精品| 亚洲成人综合网站| 欧美在线一二三四区| 日韩美女精品在线| 91在线云播放| 亚洲天堂av老司机| 91福利区一区二区三区| 亚洲精品水蜜桃| 在线观看精品一区| 午夜视频久久久久久| 精品视频999| 亚洲综合视频在线| 99久久夜色精品国产网站| 国产日韩精品一区二区三区 | 国产一区二区精品久久99| 91麻豆精品国产自产在线观看一区| 亚洲一区二区三区四区五区黄| 91天堂素人约啪| 亚洲国产精品欧美一二99| 欧美日韩国产精品自在自线| 日本一不卡视频| 久久人人超碰精品| 99综合电影在线视频| 一区二区国产视频| 欧美唯美清纯偷拍| 偷拍自拍另类欧美| 久久久久久影视| 97久久精品人人做人人爽50路| 国产精品久久福利| 91福利精品视频| 免费欧美在线视频| 国产精品麻豆一区二区| 欧美亚洲国产bt| 国产一区二区视频在线| 中文字幕中文在线不卡住| 99riav一区二区三区| 亚洲黄色av一区| 777奇米四色成人影色区| 国产真实乱对白精彩久久| 自拍偷拍亚洲欧美日韩| 91精品国产欧美日韩| 99视频精品免费视频| 日本不卡一区二区| 国产精品久线观看视频| 欧美一区二区三区在线| a4yy欧美一区二区三区| 青娱乐精品在线视频| 中文字幕一区二区三区四区不卡 | 亚洲成人激情社区| 久久综合狠狠综合久久激情| 91久久久免费一区二区| 韩国欧美国产一区| 日韩一区有码在线| 久久嫩草精品久久久精品| 欧美性受极品xxxx喷水| 国产精品资源网站| 美国十次综合导航| 亚洲综合区在线| 亚洲欧洲一区二区在线播放| 精品国产污网站| 色拍拍在线精品视频8848| 久久机这里只有精品| 亚洲一区二区三区四区在线| 亚洲欧美怡红院| 国产亚洲欧美日韩在线一区| 欧美一区二区网站| 欧美少妇一区二区| 在线观看亚洲精品| 99久久er热在这里只有精品15 | 国产精品久久毛片a| 日韩精品一区二区三区蜜臀 | 国产亚洲成aⅴ人片在线观看| 欧美日韩大陆一区二区| 欧洲视频一区二区| 99视频一区二区| 91丨九色丨国产丨porny| 国产精品77777竹菊影视小说| 九九视频精品免费| 九一九一国产精品| 久久99精品国产.久久久久久| 免费成人美女在线观看.| 亚洲va欧美va人人爽| 午夜欧美在线一二页| 日韩福利视频网| 蜜桃视频免费观看一区| 久久精品国产成人一区二区三区 | 丝袜诱惑制服诱惑色一区在线观看 | 一区二区免费视频| 一区二区三区中文字幕精品精品 | 国产jizzjizz一区二区| 国产一区二区美女诱惑| 久久99精品国产麻豆婷婷| 国产一区在线观看麻豆| 国产精品一品视频| 99这里都是精品| 欧美综合亚洲图片综合区| 欧美在线小视频| 91精品久久久久久久久99蜜臂| 欧美一级片在线看| 久久久久久久久久久黄色| 国产欧美日产一区| 奇米精品一区二区三区四区| 日韩电影在线观看一区| 寂寞少妇一区二区三区| www.综合网.com| 在线观看视频91| 精品奇米国产一区二区三区| 欧美激情一区二区三区全黄| 亚洲欧美日韩国产中文在线| 日韩精品一级二级| 成人污视频在线观看| 欧美视频日韩视频在线观看| 久久中文娱乐网| 亚洲欧美激情小说另类| 久久99最新地址| 99久久精品免费看国产免费软件| 欧美日韩国产一级片| 国产情人综合久久777777| 亚洲综合久久av| 福利一区二区在线观看| 精品视频在线免费观看| 国产亚洲1区2区3区| 亚洲一卡二卡三卡四卡无卡久久| 国产原创一区二区| 欧美色精品在线视频| 中文字幕第一区综合| 日韩福利电影在线|