Jumat, April 08, 2011
Membuat Anti-Virus Dengan Visual Basic 6.0
Diposting oleh RPL 1 (Rekayasa Perangkat Lunak)IT
Pada kenyataannya, banyak virus, worm dan sejenisnya yang beredar di indonesia pada umumnya tidaklah sulit untuk membunuhnya atau mengelabuhinya agar tidak dapat berjalan, berikut salah satu tips and triknya:
1. Install Software Visual Basic 6.0
Untuk membuat Anti-Virus ini pertama-tama kamu harus terlebih dahulu menginstall software Visual Basic 6.0(Yaiyalah…!!! Judulnya aja "Membuat Anti-virus dengan Visual Basic 6.0"), yang tersedia di toko-toko terdekat(biasanya Bajakan…) atau membeli software asli yang yang mempunyai lisensi dari Microsoft(itu baru warga negara yang baik namanya…).
2. Siapkan Virus-Virus Yang Akan Dijadikan Kelinci Percobaan(sampel).
Kita harus menyiapkan sampel dari virus-virus yang akan kita bunuh, yang berguna agar program Anti-Virus yang kita buat dapat mendeteksi dan mengenali virus-virus tersebut.
Semakin banyak sampel maka semakin baik pula program Anti-Virus tersebut dalam mendeteksi virus-virus yang ada.
Berikut hanya beberapa "Source Code" yang dianggap penting, dalam membuat Anti-Virus(Jangan marah kalo Anti-Virusnya nggak efektif…).
Lagipula jenis virus-virus dapat berubah setiap saat layaknya Antivirus yang selalu di Update.
Semakin banyak sampel maka semakin baik pula program Anti-Virus tersebut dalam mendeteksi virus-virus yang ada.
Berikut hanya beberapa "Source Code" yang dianggap penting, dalam membuat Anti-Virus(Jangan marah kalo Anti-Virusnya nggak efektif…).
Lagipula jenis virus-virus dapat berubah setiap saat layaknya Antivirus yang selalu di Update.
3. Mengambil/Membaca Signature Virus Yang Ada
Private Sub cmdTambah_Click()
Dim nf As Integer
Dim cVDF As String
Dim cPattern As String
cVDF = App.Path + “\Scan.vdf”
nf = FreeFile
Open cVDF For Append As #nf
cPattern = GetPatternFile(txtPath.Text)
If cPattern = “” Then
MsgBox “Failed to get pattern virus !!!”, vbCritical, vbOKOnly
Else
Print #nf, cPattern + txtVirus Name.Text
Call lstHistory.AddItem(”Tambah VDF : ” + txtVirus Name.Text, 0)
End If
Close #nf
End Sub
Kelemahan tehnik/jurus pamungkas ini adalah: Anti-Virus hanya akan berfungsi jika signature virusnya ada, jika tidak maka kemungkinan virus-virus tersebut tidak akan dikenali Anti-Virus yang akan kita buat ini.
Dim nf As Integer
Dim cVDF As String
Dim cPattern As String
cVDF = App.Path + “\Scan.vdf”
nf = FreeFile
Open cVDF For Append As #nf
cPattern = GetPatternFile(txtPath.Text)
If cPattern = “” Then
MsgBox “Failed to get pattern virus !!!”, vbCritical, vbOKOnly
Else
Print #nf, cPattern + txtVirus Name.Text
Call lstHistory.AddItem(”Tambah VDF : ” + txtVirus Name.Text, 0)
End If
Close #nf
End Sub
4.Men-Cek Proses yang sedang Berjalan
Public Sub CekProcesses()
Dim hSnapShot As Long
Dim ProcessEntry As PROCESSENTRY32
Dim NextEnumExists As Boolean
Dim Pos As Long
Dim pId As Long
Dim fileName As String
Dim baseName As String
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnapShot = 0 Then
MsgBox “Failed to create Module and Thread snapshot !!!”
Exit Sub
End If
ProcessEntry.dwSize = Len(ProcessEntry)
NextEnumExists = 0 <> Process32First(hSnapShot, ProcessEntry)
While NextEnumExists
pId = ProcessEntry.th32ProcessID
Pos = InStr(ProcessEntry.szExeFile, Chr(0))
If Pos > 1 Then
fileName = Left(ProcessEntry.szExeFile, Pos - 1)
baseName = extractFilename(fileName)
Else
fileName = “”
baseName = “”
End If
Call lstHistory.AddItem(”Periksa (” + Hex$(pId) + “) ” + fileName, 0)
Call cekModules(pId)
NextEnumExists = 0 <> Process32Next(hSnapShot, ProcessEntry)
Wend
Call CloseHandle(hSnapShot)
End Sub
Public Sub CekModules(pId As Long)
Dim ModuleEntry As TMODULEENTRY32
Dim hProcess As Long
Dim Proceed As Long
Dim hSnapShot As Long
Dim lWritten As Long
Dim sBuffer As String * 512
Dim ImageNTHeader As IMAGE_NT_HEADERS
Dim e_lfanew As Integer
Dim Pattern As String
Dim i As Integer
If GetVersion = VER_PLATFORM_WIN32_NT Then
If Not SetPrivilege(”SeDebugPrivilege”, True) Then Exit Sub
End If
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pId)
If hProcess <> 0 Then
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId)
If hSnapShot <> -1 Then
ModuleEntry.dwSize = Len(ModuleEntry)
Proceed = Module32First(hSnapShot, ModuleEntry)
Do While Proceed
sBuffer = Space(1024)
If ReadProcessMemory(hProcess, ByVal ModuleEntry.modBaseAddr, ByVal sBuffer, 512, lWritten) Then
If lWritten > 0 Then
e_lfanew = InStr(sBuffer, “PE” + Chr$(0) + Chr$(0)) - 1
If e_lfanew > 0 Then
If ReadProcessMemory(hProcess, ByVal (ModuleEntry.modBaseAddr + e_lfanew), ByVal ImageNTHeader, Len(ImageNTHeader), lWritten) Then
Pattern = buatPattern(ImageNTHeader)
i = 0
Do While i <= PatternCount If Pattern = Left(PatternVirus(i), Len(Pattern)) Then Exit Do i = i + 1Loop
If i <= PatternCount Then Call TerminateProcess(hProcess, 0) Call lstHistory.AddItem(”Found :” + Mid$(PatternVirus(i), Len(Pattern) + 1), 0) Call lstHistory.AddItem(”Action: Delete process”, 0) End If
End If
End If
End If
Proceed = Module32Next(hSnapShot, ModuleEntry)
Loop
End If
CloseHandle (hSnapShot)
End If
CloseHandle (hProcess)
If GetVersion() = VER_PLATFORM_WIN32_NT Then
Call SetPrivilege(”SeDebugPrivilege”, False)
End If
End Sub
Dim hSnapShot As Long
Dim ProcessEntry As PROCESSENTRY32
Dim NextEnumExists As Boolean
Dim Pos As Long
Dim pId As Long
Dim fileName As String
Dim baseName As String
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnapShot = 0 Then
MsgBox “Failed to create Module and Thread snapshot !!!”
Exit Sub
End If
ProcessEntry.dwSize = Len(ProcessEntry)
NextEnumExists = 0 <> Process32First(hSnapShot, ProcessEntry)
While NextEnumExists
pId = ProcessEntry.th32ProcessID
Pos = InStr(ProcessEntry.szExeFile, Chr(0))
If Pos > 1 Then
fileName = Left(ProcessEntry.szExeFile, Pos - 1)
baseName = extractFilename(fileName)
Else
fileName = “”
baseName = “”
End If
Call lstHistory.AddItem(”Periksa (” + Hex$(pId) + “) ” + fileName, 0)
Call cekModules(pId)
NextEnumExists = 0 <> Process32Next(hSnapShot, ProcessEntry)
Wend
Call CloseHandle(hSnapShot)
End Sub
Public Sub CekModules(pId As Long)
Dim ModuleEntry As TMODULEENTRY32
Dim hProcess As Long
Dim Proceed As Long
Dim hSnapShot As Long
Dim lWritten As Long
Dim sBuffer As String * 512
Dim ImageNTHeader As IMAGE_NT_HEADERS
Dim e_lfanew As Integer
Dim Pattern As String
Dim i As Integer
If GetVersion = VER_PLATFORM_WIN32_NT Then
If Not SetPrivilege(”SeDebugPrivilege”, True) Then Exit Sub
End If
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pId)
If hProcess <> 0 Then
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId)
If hSnapShot <> -1 Then
ModuleEntry.dwSize = Len(ModuleEntry)
Proceed = Module32First(hSnapShot, ModuleEntry)
Do While Proceed
sBuffer = Space(1024)
If ReadProcessMemory(hProcess, ByVal ModuleEntry.modBaseAddr, ByVal sBuffer, 512, lWritten) Then
If lWritten > 0 Then
e_lfanew = InStr(sBuffer, “PE” + Chr$(0) + Chr$(0)) - 1
If e_lfanew > 0 Then
If ReadProcessMemory(hProcess, ByVal (ModuleEntry.modBaseAddr + e_lfanew), ByVal ImageNTHeader, Len(ImageNTHeader), lWritten) Then
Pattern = buatPattern(ImageNTHeader)
i = 0
Do While i <= PatternCount If Pattern = Left(PatternVirus(i), Len(Pattern)) Then Exit Do i = i + 1
End If
End If
End If
Proceed = Module32Next(hSnapShot, ModuleEntry)
End If
CloseHandle (hSnapShot)
End If
CloseHandle (hProcess)
If GetVersion() = VER_PLATFORM_WIN32_NT Then
Call SetPrivilege(”SeDebugPrivilege”, False)
End If
End Sub
5.Mencari Virus-Virus
Function GetFiles(Path As String)
Dim ObjFSO As Object
Dim sFiles As Object
Dim Pattern As String
Dim i As Integer
On Error GoTo Finally
Set ObjFSO = CreateObject(”Scripting.FileSystemObject”)
txtScan.Text = Path
For Each sFiles In ObjFSO.GetFolder(Path).Files
DoEvents
If InStr(”bat bin com cmd dll exe ini htt pif”, Right$(sFiles, 3)) > 0 Then
Pattern = TakePatternFile(sFiles)
If Pattern <> “” Then
i = 0
Do While i <= PatternCount If Pattern = Left(PatternVirus(i), Len(Pattern)) Then Exit Do i = i + 1 Loop If i <= PatternCount Then Call lstHistory.AddItem(”File :” + sFiles, 0) Call lstHistory.AddItem(”Found :” + Mid$(PatternVirus(i), Len(Pattern) + 1), 0) End If End If End If Next Finally: End Function
Dim ObjFSO As Object
Dim sFiles As Object
Dim Pattern As String
Dim i As Integer
On Error GoTo Finally
Set ObjFSO = CreateObject(”Scripting.FileSystemObject”)
txtScan.Text = Path
For Each sFiles In ObjFSO.GetFolder(Path).Files
DoEvents
If InStr(”bat bin com cmd dll exe ini htt pif”, Right$(sFiles, 3)) > 0 Then
Pattern = TakePatternFile(sFiles)
If Pattern <> “” Then
i = 0
Do While i <= PatternCount If Pattern = Left(PatternVirus(i), Len(Pattern)) Then Exit Do i = i + 1 Loop If i <= PatternCount Then Call lstHistory.AddItem(”File :” + sFiles, 0) Call lstHistory.AddItem(”Found :” + Mid$(PatternVirus(i), Len(Pattern) + 1), 0) End If End If End If Next Finally: End Function
Sekarang dah selesai Anti-Virusnya, tinggal menjalankannya(membuat programnya…) pada Visual-Basic 6.0, selamat mencoba (tapi kalo nggak berhasil jangan marah ya..
0 komentar:
Posting Komentar