Menurut anda antivirus manakah yang mampu untuk menagani virus?

Apakah anda tertarik dengan web kami?

Kamis, 29 April 2010

Mari kita membuat antivirus sendiri

sebuah ANTIVIRUS sederhana, yang diperlukan :
1. Software Visual Basic 6.0 (Visual Basic)
02. Sedikit pemahaman akan pemograman Visual Basic 6.0
3. Sampel file bersih atau virus (– opsional)

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 Visual Basic6.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 bArrayInDim lTemp As Long ‘variabel temp hasil perhitungan
If lLen = 0 Then Exit Function ‘keluar fungsi apabila ukuran file = 0lTemp = lcrc Xor &HFFFFFFFF
For lCurPos = 0 To lLenlTemp = (((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 BooleanDim i As Long, x As Long, crc As LongConst Limit = &HEDB88320
For i = 0 To 255crc = iFor x = 0 To 7If crc And 1 Thencrc = (((crc And &HFFFFFFFE) 2) And &H7FFFFFFF) Xor LimitElsecrc = ((crc And &HFFFFFFFE) 2) And &H7FFFFFFFEnd IfNext xcrcTable(i) = crcNext iEnd Function
Private Sub Class_Initialize()BuildTableEnd Sub
================= END HERE ====================
Lalu ketikkan kode berikut dalam event Command1_Click :
================= START HERE ====================
Dim namaFileBuka As String, HasilCrc As StringDim CCrc As New clsCrc ‘bikin objek baru dari class ClsCrcDim calCrc As LongDim tmp() As Byte ‘array buat file yang dibaca
Private Sub Command1_Click()CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada CommonDialogCommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog
On Error GoTo erorhandle ‘label error handle
CommonDialog1.ShowOpennamafilbuka = CommonDialog1.FileNameOpen namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan akses baca pada mode binaryReDim tmp(LOF(1) – 1) As Byte ‘deklarasi ulang untuk array, # Bugs Fixed #Get #1, , tmp()Close #1
calCrc = UBound(tmp) ‘mengambil ukuran file dari arraycalCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC
HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numericText1.Text = HasilCrc ‘tampilkan hasilnyaExit 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=12345678Dimana 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 BooleanDim lineStr As String, tmp() As String ‘variabel penampung untuk isi fileOpen namaFileDB For Input As #1 ‘buka file dengan mode inputDoLine Input #1, lineStrtmp = Split(lineStr, “=”) ‘pisahkan isi file bedasarkan pemisah karakter ‘=’namaVirus = tmp(0) ‘masukkan namavirus ke variabel dari arrayCrcVirus = tmp(1) ‘masukkan Crcvirus ke variabel dari arrayIf CrcVirus = Crc Then ‘bila CRC perhitungan cocok/match dengan databasecariDatabase = True ‘kembalikan nilai TRUEExit Do ‘keluar dari perulanganEnd IfLoop Until EOF(1)Close #1End 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 direktoripathEXE = App.PathElsepathEXE = App.Path & “”End If CommonDialog1.CancelError = True ‘error bila user mengklik cancel pada CommonDialogCommonDialog1.DialogTitle = “Baca File” ‘Caption commondialog On Error GoTo erorhandle ‘label error handle CommonDialog1.ShowOpennamafilbuka = CommonDialog1.FileNameOpen namafilbuka For Binary Access Read As #1 ‘buka file yang dipilih dengan akses baca pada mode binaryReDim tmp(LOF(1) – 1) As Byte ‘deklarasi ulang untuk array # Bugs Fixed #Get #1, , tmp()Close #1 calCrc = UBound(tmp) ‘mengambil ukuran file dari arraycalCrc = CCrc.CRC32(tmp, calCrc) ‘hitung CRC HasilCrc = Hex(calCrc) ‘diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numericIf cariDatabase(HasilCrc, pathEXE & “DB.txt”) Then ‘bila fungsi bernilai TRUEMsgBox “Virus ditemukan : ” & namaVirus ‘tampilkan message BoxEnd IfExit Sub erorhandle:If Err.Number <> 32755 Then MsgBox Err.Description ‘error number 32755 dalah bila user mengklik tombol cancel pada saat memilih file

Tidak ada komentar:

Posting Komentar