LAMPIRAN A
Listing Program Antivirus
Private Sub cmdChecksum_Click() frmGenerator.Show
End Sub
Private Sub Command3_Click()
MsgBox "[Daftar Virus]" & Chr(13) & "1. Virus1" & Chr(13) & "2. Virus2" & Chr(13) & "3. Virus3", vbOKOnly, "Daftar Virus"
End Sub
Private Sub Command4_Click()
MsgBox "isi pesan ini sesuka anda !", vbExclamation, "Tentang" End Sub
Private Sub Form_Load()
lstResult.AddItem "Welcome to MY ANTIVIRUS !" lstResult.AddItem "Copyright © 2009 - 2010, AndaSoft" lstScan.AddItem Environ$("windir") & "\*.*"
BERHENTI = True ' Set nilai Berhenti True BacaDatabase App.path & "\database.db" End Sub
Private Sub cmdAdd_Click()
UniDialog1.FolderMessage = "Select a path : " UniDialog1.ShowFolder
End Sub
Private Sub cmdRemove_Click() On Error Resume Next
Static count As Integer
For count = 1 To lstScan.ListCount
If lstScan.Selected(count - 1) = True Then lstScan.RemoveItem (count - 1) Next
End Sub
Private Sub Command1_Click() Static count As Byte
If lstScan.ListCount = 0 Then Exit Sub If Command1.Caption = "Start &scan" Then BERHENTI = False
PosisiScan (True)
lstResult.Clear
For count = 0 To lstScan.ListCount - 1 If BERHENTI = True Then Exit For lstResult.AddItem "[Scanning File ...]" lstResult.AddItem " "
lstResult.AddItem " "
ScanFolder RemoveFromRight(lstScan.List(count), 4), lblFile, lstResult Next
Command1.Caption = "Start &scan" PosisiScan (False)
BERHENTI = True
MsgBox "Scan is finished !", vbInformation, "MY Antivirus" Else
BERHENTI = True
Command1.Caption = "Start &scan" PosisiScan (False)
End If End Sub
Private Sub Command2_Click() frmOption.Show 1, Me
End Sub
Private Sub Command5_Click() Unload Me
End End Sub
Private Sub Form_Resize() On Error Resume Next Me.Height = 8235 Me.Width = 10320 End Sub
Private Sub Form_Unload(Cancel As Integer) If BERHENTI = False Then Cancel = 1 End Sub
Private Sub Image1_Click() frmGenerator.Show
End Sub
Private Sub UniDialog1_FolderSelect(ByVal path As String) If path <> "" Then
lstScan.AddItem path & "\*.*" End If
Private Function AddSlash(sPath As String) As String If Right(sPath, 1) = "\" Then
AddSlash = sPath Else
AddSlash = sPath & "\" End If
End Function
Private Sub PosisiScan(TF As Boolean) If TF = True Then Command2.Enabled = False Command3.Enabled = False Command4.Enabled = False Command5.Enabled = False frScan.Enabled = False frResult.Enabled = False Else Command2.Enabled = True Command3.Enabled = True Command4.Enabled = True Command5.Enabled = True frScan.Enabled = True frResult.Enabled = True End If End Sub
Private Function RemoveFromRight(sTemp As String, iRight As Integer) As String RemoveFromRight = Left(sTemp, Len(sTemp) - iRight)
End Function Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "user32" () Private Const WM_NCLBUTTONDOWN = &HA1 Private Const HTCAPTION = 2
Private Sub cmdCancel_Click() ck1.value = 0
ck2.value = 0 ck3.value = 0 Me.Hide End Sub
Private Sub cmdOK_Click() Me.Hide
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
Dim lngReturnValue As Long If Button = 1 Then
Call ReleaseCapture
lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
End If End Sub
Private Sub Command1_Click() Text2.Text = GET_MD5(Text1.Text) End Sub
Option Explicit
';+---+; ';Modul untuk membaca file standar fungsi API, via Kernel32.dll ';karena VB6 tidak mendukung pengoperasian file secara unicode - ';dalam hal akses alamat filenya.
';Bisa dianggap sebagai "simulasi" instruksi vb6: Open ... As #n ';Bukan yang terbaik, tapi relatif lebih stabil diantara cara-cara - ';yang lainnya.
';Pengecualian:
'; ~tidak bisa membaca + menulis file yang dikunci oleh proses lain. '; ~...
';+---+; ';PMZ-Indonesia, 24-25@Agustus@2008.
';+---+; Private Const MAX_PATH As Long = 260 '00-FF
Private Const MAX_BUFFER As Long = (MAX_PATH * 2) '00 00 - FF FF Private Const SYNCHRONIZE = &H100000 'penting! sinkronisasi data dan akses dengan proses lain.
Private Const READ_CONTROL = &H20000 'penting! ijin untuk mengoperasikan file.
Private Const FILE_READ_DATA = (&H1) 'penting! operasi: membaca file. Private Const FILE_WRITE_DATA = (&H2) 'penting! operasi: menulis file. Private Const FILE_SHARE_READ = &H1 'dapat diakses baca oleh proses lain. Private Const FILE_SHARE_WRITE = &H2 'dapat diakses tulis oleh proses lain. Private Const FILE_SHARE_DELETE = &H4 'dapat diakses hapus oleh proses lain. Private Const FILE_ATTRIBUTE_NORMAL = &H80 'untuk file standar.
'operasi alternatif untuk file yang akan dibuat ataupun dibuka:
Private Const FILE_DISPOSE_CREATE_NEW = 1 'hanya akan membuat file baru. bila file sudah ada sebelumnya, fungsi gagal.
Private Const FILE_DISPOSE_CREATE_ALWAYS = 2 'hapus file yang lama (bila ada), dan akan membuat file yang baru.
Private Const FILE_DISPOSE_OPEN_EXISTING = 3 'hanya akan membuka file yang sudah ada, bila file tidak ada, fungsi gagal.
Private Const FILE_DISPOSE_OPEN_ALWAYS = 4 'membuka file yang ada (bila ada), dan akan membuat file yang baru bila file belum ada.
Private Const FILE_DISPOSE_TRUNCATE_EXISTING = 5 'membuka file yang sudah ada, dan menghapus semua isinya terlebih dahulu. fungsi gagal bila file tidak ada.
'membuka file:
Private Declare Function CreateFileW Lib "kernel32" (ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long,
lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CreateFileA Lib "kernel32" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long,
lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long 'mencari ukuran file:
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
'menggeser posisi pointer ke file:
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal
dwMoveMethod As Long) As Long 'operasi dasar untuk file yang telah dibuka:
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
'menutup file yang telah dibuka:
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'\\Ingat!:
Public Enum CREATE_ACCESS_OPTIONS
FOR_BINARY_ACCESS_READ = 1 'hanya membaca isi dari file, tanpa memodifikasi isi file. bila file tidak ada, fungsi gagal.
FOR_BINARY_ACCESS_WRITE = 2 'hanya menulis isi ke file, bila file belum ada, akan dibuatkan file baru.
FOR_BINARY_ACCESS_READ_WRITE = 3 'untuk membaca dan menulis file, bila file belum ada, akan dibuatkan file baru.
FOR_BINARY_ACCESS_READ_WRITE_EXISTING = 4 'untuk membaca dan menulis file, bila file belum ada, fungsi akan gagal. lebih aman.
End Enum '\\Ingat!:
Public Enum SHARE_ACCESS_OPTIONS
LOCK_READ_WRITE = 1 'hanya "sharing delete access", untuk proses yang lain. LOCK_READ = 2 'hanya "sharing write + delete access", untuk proses yang lain.
LOCK_WRITE = 3 'hanya "sharing read + delete access", untuk proses yang lain.
LOCK_NONE = 4 '"sharing" semuanya, tanpa terkecuali. End Enum
Public Function VbOpenFile(ByVal szFileName As String, ByVal opCreateOption As CREATE_ACCESS_OPTIONS, ByVal opShareAccess As
SHARE_ACCESS_OPTIONS) As Long
On Error Resume Next 'memberi nomor handle ke file bila berhasil, 0 jika gagal. Dim KeResult As Long 'result dari kernel32.
Dim KeCreateAccess As Long Dim KeCreateOption As Long Dim KeShareAccess As Long
Select Case opCreateOption
Case FOR_BINARY_ACCESS_READ '1
KeCreateAccess = SYNCHRONIZE Or READ_CONTROL Or FILE_READ_DATA
KeCreateOption = FILE_DISPOSE_OPEN_EXISTING Case FOR_BINARY_ACCESS_WRITE '2
KeCreateAccess = SYNCHRONIZE Or READ_CONTROL Or FILE_WRITE_DATA
KeCreateOption = FILE_DISPOSE_OPEN_ALWAYS Case FOR_BINARY_ACCESS_READ_WRITE '3
KeCreateAccess = SYNCHRONIZE Or READ_CONTROL Or FILE_READ_DATA Or FILE_WRITE_DATA
KeCreateOption = FILE_DISPOSE_OPEN_ALWAYS Case FOR_BINARY_ACCESS_READ_WRITE_EXISTING '4 KeCreateAccess = SYNCHRONIZE Or READ_CONTROL Or FILE_READ_DATA Or FILE_WRITE_DATA
KeCreateOption = FILE_DISPOSE_OPEN_EXISTING End Select
Select Case opShareAccess
Case LOCK_READ_WRITE '1
KeShareAccess = FILE_SHARE_DELETE Case LOCK_READ '2
KeShareAccess = FILE_SHARE_WRITE Or FILE_SHARE_DELETE Case LOCK_WRITE '3
KeShareAccess = FILE_SHARE_READ Or FILE_SHARE_DELETE Case LOCK_NONE '4
KeShareAccess = FILE_SHARE_READ Or FILE_SHARE_WRITE Or FILE_SHARE_DELETE
End Select
'pakai cara utama (unicode):
KeResult = CreateFileW(StrPtr(szFileName), KeCreateAccess, KeShareAccess, ByVal 0, KeCreateOption, FILE_ATTRIBUTE_NORMAL, 0)
If KeResult > 0 Then 'sukses pakai cara unicode.
VbOpenFile = KeResult 'masukkan ke fungsi (return): nomor handle menuju ke file.
GoTo TERAKHIR End If
'pakai cara cadangan (ansi):
KeResult = 0 'reset, sekarang coba pakai ansi:
KeResult = CreateFileA(szFileName, KeCreateAccess, KeShareAccess, ByVal 0, KeCreateOption, FILE_ATTRIBUTE_NORMAL, 0)
If KeResult > 0 Then 'sukses pakai cara ansi.
VbOpenFile = KeResult 'masukkan ke fungsi (return): nomor handle menuju ke file.
GoTo TERAKHIR End If
VbOpenFile = 0 'gagal membuka file :( TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Function
Public Function VbFileLen(ByVal nFileHandle As Long) As Long
On Error Resume Next 'memberi nilai angka sebesar ukuran file dalam bytes. VbFileLen = GetFileSize(nFileHandle, 0) TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Function
Public Function VbCloseFile(ByVal nFileHandle As Long) As Long On Error Resume Next 'memberi nilai 1 jika berhasil, 0 jika gagal. VbCloseFile = CloseHandle(nFileHandle) TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Function
Public Function VbReadFileB(ByVal nFileHandle As Long, ByVal nStartPos As Long, ByVal nReadLength As Long, ByRef OutFileData() As Byte) As Long On Error Resume Next 'memberi isi ukuran file (buffer) dalam bytes sebagai pengembalian (return) + isi buffer.
Erase OutFileData 'reset memori data. 'lanjut yang baru:
Dim nTrueLen As Long
nTrueLen = GetFileSize(nFileHandle, 0) 'cari ukuran filenya. Dim nRequestStart As Long
Dim nRequestLen As Long Dim nApproxLen As Long Dim KeResult As Long
'optimisasi opsional, dapat diganti sesuai keinginan: If nTrueLen <= -1 Then
VbReadFileB = -1 'error: file tidak ada. GoTo TERAKHIR
ElseIf nTrueLen = 0 Then
VbReadFileB = -2 'error: file isi kosong. GoTo TERAKHIR
End If
If nStartPos > nTrueLen Then
VbReadFileB = -3 'error: start melebihi akhir. GoTo TERAKHIR
End If
If nStartPos <= 0 Then
VbReadFileB = -4 'error: start pointer tidak sesuai. GoTo TERAKHIR
End If
If nReadLength <= 0 Then
VbReadFileB = -5 'error: panjang yang diminta tidak sesuai. GoTo TERAKHIR
End If
If nReadLength > nTrueLen Then
VbReadFileB = -6 'error: panjang yang diminta melebihi akhir. GoTo TERAKHIR
End If
nRequestStart = nStartPos 'start pointer ke data (base 1). nRequestLen = nReadLength 'panjang data.
ReDim OutFileData(nRequestLen - 1) As Byte 'persiapkan buffer data (base 0).
SetFilePointer nFileHandle, (nRequestStart - 1), 0, 0 'set start pointer ke handle (base 0).
KeResult = ReadFile(nFileHandle, OutFileData(0), nRequestLen, nApproxLen, ByVal 0)
If nApproxLen <> nRequestLen Then 'test ukuran buffer dengan isi datanya. ReDim Preserve OutFileData(nApproxLen - 1) As Byte 'sesuaikan lagi ukuran buffer (base 0).
End If
VbReadFileB = nApproxLen '<-- beritahu jumlah bytes yang berhasil dibaca. TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Function
Private Sub Class_Initialize() On Error Resume Next DoEvents TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Sub
Private Sub Class_Terminate() On Error Resume Next
DoEvents TERAKHIR: If Err.Number > 0 Then Err.Clear End If End Sub
Dim FSO As Object
Public BERHENTI As Boolean
Private Function GET_Folder(Folder As String, lbFile As UniLabel, lstInfo As UniList) As String
On Error Resume Next Dim sFolder As Object
For Each sFolder In FSO.getFolder(Folder).subFolders GET_Folder (sFolder.path), lbFile, lstInfo
If BERHENTI = True Then Exit Function GetFile sFolder.path, lbFile, lstInfo Next
End Function
Dim sFile As Object
For Each sFile In FSO.getFolder(path).Files DoEvents
If BERHENTI = True Then Exit Function lbFile.Caption = sFile
If frmOption.ck1.value = 1 Then
If isProperFile(CStr(sFile), 3, "EXE DLL VBS VMX DB COM SCR BAT") = True Then
If isFileVirus(CStr(sFile), lstInfo) = True Then
If frmOption.ck2.value = 1 Then HapusFile CStr(sFile) End If
If frmOption.ck3.value = 1 Then NormalizeAttribute CStr(sFile) End If
Else
If isFileVirus(CStr(sFile), lstInfo) = True Then
If frmOption.ck2.value = 1 Then HapusFile CStr(sFile) End If
If frmOption.ck3.value = 1 Then NormalizeAttribute CStr(sFile) End If
Next
End Function
Public Function ScanFolder(Folder As String, lbFile As UniLabel, lstInfo As UniList) Dim sFile As Object
Set FSO = CreateObject("Scripting.FileSystemObject") For Each sFile In FSO.getFolder(Folder).Files
DoEvents
lbFile.Caption = sFile
If frmOption.ck1.value = 1 Then
If isProperFile(CStr(sFile), 3, "EXE DLL VBS VMX DB COM SCR BAT") = True Then
If isFileVirus(CStr(sFile), lstInfo) = True Then
If frmOption.ck2.value = 1 Then HapusFile CStr(sFile) End If
If frmOption.ck3.value = 1 Then NormalizeAttribute CStr(sFile) End If
Else
If isFileVirus(CStr(sFile), lstInfo) = True Then
If frmOption.ck2.value = 1 Then HapusFile CStr(sFile) End If
If frmOption.ck3.value = 1 Then NormalizeAttribute CStr(sFile) End If
Next
GET_Folder Folder, lbFile, lstInfo ' Lanjut ke file - file adalam sub folder End Function
Kartu Bimbingan Tugas Akhir Mahasiswa
Nama : QURBANI AKBARIKA PANJAITAN
Nomor Induk Mahasiswa : 082406161
Juduk Tugas Akhir : APLIKASI ANTIVIRUS KOMPUTER DENGAN VISUAL BASIC 6.0
Dosen Pembimbing : Drs. Bambang Irawan, M.Sc. Tanggal Mulai Bimbingan :
Tanggal Selesai Bimbingan :
No Tanggal Bimbingan Pembahasan Asistensi Mengenai Bab Paraf Dosen Pembimbing Keterangan 1 2 3 4 5 6 7
*Kartu ini harap dikembalikan ke Departemen Matematika bila bimbingan mahasiswa telah selesai
Diketahui: Disetujui oleh:
Departemen Matematika FMIPA USU Pembimbing Utama/
Ketua, Penanggung Jawab
Prof. Drs. Tulus, Vordilp.Math, M.Si, Ph.D. Drs. Bambang Irawan, M.Sc. NIP: 19620901 198803 1 002 NIP: 19470421 197603 1 001
SURAT KETERANGAN Hasil Uji Program Tugas Akhir
Yang bertanda tangan di bawah ini, menerangkan bahwa Mahasiswa Tugas Akhir Program Studi D-III Teknik Informatika :
Nama : QURBANI AKBARIKA PANJAITAN
NIM : 082406161
Program Studi : Teknik Informatika
Judul TA : APLIKASI ANTIVIRUS KOMPUTER DENGAN VISUAL
BASIC 6.0
Telah melaksanakan test program Tugas Akhir Mahasiswa tersebut di atas pada tanggal
Dengan Hasil : Sukses/Gagal
Demikian diterangkan untuk digunakan melengkapi syarat pendaftaran Ujian Meja Hijau Tugas Akhir Mahasiswa bersangkutan di Departemen Matematika FMIPA USU Medan. Medan, Juni 2011 Dosen Pembimbing Drs. Bambang Irawan, M.Sc. NIP: 19470421 197603 1 001