给vfp程序加把密封锁 |
|
| 2004-05-19 曹震宇 |
| |
加密是程序员保护自己劳动成果的一种手段。然而对vfp的程序加密却不是件易事,因为vfp没有提供底层函数。本文希望能对vfp程序员有所帮助。
由于vfp提供了相当丰富的获取磁盘文件信息的函数,这样我们可以以文件信息为突破口选择机器特征代码。在win 95/98系统中,c盘根目录下有一个名为pdos.def的系统配置文件。它在windows系统安装时建立,创建日期与系统安装日期相同,创建时间由当时系统时钟确定,精度可达几分几秒。所以用pdos.def的创建日期和时间作为标示一台微机的特征代码是最合适不过了。
接下来的任务是如何实现加密。我们以用户是否有正确的安装盘为依据,判断用户是否合法。在vfp安装盘的第一张盘上有一必备文件setup.lst。这里面记载了压缩包中所有文件的文件名、长度及创建时间。我们可以通过检查setup.lst中是否包含与正在执行的主程序同名的文件记录判断安装盘是否正确。
加密程序在软件安装后第一次运行前进行加密处理:
先进行安装盘检验
a=messagebox(′请在软驱中插入本软件的安装盘进行注册′,65,′新用户注册′)
if a=2 &&用户要求退出,不进行注册
cancel &&终止程序运行
endif
if not file(′a:setup.lst′) &&如果无setup.lst
文件则安装盘非法
=messagebox(′安装盘不在,退出注册′,16,′注册失败′)
cancel &&终止程序运行
endif
m.pname=program() &&获取正在执行的
主程序名
m.t=0 &&设变量t为表明
setup.lst正确的标记变量
m.handle=fopen(′a:setup.lst′)
do while not feof(m.handle)
fstr=fgets(m.handle) &&取一行内容
if m.pname$fstr &&如果此
行字串中有执行文件的记录
m.t=1 &&置t为1表明安装
盘正确
exit &&退出检验循环
endif
enddo
if m.t=0 &&如果t为0表明
安装盘不存在,禁止程序运行
=messagebox(′安装盘不正确,退出注册′,16,′注册失败′)
cancel &&终止程序运行
endif
安装盘检验无误,开始加密
m.k=ttoc(ctot(ftime(′c:\pdos.def′))+99999)
*获取pdos.def创建时间,并加上99999秒,使之看上去不知从何而来
handle=fcreat(′key.dat′)&&新建密钥文件key.dat
=fputs(handle,m.k)&&写入密钥
=fclose(handle)&&关闭密钥文件
加密工作完成
以上代码既可作为一个单独的加密程序出现,也可作为主程序的一部分存在。
加密程序做好了,接下来的任务是如何解密。因为解密是加密的逆过程,只是少了判断安装盘的过程。这里不再赘述。 |
|
| |
|
发表评论
推荐文章
关闭窗口
|
|
|
|