用VB给商品软件加密的方法
重汽内饰件厂微机室
孔海菁
---- 近几年来,笔者参与了几个商品软件的开发设计,其中如何加密软件确是个值得研究的课题,而对于小软件来说,采用加密狗进行加密是很不经济的。为此,笔者想出一妙法,在程序里完成对软件加密,这样既方便又经济,现介绍如下,望能与大家一起分享。
---- 设计原理:
---- 软件加密的目的是为了防止盗用者拷贝软件,一般拷贝软件时,只会拷贝程序所在的目录的内容,根本不会想到其他目录里还会有与程序有关的文件,特别是文件放在WINDOWSSYSTEM目录里,更是无从下手。这样,我们设计了两个文件,一明一暗,明的放在程序所在的目录,命名为mscredit.ini,其内容为:
---- @-version=2.0-1999-copyright-@
---- 安装软件时,应先删除mscredit.ini左边的“@”,程序自动创建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因误操作删除其内容,
则软件不能正常运行
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
’安装使用本软件,自动创建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因误操作
删除其内容,则软件不能正常运行
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
调用函数
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下调试通过。