Sabtu, 18 April 2009

Belajar Buat Antivirus sederhana

Hi... akhirnya saYa nGeBLog Lagi Nih... Di sini anda dapat menemukan informasi tentang Musik. Kunci atau Chord Lagu, Profil, Plus info tentang IPTEK diantaranya Hacking, Cracking, Programmer, Virus maker, dan Lain-Lain deh Pokonya...

Nah,, Kali Ini saya akan ngebaHas tentang :

Belajar Buat Antivirus sederhana

Cara Kerja AV(Antivirus) sederhana..
1. Engine scanner, ini merupakan komponen utama AV dalam mengenali sebuah
pattern virus. Engine ini dapat dikelompokkan menjadi statis dan dinamis. Statis
dalam hal ini dapat disebut menjadi spesifik terhadap pattern tertentu dari
sebuah file virus. Checksum merupakan salah satu contoh dari engine statis ini.
Dinamis dalam artian dia mengenali perilaku ‘umum’ sebuah virus. Heuristic
menjadi salah satu contohnya.

2. Database definition, menjadi sebuah referensi dari sebuah pattern file virus.
Engine statis sangat bergantung kepada komponen ini.

3. Decompress atau unpacking engine, khusus untuk pengecekan file-file yang
terkompresi (*.rar, *.zip, dll) atau kompresi atau packing untuk file PE seperti
UPX, MeW , dll.

Tidak jarang hasil dari pengecekan terhadap file suspect virus menghasilkan
false-positive bahkan false-negative (– false-positive berarti file yang bersih
dianggap thread oleh AV, dan false-negative berarti file yang 100% thread akan
dianggap bersih). Semua itu dapat diakibatkan oleh ketidak-sempurnaan dari
engine scanner itu sendiri. Misal

pada contoh kasus Engine String scanner (–Engine scanner yang menyeleksi
string-string dari file text-based), bila diterapkan rule 3 out of 5 (– bila AV
menemukan 3 dari daftar 5 string kategori malicious) maka AV akan memberikan
bahwa file terindikasi sebuah thread yang positif. Padahal file tsb nyatanya
tidak menimbulkan efek berbahaya bila dijalankan atau dieksekusi. Kesalahan
scanning macam ini lazim ditemukan untuk file-file *.VBS, *.HTML, dll. Untuk
penggunaan engine checksum sangat banyak ditemui di beberapa software AV lokal.
Checksum yang lazim digunakan diantaranya CRC16, CRC32, MD5, dll. Dikarenakan
mudah untuk diimplementasikan. Engine ini sendiri bukannya tanpa cacat, Checksum
bekerja dengan memproses byte demi byte dari sebuah file dengan sebuah algoritma
tertenu (– tergantung dari jenis checksum yang digunakan) sehingga menghasilkan
sebuah format tertentu dari file tsb. Contoh checksum menggunakan CRC32 dan MD5
:



* calCrc = CRC32(file_name_and_path)

* calMD5 = MD5(file_name_and_path)



Maka isi dari string calCrc adalah 7AF9E376, sedangkan untuk MD5nya adalah
529CA8050A00180790CF88B63468826A. Perlu diketahui bila virus menerapkan rutin
yang mengubah byte tertentu dari badan virus tsb setiap kali maka penggunaan
engine checksum ini akan kurang optimal karena bila 1 byte berubah dari file
maka checksum juga akan berubah.



Mari kita belajar membuat sebuah AV sederhana, yang diperlukan :



1. Software Visual Basic 6.0

2. Sedikit pemahaman akan pemograman Visual Basic 6.0

3. Sampel file bersih atau virus (– opsional)



First#

Sekarang kita akan belajar membuat sebuah rutin sederhana untuk :

- Memilih file yang akan dicek

- Membuka file tersebut dalam mode binary

- Memproses byte demi byte untuk menghasilkan Checksum



Buka MS-Visual Basic 6.0 anda, lalu buatlah sebuah class module dan Form dengan
menambahkan sebuah objek Textbox, CommonDialog dan Command Button. (Objek
CommonDialog dapat ditambahkan dengan memilih Project -> COmponent atau Ctrl-T
dan memilih Microsoft Common Dialog Control 6.0) Ketikkan kode berikut pada
class module (kita beri nama class module tsb clsCrc) :



================= START HERE ====================



Private crcTable(0 To 255) As Long ‘crc32



Public Function CRC32(ByRef bArrayIn() As Byte, ByVal lLen As Long, Optional
ByVal lcrc As Long = 0) As Long



‘bArrayIn adalah array byte dari file yang dibaca, lLen adalah ukuran atau size
file



Dim lCurPos As Long ‘Current position untuk iterasi proses array bArrayIn

Dim lTemp As Long ‘variabel temp hasil perhitungan



If lLen = 0 Then Exit Function ‘keluar fungsi apabila ukuran file = 0

lTemp = lcrc Xor &HFFFFFFFF



For lCurPos = 0 To lLen

lTemp = (((lTemp And &HFFFFFF00) &H100) And &HFFFFFF) Xor (crcTable((lTemp And
255) Xor bArrayIn(lCurPos)))

Next lCurPos



CRC32 = lTemp Xor &HFFFFFFFF



End Function



Private Function BuildTable() As Boolean

Dim i As Long, x As Long, crc As Long

Const Limit = &HEDB88320



For i = 0 To 255

crc = i

For x = 0 To 7

If crc And 1 Then

crc = (((crc And &HFFFFFFFE) 2) And &H7FFFFFFF) Xor Limit

Else

crc = ((crc And &HFFFFFFFE) 2) And &H7FFFFFFF

End If

Next x

crcTable(i) = crc

Next i

End Function



Private Sub Class_Initialize()

BuildTable

End Sub



================= END HERE ====================



Lalu ketikkan kode berikut dalam event Command1_Click :



================= START HERE ====================



Dim namaFileBuka As String, HasilCrc As String

Dim CCrc As New clsCrc ‘bikin objek baru dari class ClsCrc

Dim calCrc As Long

Dim tmp() As Byte ‘array buat file yang dibaca



Private Sub Command1_Click()

CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada
CommonDialog

CommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog



On Error GoTo erorhandle ‘label error handle



CommonDialog1.ShowOpen

namafilbuka = CommonDialog1.FileName

Open namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan
akses baca pada mode binary

ReDim tmp(LOF(1) - 1) As Byte ‘deklarasi ulang untuk array, # Bugs Fixed #

Get #1, , tmp()

Close #1



calCrc = UBound(tmp) ‘mengambil ukuran file dari array

calCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC



HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan
dari class CRC masih berupa numeric

Text1.Text = HasilCrc ‘tampilkan hasilnya

Exit Sub



erorhandle:

If Err.Number <> 32755 Then MsgBox Err.Description ‘error number 32755 dalah
bila user mengklik tombol cancel pada saat memilih file



================= END HERE ====================



COba anda jalankan program diatas dengan memencet tombol F5, lalu klik Command1
untuk memilih dan membuka file. Maka program akan menampilkan CRC32nya.



Second#

Kode diatas dapat kita buat menjadi sebuah rutin pengecekan file suspect virus
dengan antara membandingkan hasil CRC32nya dan database CRC kita sendiri.
Algoritmanya adalah :

- Memilih file yang akan dicek

- Membuka file tersebut dalam mode binary

- Memproses byte demi byte untuk menghasilkan Checksum

- Buka file database

- Ambil isi file baris demi baris

- Samakan Checksum hasil perhitungan dengan checksum dari file



Format file database dapat kita tentukan sendiri, misal :

- FluBurung.A=ABCDEFGH

- Diary.A=12345678

Dimana FluBurung.A adalah nama virus dan ABCDEFGH dalah Crc32nya. Jika kita
mempunyai format file seperti diatas, maka kita perlu membaca file secara
sekuensial per baris serta memisahkan antara nama virus dan Crc32nya. Dalam hal
ini yang menjadi pemisah adalah karakter ‘=’.

Buat 1 module baru (– diberi nama module1) lalu isi dengan kode :



================= START HERE ====================



Public namaVirus As String, CrcVirus As String ‘deklarasi variabel global untuk
nama dan CRC virus Public pathExe as String ‘deklarasi variabel penyimpan lokasi
file EXE AV kita



Public Function cariDatabase(Crc As String, namaFileDB As String) As Boolean

Dim lineStr As String, tmp() As String ‘variabel penampung untuk isi file

Open namaFileDB For Input As #1 ‘buka file dengan mode input

Do

Line Input #1, lineStr

tmp = Split(lineStr, “=”) ‘pisahkan isi file bedasarkan pemisah karakter ‘=’

namaVirus = tmp(0) ‘masukkan namavirus ke variabel dari array

CrcVirus = tmp(1) ‘masukkan Crcvirus ke variabel dari array

If CrcVirus = Crc Then ‘bila CRC perhitungan cocok/match dengan database

cariDatabase = True ‘kembalikan nilai TRUE

Exit Do ‘keluar dari perulangan

End If

Loop Until EOF(1)

Close #1

End Function



================= END HERE ====================



Lalu tambahkan 1 objek baru kedalam Form, yaitu Command button2. lalu ketikkan
listing kode berikut kedalam event Command2_Click :



================= START HERE ====================

If Len(App.Path) <= 3 Then ‘bila direktori kita adalah root direktori

pathEXE = App.Path

Else

pathEXE = App.Path & “”

End If



CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada
CommonDialog

CommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog



On Error GoTo erorhandle ‘label error handle



CommonDialog1.ShowOpen

namafilbuka = CommonDialog1.FileName

Open namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan
akses baca pada mode binary

ReDim tmp(LOF(1) - 1) As Byte ‘deklarasi ulang untuk array # Bugs Fixed #

Get #1, , tmp()

Close #1



calCrc = UBound(tmp) ‘mengambil ukuran file dari array

calCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC



HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan
dari class CRC masih berupa numeric

If cariDatabase(HasilCrc, pathEXE & “DB.txt”) Then ‘bila fungsi bernilai TRUE

MsgBox “Virus ditemukan : ” & namaVirus ‘tampilkan message Box

End If

Exit Sub



erorhandle:

If Err.Number <> 32755 Then MsgBox Err.Description ‘error number 32755 dalah
bila user mengklik tombol cancel pada saat memilih file



================= END HERE ====================




Fitur AV sederhana ini dapat ditambahkan dengan fitur process scanner, akses
registry, real-time protection (RTP) dan lain lain. Untuk process scanner pada
dasarnya adalah teknik enumerasi seluruh proses yang sedang berjalan pada Sistem
Operasi, lalu mencari letak atau lokasi file dan melakukan proses scanning.
Fitur akses registry memungkinkan kita untuk mengedit secara langsung registry
windows apabila akses terhadap registry (–Regedit) diblok oleh virus. Sedangkan
fitur RTP memungkinkan AV kita berjalan secara simultan dengan windows explorer
untuk mengscan direktori atau file yang sedang kita browse atau lihat. Untuk
ketiga fitur lanjutan ini akan dibahas pada artikel selanjutnya.



Kesimpulan#

Tidak harus membeli software AV yang mahal untuk menjaga komputer kita dari
ancaman virus, kita bisa membuatnya sendiri dengan fitur-fitur yang tak kalah
bagusnya. Memang terdapat ketidaksempurnaan dalam AV buatan sendiri ini, tetapi
setidaknya dapat dijadikan pencegah dari infeksi virus komputer yang semakin
merajalela. Software AV sederhana ini dilengkapi oleh engine scanner statis dan
database definisi.



jadi, kalo mw buad AV yang aseli buatan kamuw, Silakan coba deh..



Load disqus comments

0 komentar