Pernahkah anda kenal dg anti virus yang bernama ARTAV..!!
atau AV yg lainnya..
Mungkin sekarang kita g heran lagi yg kayak gtuan..
Contohnya yg baru ini,ada lagi blog tetangga yg share
antivirus buatan dia(ngakunya dia)..
Emang Sekarang kehadiran para virus maker (–selanjutnya
disingkat jadi VM
saja) lokal telah membuat gerah para user komputer tanah
air. Bisa
dibayangkan bila dari sekian banyak virus lokal tidak
satu-dua yang
menghancurkan data (terutama bagi file office; word, excel,
dll…). Bagi
para vendor Anti Virus (–selanjutnya disingkat menjadi AV
saja)
fenomena ini adalah lahan bisnis untuk produk mereka. Sebut
saja
NORMAN, yang kini men-support perusahaan konsultan virus
lokal
(–VAKSIN.COM) , Symantec, McAffe, NOD32, dan sebagainya.
Dengan
menawarkan update definisi software AV tercepat, engine
scanner paling
sensitif, dan lain-lain merupakan kiat untuk memancing para
korban
virus membeli dan menggunakan software AV mereka. Bagi
penulis sendiri
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 iyalah
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.
Jadi intinya sekarang Gua kasih bocoran dkt buat kalian,,
gimana mereka melakukannya..yook mulai...
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)
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. Tidak
tertutup kemungkinan software AV ini ditingkatkan lebih
advanced dalam
hal engine scannernya.
Mohon dengan sangat untuk berkomentar dan saran demi kemajuan bersama,, beri kritik yang bermanfaat dan jangan lupa join blog ini..!
oke??? terima kasih :) ConversionConversion EmoticonEmoticon