29 October 2008

SCANBOOT.ASM


;--------------------------------------------------------
; Program Name : SCANBOOT.ASM (SCAN BOOT Viruses)
; Porgram Type : ANTI VIRUS
; Penulis : Kutu Busuk
; ZeroBit Tech. Research & Development.
; Sourcer : Editor TP 5.5
; Compiler : TASM 2.0 + TLINK 2.0
; Program Code : I#05.930326.930423.07.$03
;--------------------------------------------------------

ESCAPE equ 27
JmlVir equ 15
JmlID equ 3
OneRec equ 11

Code Segment
Assume CS:Code,DS:Code
Org 100h

Begin:
Jmp Start

DUMMY db 13,'** SCANBOOT.ASM - (C)93xxxx, ZeroBit **',10,1Ah

JUNK db 13,'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿',13,10
db '³ Ada perubahan tidak sah... ³Ü',13,10
db 'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ',7,13,10,'$'
db ' ßßßßßßßßßßßßßßßßßßßßßßßßßßßßß',7,13,10,'$'

COPYRIGHT db 13,'** SCANBOOT R1.0 - (C)1993, ZeroBit TR&D **',10
db 13,'Masukkan disk di drive a: dan tekan tombol...$'
BATAL db 13,'Dibatalkan...' ,13,10,'$'
BACADISK db 13,'Membaca disk...' ,13,10,'$'
ERROR db 13,'Gagal akses...' ,13,10,'$'
NOVIR db 13,'Virus tak ketemu...' ,13,10,'$'
ADAVIR db 13,'Disk kena virus ' ,13,10,'$'

Ctr db 0
Drive db ?

Vir db 000, 233,172,000, 'Michael'
db 000, 235,078,144, 'DenZuko'
db 000, 235,041,144, 'Ohio '
db 103, 192,205,019, 'Hacker2'
db 043, 250,250,008, 'Hacker '
db 000, 233,013,001, 'H&Dee '
db 000, 235,064,000, 'Sapta '
db 005, 233,153,000, 'Stoned '
db 003, 051,192,142, 'Mystic2'
db 000, 233,170,000, 'VPV1 '
db 000, 235,031,144, 'Joshi '
db 043, 250,051,192, 'Robert '
db 043, 250,250,140, 'Voodoo '
db 043, 250,250,250, 'STMIK '
db 001, 233,074,001, 'Brain '

;--ofs---virus id-----name---
; 1 > panjang 1 record
; 1 2 3 4 5678901 > adalah 11 byte

Start:
mov ax,ds
mov es,ax

lea dx,COPYRIGHT ; cetak copyright
call cetak ; dan tanya drive...

xor ax,ax ; baca keyboard
int 16h

cmp al,ESCAPE ; esc ?
jne short noesc ; bukan ! lompat ke NOESC

lea dx,BATAL ; ya ! esc !
call cetak ; cetak "batal"

jmp quit ; dan keluar...

noesc:

mov ah,19h
int 21h
mov drive,al ; ambil nama drive !

lea dx,BACADISK ; cetak "baca disk"
call cetak

xor ax,ax ; reset disk drive
int 13h

mov drive,0 ; ** HANYA UNTUK TEST DRV A:. BISA DIBUANG **

mov cx,3 ; baca 3 kali jika ada error
lagi:
push cx
mov ax,0201h
mov cx,0001h
mov dl,drive
mov dh,0000h
mov bx,offset Buff ; baca boot sektor
int 13h
pop cx
jnc okay ; ada error ?
loop lagi ; ya ! baca lagi !

lea dx,ERROR ; cetak "error"
call cetak

jmp quit ; keluar

okay:
; cari virus data di Buff
mov si,offset Vir
sub si,OneRec
mov Ctr,0
virl:
inc Ctr
add si,OneRec
mov di,offset Buff
add di,[si]
inc si

mov cx,JmlID
repe cmpsb
je kena

cmp Ctr,JmlVir
je absen ; tidak sama ? tidak ada virus
jmp virl

kena:
lea dx,ADAVIR ; cetak "ada virus"
call cetak

mov dx,si ; cetak "nama virus"
inc dx
mov di,dx
add di,8
mov byte ptr [di],'$'
call cetak

jmp short quit ; keluar

absen:
lea dx,NOVIR ; cetak "takada virus"
call cetak

quit:
int 20h

cetak proc near
push ax
mov ah,9
int 21h
pop ax
ret
cetak endp

Buff db 0

Code EndS
End Begin

No comments: