Posted by :
Arief Hilman Nugraha
Friday, November 4, 2011
Mungki
ini sangat sederhana dan dibuat untuk menangapi tutorial sebelumnya yang tidak
lengkap apabila hanya membuat virus saja oke langsung aja deh tanpa basa-basi
lagi :D
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
Blog
dengan ID 134100 Tidak ada
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.
- 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)) 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
Selamat
mencoba dan semoga sukses,, ,, ,
Related Posts :
- Back to Home »
- Tips Dan Trik Komputer dan Internet »
- Cara Membuat Anti Virus
gantulisan nya tuh gak keliatan hitam semua
ReplyDeletekombinasikan lah ama bagroun nya agan biar jelas tulisan nya