Sebelum melangkah ke pendeteksian virus sebaiknya kita mengenali istilah – istilah yang akan dipergunakan dalam teori berikut ini :
(CHECKSUM)
Checksum adalah jumlah yang telah dikalkulasikan sebagai fungsi dari suatu message.
Checksum adalah jumlah yang telah dikalkulasikan sebagai fungsi dari suatu message.
(MESSAGE)
Message dalam konteksnya adalah input data yang telah melewati proses checksum. Message biasanya adalah urutan bytes.
Message dalam konteksnya adalah input data yang telah melewati proses checksum. Message biasanya adalah urutan bytes.
(CRC32)
CRC32 adalah kepanjangan dari ” Cyclic Redundancy Code” dan 32 melambangkan panjang checksum dalam bit. Bentuk CRC yang disediakan untuk algoritma sesuai dengan ide pembagian ”polynomial”. Dan hal ini digunakan untuk memperhitungkan checksum yang sama dari seluruh algoritma CRC.
Algoritma CRC adalah cara yang bagus dan teruji untuk pengecekan byte dalam jumlah besar dari suatu file yang telah termodifikasi maupun tidak. Algoritma ini mencari lewat seluruh jumlah byte dan menghasilkan angka 32 bit untuk menggambarkan isi file. Dan sangat kecil sekali kemungkinan dua stream dari byte yang berbeda mempunyai CRC yang sama. Algoritma CRC32 dapat diandalkan juga untuk mengecek error yang terjadi dalam urutan byte. Dengan CRC32 kemungkinan perubahan standar (penyimpangan dari penghitungan CRC terhadap file) yang terjadi dapat dikendalikan. Untuk menghitung dengan metode CRC32 dilakukan dengan beberapa cara, yaitu :
CRC32 adalah kepanjangan dari ” Cyclic Redundancy Code” dan 32 melambangkan panjang checksum dalam bit. Bentuk CRC yang disediakan untuk algoritma sesuai dengan ide pembagian ”polynomial”. Dan hal ini digunakan untuk memperhitungkan checksum yang sama dari seluruh algoritma CRC.
Algoritma CRC adalah cara yang bagus dan teruji untuk pengecekan byte dalam jumlah besar dari suatu file yang telah termodifikasi maupun tidak. Algoritma ini mencari lewat seluruh jumlah byte dan menghasilkan angka 32 bit untuk menggambarkan isi file. Dan sangat kecil sekali kemungkinan dua stream dari byte yang berbeda mempunyai CRC yang sama. Algoritma CRC32 dapat diandalkan juga untuk mengecek error yang terjadi dalam urutan byte. Dengan CRC32 kemungkinan perubahan standar (penyimpangan dari penghitungan CRC terhadap file) yang terjadi dapat dikendalikan. Untuk menghitung dengan metode CRC32 dilakukan dengan beberapa cara, yaitu :
1. Perhitungan Tabel Lookup
Cara pertama kita harus menghitung kalkulasi tabel lookup yang berguna untuk menentukan standar isi dari tabel CRC32, yaitu dengan membandingkan nilai 255 yang heksanya FFFFFFFF dengan polynomial file yang telah distandarkan yaitu EDB88320 menggunakan Xor. Kemudian hasil dari perbandingan disimpan di tiap array ’F’ yang berjumlah 255 array.
Cara pertama kita harus menghitung kalkulasi tabel lookup yang berguna untuk menentukan standar isi dari tabel CRC32, yaitu dengan membandingkan nilai 255 yang heksanya FFFFFFFF dengan polynomial file yang telah distandarkan yaitu EDB88320 menggunakan Xor. Kemudian hasil dari perbandingan disimpan di tiap array ’F’ yang berjumlah 255 array.
2. Menghitung CRC32
Untuk menghitung CRC32 suatu file kita perlu ukuran dari file tersebut dan mengeset standar perbandingan untuk CRC32 ke heksa FFFFFFFF. Kemudian untuk mengecek nilai yang ada tiap byte nya dapat dipergunakan modul sbb :
Do While (count > 0)
For i = 0 To count – 1
iLookup = (crc32Result And &HFF) Xor buffer(i) ‘FF = 255
crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And
crc32Result = crc32Result Xor crc32Table(iLookup)
Next i
count = stream.Read(buffer, readSize)
Loop
Kemudian hasil yang didapat dibandingkan dengan output dari tabel Lookup yang telah dihitung dengan metode Xor. Dan nilai CRC32 diambil yang hasilnya tidak sama dari perbandingan tersebut.
3. Membuat proses tadi ke dalam class di VB
Setelah proses di atas tadi dibuat, kita harus menjadikan proses-proses tersebut ke dalam kelas di VB. Untuk itu kita menggunakan class cBinaryFileStream yang disediakan dari source data file untuk memecah-mecah file ke dalam bentuk binary. Sehingga file dapat dibaca ke dalam potongan-potongan kecil dan mempercepat proses penghitungan.
Dim cStream As New cBinaryFileStream
cStream.File = txtFileName.Text
Untuk menghitung CRC32 suatu file kita perlu ukuran dari file tersebut dan mengeset standar perbandingan untuk CRC32 ke heksa FFFFFFFF. Kemudian untuk mengecek nilai yang ada tiap byte nya dapat dipergunakan modul sbb :
Do While (count > 0)
For i = 0 To count – 1
iLookup = (crc32Result And &HFF) Xor buffer(i) ‘FF = 255
crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And
crc32Result = crc32Result Xor crc32Table(iLookup)
Next i
count = stream.Read(buffer, readSize)
Loop
Kemudian hasil yang didapat dibandingkan dengan output dari tabel Lookup yang telah dihitung dengan metode Xor. Dan nilai CRC32 diambil yang hasilnya tidak sama dari perbandingan tersebut.
3. Membuat proses tadi ke dalam class di VB
Setelah proses di atas tadi dibuat, kita harus menjadikan proses-proses tersebut ke dalam kelas di VB. Untuk itu kita menggunakan class cBinaryFileStream yang disediakan dari source data file untuk memecah-mecah file ke dalam bentuk binary. Sehingga file dapat dibaca ke dalam potongan-potongan kecil dan mempercepat proses penghitungan.
Dim cStream As New cBinaryFileStream
cStream.File = txtFileName.Text
Dim cCRC32 As New cCRC32
Dim lCRC32 As Long
Dim lCRC32 As Long
lCRC32 = cCRC32.GetFileCrc32(cStream)
Sepeti kode di atas kita dapat menggunakan metode GetFileCrc32 untuk menghitung Crc32 dari byte tiap aray.
Implementasi CRC32 ke Pendeteksian Virus
Virus dapat dikenali melalui banyak cara, mulai dari nama file, ukuran atau dengan membongkar isi file dan menemukan penandanya. Ada beberapa kelemahan jika kita hanya mengenalinya dari nama file. Terkadang program virus tidak memakai nama asli dari virus itu sendiri. Misalnya virusHallo.roro.htt memakai nama program pemicunya syssrv.exe. Sehingga mau tidak mau untuk mendeteksi program itu kita melihatnya melalui ukuran file. Ukuran file pun belum menjamin bahwa file tersebut adalah virus. Bisa saja ukuran filenya sama tetapi programnya berbeda. Sehingga diperlukan metode lain untuk mengenali file virus. Dengan membongkar isi file hal tersebut membutuhkan waktu yang banyak. Jika hanya satu atau dua file saja yang dibongkar tidak masalah. Tetapi jika enam ratus, seribu atau seribu lima ratus file, pasti sangat memerlukan waktu yang tidak singkat. Memakai metode checksum error dapat menjadi pilihan yang tepat. Dan Algoritma yang sering digunakan itu lebih dikenal dengan istilah Pengecekan virus dengan algoritma 3EB (3 Executable Binaries) dan Pengecekan varian virus dengan algoritma EIB (Executable Icon Binary).
Virus dapat dikenali melalui banyak cara, mulai dari nama file, ukuran atau dengan membongkar isi file dan menemukan penandanya. Ada beberapa kelemahan jika kita hanya mengenalinya dari nama file. Terkadang program virus tidak memakai nama asli dari virus itu sendiri. Misalnya virusHallo.roro.htt memakai nama program pemicunya syssrv.exe. Sehingga mau tidak mau untuk mendeteksi program itu kita melihatnya melalui ukuran file. Ukuran file pun belum menjamin bahwa file tersebut adalah virus. Bisa saja ukuran filenya sama tetapi programnya berbeda. Sehingga diperlukan metode lain untuk mengenali file virus. Dengan membongkar isi file hal tersebut membutuhkan waktu yang banyak. Jika hanya satu atau dua file saja yang dibongkar tidak masalah. Tetapi jika enam ratus, seribu atau seribu lima ratus file, pasti sangat memerlukan waktu yang tidak singkat. Memakai metode checksum error dapat menjadi pilihan yang tepat. Dan Algoritma yang sering digunakan itu lebih dikenal dengan istilah Pengecekan virus dengan algoritma 3EB (3 Executable Binaries) dan Pengecekan varian virus dengan algoritma EIB (Executable Icon Binary).
Cara – cara mengenali sebuah virus melalui metode checksum error akan dijelaskan sebagai berikut :
1. Memilih file yang akan diperiksa
2. Mengambil informasi dari file tersebut, yaitu nama, ukuran
3. Menghitung checksum file yang diambil dari ukuran file dengan metode crc32.
4. Menggunakan hasil checksum tersebut untuk mengenali bahwa program tersebut adalah virus.
1. Memilih file yang akan diperiksa
2. Mengambil informasi dari file tersebut, yaitu nama, ukuran
3. Menghitung checksum file yang diambil dari ukuran file dengan metode crc32.
4. Menggunakan hasil checksum tersebut untuk mengenali bahwa program tersebut adalah virus.
Untuk implemantasinya anda dapat mempelajari sample project antivirus dari SmadAV 2.3 yang bisa di Download pada Link berikut :
DOWNLOAD : Sample Project SmadAV 2.3
No comments:
Post a Comment