vb程序防拷贝一法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vb程序防拷贝一法
杨生飞
虽然现在软件加密保护的方法很多,但大都技术复杂、专业性强或成本高。为此,笔者通过调用windows的api函数,简单地实现了vb程序的防拷贝,现介绍如下,望能与大家一起分享。
设计思路
安装软件第一次运行时,给自己开发的软件结合本台计算机特有的参数(此处利用计算机用户名),做一个“正品”识别标志后,将制作识别标志的程序删除,并在软件主程序的头部增加一段检测程序。以后软件运行时,首先检查“正品”识别标志是否存在,如存在则进一步判断是否为合法用户;如不存在,则检查制作识别标志的程序是否存在,不存在,则为非法用户,存在,则认为第一次运行,重新制作识别标志。通过以上方法就可以简单地判断软件的合法性。
检测程序
1.用declare语句申明所要调用的windows api函数:
private declare function getusername lib "advapi32.dll" alias "getusernamea" (byval lpbuffer as string, nsize as long) as long
2.在主程序的sub form—load()中添加如下代码:
dim k as string 50
dim w as string 50
dim b as integer
′查找readme.txt文件,如果不存在,则运行installme.exe。
if dir(app.path && "\readme.txt") = " then
′查找installme.exe文件,如果不存在,则退出运行。
if dir(app.path && "\installme.exe") = " then
aa = msgbox("请检查其合法性!", vbcritical, "警告")
end
else
′installme.exe文件存在,则为第一次运行该程序,建立readme.txt文件,设定识别标志。
a = shell(app.path && "\installme.exe", vbhide)
kill app.path && "\installme.exe"
end if
else
b = getusername(k, 50)
open app.path && "\readme.txt" for random as #1 len = 50
get #1, 1, w
close
if k 〈〉 w then
aa = msgbox("请检查其合法性!", vbcritical, "警告")
end
end if
end if
end sub
识别标志及安装盘的制作
1.新建一标准exe文件,添加如下代码,并生成名为installme.exe的可执行文件。
private declare function getusername lib "advapi32.dll" alias "getusernamea" (byval lpbuffer as string, nsize as long) as long
private sub form—load()im w as string * 50
b = getusername(w, 50)
open app.path && "\readme.txt" for random as #1 len = 50
put #1, 1, w
close
unload me
end sub
2.应用vb的应用程序安装向导生成安装程序时,在安装程序向导运行到“文件小结”时,添加installme.exe,并确认文件详细信息中的目标目录为 $(apppath)。
在实际应用中,可通
过选择不同硬件参数,结合其它软件保护方法一起进行,以达到保护开发成果的目的。
以上程序在vb 5.0、win 95下通过。