Tulisan ini adalah lanjutan tulisan saya sebelumnya. Terima kasih untuk feedback dari beberapa teman yang merasa ingin tahu bagaimana hal ini bisa dilakukan. Sebenarnya sederhana saja karena untuk masalah security itu tidak akan habis dibahas bahkan dalam 1 buku sekalipun.
Dalam lingkup VB, apabila seseorang sudah menginstall program aplikasinya ke dalam satu komputer, dia bisa saja mengcopy file EXEnya ke komputer lainnya dengan catatan di komputer tersebut sudah diinstall program VB terlebih dahulu.
bagaimana cara program bisa tahu bahwa tidak seharusnya program diinstall di komputer yang lain?
Cara yang paling gampang adalah dengan mendeteksi keberadaan file tertentu di harddisk tujuan.
Coba perhatikan codenya:

Private Function FileExists(FileName As String) As Boolean
On Error Resume Next
FileExists = (Dir$(“c:\windows\” & FileName) <> “”)
End Function

Kita bisa membuat function untuk pengecekan sebuah file. Dalam contoh diatas, filename adalah sebuah variabel global yang mengacu kepada nama file. Anda bisa saja menciptakan file yang hampir sama dengan file yang ada di windows, misalnya notepad.dat dan diletakkan di folder windows. Perintah On Error Resume Next digunakan untuk mengabaikan pesan error yang mungkin akan muncul apabila VB tidak menemukan file yang dimaksud.
lalu kapankah fungsi ini dipanggil?
Jika anda terbiasa menggunakan MDI sebagai Menu, function ini bisa diletakkan di dalam MDI, dan pengecekan ini bisa dipanggil dalam MDIForm_Load. Perhatikan contohnya:

If FileExists(“notepad.dat”) Then
t = ReadTextFileContents(“notepad.dat”)
Else
MsgBox “Maaf Program Anda belum diregistrasi” & vbCrLf & vbCrLf & “Untuk registrasi program, anda dapat menghubungi:” & vbCrLf & vbCrLf & “C. Wahyu Kurniawan ph. +62 81 330995038”, vbCritical, PesanMessageBox
End
End If

Cukup sederhana bukan? Jadi jika file tidak ditemukan, program akan menampilkan pesan dan proses akan dihentikan setelah user menekan tombol Ok.
Lalu ada perintah apa yang dijalankan saat program menemukan file yang dimaksud?
Untuk proses maintain program aplikasi anda terhadap customer atau client anda, seyogyanya program diberikan masa berlaku yang dapat anda atur sendiri, misalnya 1 tahun. Hal ini digunakan untuk menjaga program agar tetap reliable dan up to date, karena siapa tahu anda tetap mengembangkan program tersebut dan merilis versi terbarunya. Selain itu hal ini juga akan memberikan hubungan yang berkesinambungan antara anda dengan customer.
Function ReadtextFileContents akan membaca isi file dan disimpan ke dalam sebuah variabel untuk proses perbandingan nantinya.
Berikut adalah code untuk function tersebut:

Function ReadTextFileContents(FileName As String) As String
Dim fnum As Integer, isOpen As Boolean
On Error GoTo Error_Handler
fnum = FreeFile()
Open “c:\windows\” & FileName For Input As #fnum
isOpen = True
ReadTextFileContents = Input(LOF(fnum), fnum)
Error_Handler:
If isOpen Then Close #fnum
If Err Then Err.Raise Err.Number, , Err.Description
End Function

Sekali lagi ini adalah salah satu contoh proteksi yang paling sederhana. Seorang pakar VB yang biasa membongkar file executable VB akan dengan mudah melakukan reverse engineering dan trace jalannya program sehingga dia akan tahu trik sederhana ini.
Untuk melengkapi proteksi programm kita, sebenarnya kita dapat memanfaatkan registry windows untuk menyimpan kode-kode pengecekan. Cara kedua ini yang lebih sering digunakan oleh program-program aplikasi yang beredar untuk proteksinya.