visual basic 6
- saya TIDAK bertanggung jawab atas penggunaan maupun penyalahgunaan dari artikel ini.
- Tujuan dibuat artikel HANYA untuk BAHAN PEMBELAJARAN saja.
- Penggunaan nama, merek, atau logo hanya sebagai CONTOH dan REFERENSI saja, TIDAK ada
- Tujuan dibuat artikel HANYA untuk BAHAN PEMBELAJARAN saja.
- Penggunaan nama, merek, atau logo hanya sebagai CONTOH dan REFERENSI saja, TIDAK ada
maksud mempromosikan pihak tertentu.
- saya mohon maaf apabila seluruh/sebagian dari isi artikel ini sudah tersirat dalam artikel sejenis lainnya.
- saya mohon maaf apabila seluruh/sebagian dari isi artikel ini sudah tersirat dalam artikel sejenis lainnya.
Bagi saya hal ini memang agak memberatkan mengingat update
file definisi atau engine AV tsb haruslah melalui koneksi internet.
Lalu bagaimana yang tidak mempunyai akses sama sekali? Konsekuensinya
ialah tertinggal dalam hal pengenalan varian virus baru yang pada
ujung-ujungnya membuat AV yang sudah terinstall bagai ‘Macan Ompong’.
Kalau kita membuat AV sendiri bagaimana? dengan database definisi
yang bisa diupdate oleh kita bahkan dapat saling tukar dengan teman?
Bisa saja, dengan syarat mau mempelajari sedikit teknik pemograman
.
Pertama kita harus mengerti bagaimana cara kerja sebuah AV sederhana,
pada dasarnya sebuah software AV mempunyai komponen-komponen :
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)
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)) As Byte ‘deklarasi ulang untuk array
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.
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)) As Byte ‘deklarasi ulang untuk array
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.
Daripada beli / download antivirus, apa salahnya kalau kita buat sendiri dan bisa di namai dengan nama kita sendiri
makasih sudah berkunjung di Bogorami FC


Gunakan Google Chrome Untuk Mendapatkan Tampilan Terbaik Blog Ini ( ^_^ )