Sunday, November 23, 2008

Konsep CRC32

Apa itu CRC32 ? CRC kepanjangan dari Cyclic Redundancy Check .
CRC32 adalah sebuah fungsi pengecekan nilai suatu file berdasarkan titik-titik tertentu dalam 32 bit untuk menghasilkan nilai berbeda pada tiap file berupa nilai heksa .Nilai heksa yang dihasilkan akan berupa 8 angka (dalam heksa = 0-9 & A-F) .
CRC32 digunakan untuk melakukan pengecekan terhadap sebuah file yang sekarang apakah sama dengan nilai file asli . Biasanya file yang dikirimkan lewat e-mail atau di-download dari internet memakai deteksi ini, sehingga dapat diketahui apa file itu rusak atau tidak .
Berikut ini adalah source code CRC32 sederhana untuk pengecekan teks dengan Visual Basic 6 :
Buat sebuah form dengan 2 TextBox , text1 digunakan untuk memasukkan teks yang akan dicek dan text2 digunakan untuk mendapatkan nilai CRC32-nya .
Buat juga sebuah command button untuk menghasilkan nilai .
Tuliskan kode berikut
Option Explicit
Option Compare Text
Private CRC32Table(255) As Long
Private Sub command1_click()
Dim lCrc32Value As Long
On Error Resume Next
lCrc32Value = InitCRC32()
lCrc32Value = AddCrc32(Text1.Text, lCrc32Value)
Text2.Text = Hex$(GetCrc32(lCrc32Value))
End Sub

Public Function InitCRC32(Optional ByVal Seed As Long = &HEDB88320, Optional ByVal Precondition As Long = &HFFFFFFFF) As Long
Dim iBytes, iBits As Integer
Dim lCrc32, lTempCrc32 As Long
On Error Resume Next
For iBytes = 0 To 255
lCrc32 = iBytes
For iBits = 0 To 7
lTempCrc32 = lCrc32 And &HFFFFFFFE
lTempCrc32 = lTempCrc32 \ &H2
lTempCrc32 = lTempCrc32 And &H7FFFFFFF
If (lCrc32 And &H1) <> 0 Then
lCrc32 = lTempCrc32 Xor Seed
Else
lCrc32 = lTempCrc32
End If
Next
CRC32Table(iBytes) = lCrc32
Next
InitCRC32 = Precondition
End Function
Public Function AddCrc32(ByVal Item As String, ByVal Crc32 As Long) As Long
Dim bCharValue As Byte
Dim iCounter As Integer
Dim lIndex, lAccValue, lTableValue As Long
On Error Resume Next
For iCounter = 1 To Len(Item)
bCharValue = Asc(Mid$(Item, iCounter, 1))
lAccValue = Crc32 And &HFFFFFF00
lAccValue = lAccValue \ &H100
lAccValue = lAccValue And &HFFFFFF
lIndex = Crc32 And &HFF
lIndex = lIndex Xor bCharValue
lTableValue = CRC32Table(lIndex)
Crc32 = lAccValue Xor lTableValue
Next
AddCrc32 = Crc32
End Function

Public Function GetCrc32(ByVal Crc32 As Long) As Long
On Error Resume Next
GetCrc32 = Crc32 Xor &HFFFFFFFF
End Function
Ada beberapa teknik pengecekan lagi selain CRC32, seperti MD5 ,SHA ,RIPEMD dan HAVAL . Teknik tersebut akan dibahas di tulisan selanjutnya .

Menghidar dari KillerVB atau AVBKIller

Apa itu KillerVB?
KillerVB adalah sebuah program pembunuh proses dari program yang terbuat dari Visual Basic .
Biasanya program Visual Basic dikenali dengan adanya modul MSVBVM50.DLL (VB 5) dan MSVBVM60.DLL (VB6) ,
pada Windows XP biasanya ada di C:\WINDOWS\system32\ .
Dengan me-rename atau menghapus file itu semua program VB tidak akan berjalan .
Karena virus-virus lokal kebanyakan menggunakan Visual Basic ,
maka dibuatlah program KillerVB ini .
Konsep dasar dari KillerVB adalah membunuh semua proses yang sedang memakai modul MSVBVM50.DLL atau MSVBVM60.DLL . Untuk menghindar deteksi dari program ini , buka program EXE dari Visual Basic Anda dengan Hex Editor cari semua string MSVBVM50.DLL atau MSVBVM60.DLL , lalu ubah string tersebut sesuka Anda misal MSVBVM00.DLL .
Ada juga aplikasi pembunuh VB dengan melihat Titel Class Name yang secara default adalah ThunderRT*Form . Untuk menghindarinya Anda dapat menghapus/mengubah string Thunder tersebut yang ada dalam file library VB ,misal Thundor .
Ada lagi aplikasi AVBKiller buatan Anvie yang dapat didownload di www.ansav.com . AVBKiller ini terbuat dari bahasa C++ 6 dengan mode DOS . Dalam source code-nya program ini memiliki 2 metode , yaitu RVA mode dan RAW mode .Untuk RVA mode metodenya sama seperti KillerVB , yaitu mencari apa program memakai modul VB (MSVBVM60.DLL) . Jadi , mode ini juga akan membunuh Microsoft Visual Basic 6 karena memakai modul MSVBVM60.DLL . Untuk RAW mode ada 2 tahap pengecekan , pertama EXPORT TABLE dan kedua ENGINE SECTION STUB .
Beberapa cara yang saya cari tidak menghasilkan . Ada cara yang terbukti ampuh, saya menemukan cara ini setelah mengkompres file EXE tetapi tetap terdeteksi . Caranya adalah kompres file library tersebut, misal dengan UPX . Namun,usahakan menggunakan compressor yang kurang dikenal .
Terima kasih pada ANSAV+ Anvie dan ANDA .
Mohon maaf jika tulisannya kurang dipahami .