Membuat Anti Virus Sendiri
16.43 |
Diposting oleh
edy |
Edit Entri
Cara Membuat Anti Virus Sendiri
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.
Sumber : http://orispyro.wordpress.com/
Langganan:
Posting Komentar (Atom)
Labels
- agar blog dikenal di search engine (2)
- antivirus (2)
- APA ITU HAMSTER (1)
- AWSurvey (1)
- bagaimana blog dibayar (1)
- bagaimana blog menghasilkan uang (1)
- biografi nabi muhammad saw (2)
- bisnis online (4)
- bisnis sampingan (1)
- buffering video (1)
- Bumbu Pecel (1)
- cara buka situs yang diblok (1)
- cara install POINT BLANK (1)
- CARA MEMASANG GAME DI BLOG (1)
- cara memasang game online di blog (1)
- cara memasang warnet (1)
- cara membuat antivirus (2)
- cara membuat antivirus sendiri (1)
- cara membuat cd hiren's (1)
- cara membuat halaman blog (1)
- cara membuat iso (1)
- cara membuat iso windows xp (1)
- CARA MEMBUAT MENU HORIZONTAL PADA BLOG (1)
- cara membuat menu horizontal pada blogspot (1)
- cara membuat program dengan visual basic (1)
- cara membuat virus dengan notepad (3)
- cara membuat virus sederhana (2)
- cara memelihara hamster (1)
- cara memperbaiki komputer yang sering restart sendiri (1)
- cara mempercantik blog (2)
- cara mendapatkan uang dari blog (1)
- cara mengganti temlpate blog (1)
- cara mengganti template blog (3)
- cara menghilangkan navigation bar (1)
- cara merakit komputer (1)
- cara merakit komputer dengan mudah (1)
- CARA PASANG GAME PADA BLOG (1)
- cara rujuk (1)
- cd bootable (1)
- cd mini windows xp (1)
- CD MINIPE (1)
- chatting dengan jaringan LAN (1)
- chatting facebook via Yahoo Messenger (1)
- dapat uang dari internet (1)
- dibayar per clik (1)
- Download (5)
- Download gratis (1)
- download gratisan (1)
- download teamviewer porttable (1)
- driver epson c79 (1)
- GAME BLOG (1)
- GAME JAVA (1)
- game online (1)
- game point blank (1)
- ganti template blogger (1)
- HAMSTER (1)
- Hamster melahirkan (1)
- hiren's boot cd (1)
- instal windows xp dengan flasdisk (1)
- instalasi warnet (1)
- INSTALL GAME JAVA (1)
- install windows dengan cepat (1)
- install windows xp dengan usb flasdisk (1)
- Install windows xp pake usb (1)
- Install windows xp sp2 (1)
- islam kaffah (1)
- ISO Image (1)
- iso windows xp sp2 (1)
- jual kerupuk kulit (1)
- kerupuk kulit (1)
- komputer lemot (1)
- makanan hamster (1)
- martabak bangka (2)
- martabak manis (2)
- memaksimalkan blog (1)
- Membuat antivirus (5)
- membuat antivirus sendiri (1)
- membuat boottable (1)
- membuat cd iso bootable windows xp dari hardisk (1)
- membuat file iso dengan nero 9 (1)
- Membuat ISO dari CD/DVD (1)
- membuat iso image (1)
- membuat menu bar horizontal pada blog (1)
- membuat menu bar sendiri di blog (1)
- membuat menu dropdown (1)
- MEMBUAT PROGRAM DENGAN VISUAL BASIC 6.0 (1)
- membuat virus notepad (1)
- membuka situs yg diblok (1)
- Menambah Kapasitas Flasdisk/USB (1)
- menghapus foto di facebook (1)
- menghias blog (1)
- menghilangkan navbar (1)
- menginstal windows dengan flasdisk (1)
- menjadi seorang muslim yang kaffah (1)
- menjebol password administrator windows (1)
- MENU DROPDOWN (1)
- MENU HORIZONTAL PADA BLOG (1)
- nabi yang agung (1)
- nasehat seorang sahabat (1)
- nortnon ghost via flasdsik (1)
- norton ghost (1)
- norton ghost usb (1)
- Obat Diare (1)
- optimalisasi blog (1)
- osama telah tewas (1)
- pasang banner di blog (1)
- pasang iklan di blog (1)
- Pecel Ayam atau Pecel Lele (1)
- peluang usaha (1)
- pemimpin dunia (1)
- penempatan kode html (1)
- PETERNAKAN HAMSTER (2)
- PowernISO (1)
- PPC (1)
- renungan muslim (1)
- resep martabak bangka (1)
- reseter epson c79 (2)
- rujuk (1)
- sang khalifah (1)
- sejarah nabi muhammad saw (2)
- service printer epson t11 (1)
- Share Printer (1)
- SOLAT NABI MUHAMMAD SAW (1)
- SOLAT ROSULULLAH SAW (1)
- supaya blog terditeksi di mesin pencari (1)
- tahlilan dan qunut (1)
- tahlilan menurut islam (1)
- TATA CARA SHOLAT NABI MUHAMMAD SAW (1)
- TATA CARA SOLAT MALAM DAN WITIR (1)
- TATA CARA WUDHU YANG BAIK (1)
- template blogger (1)
- tips dan trik blog (2)
- tips dan trik mendapatkan uang lewat blog (1)
- tips menghilangkan buffering video (1)
- tokoh dunia (1)
- ultraiso (1)
- usaha (1)
- usaha sampingan untuk karyawan (1)
- VB 6.0 (4)
- virus notepad (2)
- virus shortcut (1)
- warnet (1)
- WINDOWS LIVE MINIPE (1)
- WUDHUNYA ROSUL (1)
- yahoo messenger untuk linux (1)
ARSIP
-
▼
2011
(127)
- ► 02/20 - 02/27 (1)
- ► 02/27 - 03/06 (1)
- ► 03/06 - 03/13 (2)
- ► 03/20 - 03/27 (17)
- ► 03/27 - 04/03 (6)
- ► 04/03 - 04/10 (17)
- ► 04/10 - 04/17 (11)
- ► 04/17 - 04/24 (1)
-
▼
04/24 - 05/01
(16)
- Hukum Tahlilan
- Hukum Tahlilan dan Doa Qunut
- cara menghapus foto di face book
- DOWNLOAD GRATIS
- Cara Menambah Kapasitas Flashdisk 1GB menjadi 2GB
- CARA SHARING PRINTER
- Membuat Anti Virus Sendiri
- CARA MEMBUAT ANTIVIRUS SENDIRI
- Membuat Antivirus sendiri
- CARA INSTALL GAME JAVA KE HP
- CARA MENGINSTAL APLIKASI DI LINUX
- Download Hiren's Boot CD Version 10.2
- Tips dan Trik Membuat Menu Horizontal
- Membuat Bootable CD dengan UBCD4WIN
- Cara Mudah Buat CD ISO Bootable Windows XP dari Ha...
- CARA MEMBUAT ISO WINDOWS XP SP2
- ► 05/01 - 05/08 (14)
- ► 05/08 - 05/15 (2)
- ► 05/15 - 05/22 (6)
- ► 05/22 - 05/29 (2)
- ► 05/29 - 06/05 (2)
- ► 06/12 - 06/19 (3)
- ► 06/19 - 06/26 (1)
- ► 06/26 - 07/03 (1)
- ► 07/03 - 07/10 (2)
- ► 07/10 - 07/17 (7)
- ► 07/17 - 07/24 (2)
- ► 07/31 - 08/07 (7)
- ► 09/11 - 09/18 (1)
- ► 10/02 - 10/09 (5)
0 komentar:
Posting Komentar