近幾年來,筆者參與了幾個商品軟件的開發(fā)設計,其中如何加密軟件確是個值得研究的課題,而對于小軟件來說,采用加密狗進行加密是很不經(jīng)濟的。為此,筆者想出一妙法,在程序里完成對軟件加密,這樣既方便又經(jīng)濟,現(xiàn)介紹如下,望能與大家一起分享。
---- 設計原理:
---- 軟件加密的目的是為了防止盜用者拷貝軟件,一般拷貝軟件時,只會拷貝程序所在的目錄的內(nèi)容,根本不會想到其他目錄里還會有與程序有關的文件,特別是文件放在WINDOWSSYSTEM目錄里,更是無從下手。這樣,我們設計了兩個文件,一明一暗,明的放在程序所在的目錄,命名為mscredit.ini,其內(nèi)容為:
---- @-version=2.0-1999-copyright-@
---- 安裝軟件時,應先刪除mscredit.ini左邊的“@”,程序自動創(chuàng)建c:windowssystemdbcredit.ini文件,并在mscredit.ini里再寫入左邊的“@”符號,以后每次使用軟件時,檢查隱藏的c:windowssystemdbcredit.ini文件是否存在,只有此文件存在時軟件才能正常運行。此設計關鍵在于,這一明一暗兩個文件同時存在,程序才能正常運行。
---- 主程序
Private Sub Form_Load()
Dim kk, ms As String, vt As Integer
’若mscredit.ini因誤操作刪除,則軟件不能正常運行
If Dir(App.Path & "mscredit.ini") = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, " 提示")
Exit Sub
End If
’若mscredit.ini因誤操作刪除其內(nèi)容,
則軟件不能正常運行
Open App.Path & "mscredit.ini" For Input As #1
Input #1, ms
Close #1
ms = Trim(ms)
If ms = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, "提示")
Exit Sub
End If
If Left(ms, 1) < > "@" Then
’安裝使用本軟件,自動創(chuàng)建dbcredit.ini文件,
并在mscredit.ini里寫入“@”符號
vt = write_sys_init("CopyRight", "Version", "2.0")
Open App.Path & "mscredit.ini" For Output As #1
ms = "@" & ms
Print #1, ms
Close #1
Else
’使用本軟件,若dbcredit.ini因誤操作
刪除其內(nèi)容,則軟件不能正常運行
If Dir("c:windowssystemdbcredit.ini") = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, "提示")
On Error Resume Next
Kill App.EXEName
On Error GoTo 0
Exit Sub
End If
End If
End Sub
調(diào)用函數(shù)
Public Function write_sys_init
(gs As String, ss As String, sval As String)
As Integer
Dim retv as String
write_sys_init = 0
On Error Resume Next
retv=OSWritePrivateProfileString
(gs,ss,sval,"c:windowssystemmscredit.ini")
If Err Then
Err = 0
write_sys_ini = -1
End If
On Error GoTo 0
End Function
---- 本程序在VB5.0、WIN95下調(diào)試通過。
---- 設計原理:
---- 軟件加密的目的是為了防止盜用者拷貝軟件,一般拷貝軟件時,只會拷貝程序所在的目錄的內(nèi)容,根本不會想到其他目錄里還會有與程序有關的文件,特別是文件放在WINDOWSSYSTEM目錄里,更是無從下手。這樣,我們設計了兩個文件,一明一暗,明的放在程序所在的目錄,命名為mscredit.ini,其內(nèi)容為:
---- @-version=2.0-1999-copyright-@
---- 安裝軟件時,應先刪除mscredit.ini左邊的“@”,程序自動創(chuàng)建c:windowssystemdbcredit.ini文件,并在mscredit.ini里再寫入左邊的“@”符號,以后每次使用軟件時,檢查隱藏的c:windowssystemdbcredit.ini文件是否存在,只有此文件存在時軟件才能正常運行。此設計關鍵在于,這一明一暗兩個文件同時存在,程序才能正常運行。
---- 主程序
Private Sub Form_Load()
Dim kk, ms As String, vt As Integer
’若mscredit.ini因誤操作刪除,則軟件不能正常運行
If Dir(App.Path & "mscredit.ini") = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, " 提示")
Exit Sub
End If
’若mscredit.ini因誤操作刪除其內(nèi)容,
則軟件不能正常運行
Open App.Path & "mscredit.ini" For Input As #1
Input #1, ms
Close #1
ms = Trim(ms)
If ms = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, "提示")
Exit Sub
End If
If Left(ms, 1) < > "@" Then
’安裝使用本軟件,自動創(chuàng)建dbcredit.ini文件,
并在mscredit.ini里寫入“@”符號
vt = write_sys_init("CopyRight", "Version", "2.0")
Open App.Path & "mscredit.ini" For Output As #1
ms = "@" & ms
Print #1, ms
Close #1
Else
’使用本軟件,若dbcredit.ini因誤操作
刪除其內(nèi)容,則軟件不能正常運行
If Dir("c:windowssystemdbcredit.ini") = "" Then
kk = MsgBox("本軟件已不能正常運行,
請檢查軟件的合法性!", vbInformation, "提示")
On Error Resume Next
Kill App.EXEName
On Error GoTo 0
Exit Sub
End If
End If
End Sub
調(diào)用函數(shù)
Public Function write_sys_init
(gs As String, ss As String, sval As String)
As Integer
Dim retv as String
write_sys_init = 0
On Error Resume Next
retv=OSWritePrivateProfileString
(gs,ss,sval,"c:windowssystemmscredit.ini")
If Err Then
Err = 0
write_sys_ini = -1
End If
On Error GoTo 0
End Function
---- 本程序在VB5.0、WIN95下調(diào)試通過。

