【VB开源代码栏目提醒】:网学会员为需要VB开源代码的朋友们搜集整理了用加密狗实现VB程序保护 - 综合课件相关资料,希望对各位网友有所帮助!
2009.9COMPUTERPROGRAINGAINTENANCE计算机安全与维护用加密狗实现
VB程序保护段晓东摘要介绍使用加密狗实现程序保护的原理和方法同时给出了
VB编程的综合实例以期达到软件知识产权的保护。
关键词加密狗V软件保护1引言随着计算机技术的快速发展管理信息系统的广泛使用软件知识产权的保护日益显得重要。
对于大多数中小型软件企业而言如何用最少的投入最大程度保护软件产品不被盗版是迫切要解决的问题。
本文主要对加密狗技术原理进行简要的介绍并通过一个具体的实例说明如何在应用程序中使用加密狗。
2原理加密狗指安装在并口上的PDL型或PDM型并口软件狗或安装在USB口上的UA型US软件狗。
软件狗是一个可编程、可读写的存储设备具有多个字节的数据存储区。
通过相应的加密接口函数对加密狗进行访问防止软件被非法盗版。
工作原理是程序发出的读取指令传送给加密狗加密狗返回读取数据程序根据数据判定软件合法或非法达到保护软件的目的。
加密狗工作的特点极其优势1数据交换随机噪声技术有效对抗逻辑分析仪器及各种调试工具的攻击完全禁止软件仿真程序模拟数据。
2迷宫技术在加密狗函数入口和出口之间包含大量复杂的判断跳转干扰
代码动态改变执行次序提升加密狗的抗跟踪能力。
3存储器提供多字节掉电保护数据存储区可供开发者存放关键数据、配置参数。
4一个开发套件只提供一个系列号方便使用。
5价格低廉对中小型软件企业而言不会产生太大的开发费用。
3关键技术本例采用某公司的US加密狗。
在加密狗中提供了100个字节的存储空间利用接口函数Writeog把数锯写入存储区利用ReadDog返回存储区读出的数据。
以下是函数的详细说明unsignedlongfarWriteDog输入参数DogAddrDog-BytesDogData输出参数无。
返回值0表示操作成功其他值表示错误。
功能函数把DogData指向的数据写入从DogAddr开始的存储区中写入的字节数为DogBytes。
其中DogAddr类型是unsignedshort表示对加密狗读写操作时用户区的首地址。
取值范围为0到99。
DogBytes类型是unsignedshort表示对加密狗读写操作时的字节长度。
读写取值范围是1到100并且与DogAddr之和不能超过100。
DogData指针型变量指向读写操作或变换的数据缓冲区。
UnsignedlongfarReadDog输入参数DogAddrDog-BytesDogData输出参数DogData。
返回值0表示操作成功其他值是错误码。
功能函数从加密狗中的DogAddr开始的存储区读出数据存入DogData指定的缓冲区读出字节数为DogBytes。
缓冲区的大足够长。
在使用这两个函数之前必须将加密狗附带的安装程序安装完整并将安装目录下的“Win32dll.dll”文件拷贝到系统的system目录下或system32目录下。
4程序设计程序设计包括向加密狗写入和读出加密数据。
4.1标准模块
代码在标准模块dxd.bas定义全局变量和声明API函数。
声明写加密狗数据DeclareFunctionDogWrite_StrLibWin32dllAliasDog-Write_ByValDogBytesAsLongByValDogAddrAsLongByValDogDataAsStringAsLongDeclareFunctionDogWrite_LongLibWin32dllAliasDogWrite_ByValDogBytesAsLongByValDogAddrAsLongByRefDogDataAsLongAsLongDeclareFunctionDogWrite_DoubleLibWin32dllAliasDogWrite_ByValDogBytesAsLongByValDogAddrAsLongByRefDogDataAsDoubleAsLong声明读加密狗数据DeclareFunctionDogRead_StrLibWin32dllAliasDo-852009.9gRead_ByValDogBytsAsLongByValDogAddrAsLongByalDogDataAsStringAsLongDclarFunctionDogadLongLibWin32dllAliasDo-gRadByValDogBytsAsLongByValDogAddrAsLongByRfDogDataAsLongAsLongDclarFunctionDogadDoublLibin32dllAliasDo-gadByValDogBytsAsLongByValDogAddrAsLongByfDogDataAsDoublAsLong定义全局变量DimDogBytsAsLongDimDogAddrAsLongDimDogDataAsString4.2界面设计4.3程序
代码说明在表单的“写密码”按钮的Click事件中添加以下
代码PrivatSubCommand1ClickDimabcDogAddrValTxt1.TxtDogDataTxt2.TxtDogBytsLnDogData在本例中选用DogritStr接口函数读者也可以换成DogritLong或DogritDoublaDogritStrDogBytsDogAddrDogDataIfa0henMsgBox写入密码出错错误号为rimStra16系统提示ElscMsgBox写入密码成功从加密狗的第rimDogAddr地址顺序写入密码rimDogDataEndIfEndSub在表单的“读密码”按钮lck事件中添加以下
代码DogAddralxt1.xtDogDataxt2.xtDogBytsLnDogDataaDogadStrDogBytsDogAddrDogDataIfa0hnIfDogData电脑编程技巧hnbMsgBox登录成功32系统提示xt3.xtDogDataEndIfElsbMsgBox请插上随软件赠送的加密狗16系统提示EndIfEndSub4.4程序的扩展型为了让解密者无法通过跟踪程序以发现加密点在程序中也可以大量设置随机量这种随机可以是随机对返回值进行判断也可以是随机的赋值也可以是程序随机地执行。
比如下面的程序是随机执行ifandom105tCodriDog…ifandom107tCodadDog…下面的程序是随机读DogAddrandom100存储地址是0到99DogBytsandom100-DogAddr下面的程序是随机写DogAddr80andom20DogByts20—andom100-DogAddrDogData1DogAddrtCodritDog当然也可以随机写和随机读配对使用这样解密者极难看出两者的联系。
也可以把一些变量放在加密狗中使用加密狗来传递变量而且这些变量还是全局的。
甚至利用高级操作系统的多线程技术在一个线程中对加密狗操作在另外一个线程中判断和使用这样加密的程度就更高了。
4.5其他应用设想1限制软件使用的次数及使用时间或使某些模块无法使用。
软件企业可以将加密狗提供的字节存储区作为计数器使用初始化为使用次数。
程序中对该字节进行读操作判断是否为0已累计达到使用次数来决定程序是否正常运行。
2安装加密软件时检查加密狗无加密狗不能安装。
862009.9COMPUTERPROGRAINGAINTENANCE计算机安全与维护软件企业在加密软件的安装程序中可以通过调用加密狗模块如WIN32DLL进行查加密狗。
5结语利用本文介绍的方法实现了对USB加密狗数据的写入和读出操作利用对硬件的操作弥补软件加密的不足切实提高软件的保护程度在防止软件盗版中起一定的作用。
本程序在
VB6.0下调试通过。
参考文献1软件狗V3.1开发商手册.2张洪明.VisualBasic6.0程序设计基础教程.科学出版社.收稿日期2009年3月9日即时语音提示校对软件是一款利用Windows提供的TTStext-to-speech功能在键盘输入的同时把所输入的字符或汉字朗读出来的软件。
对于用五笔或其他形码的输入方式来说它能避免汉字输入过程需要边看着稿件边看屏幕校对的方式。
通过听声校对大大提高了输入的速度和正确性即时发现输入过程中的错误以及减少后期校对的工作量。
实现思路为通过系统钩子捕获系统的键盘输入内容再使用Windows提供的TTS功能将输入内容朗读出来。
1总体设计1.1开发环境安装MicrosoftVisualStudio2005并需要下载MicrosoftSpeechSDK。
1.2程序结构设计该软件通过系统钩子捕获系统的键盘输入内容再将其朗读出来。
因此该软件划分为两个子功能模块Windows消息捕获模块和语音朗读模块。
两个模块间通过定义统一的消息接口完成模块间的通信。
程序结构如图1所示。
该软件界面如图2所示。
下面详细说明这两个模块的实现方法。
2Windows消息捕获Windows系统是建立在事件驱动的机制上的整个系统都是通过消息的传递来实现的。
而钩子是Windows系统中非常重要的系统接口用它可以截获并处理送给其他应用程序的消息来完成普通应用程序难以实现的功能。
首先在VC中新建一个DLL的项目作为挂接到系统中的钩子。
同时实现挂接和释放钩子的函数HHOOKg_hHookNULL//全局系统钩子句柄WNDg_hDspWndNULL//截获的消息发送给上层的应用程序使用TTS编写即时语音提示校对软件孙洪迪高柱摘要利用Windows提供的TTStext-to-speech功能在键盘输入的同时把所输入的字符或汉字朗读出来。
本文在V环境中通过系统钩子捕获系统的键盘输入内容再使用Windows提供的TTS功能将输入内容朗读出来实用强。
关键词TTS系统钩子Windows消息捕获icrosoftSpeechSDK图1程序结构图图2即时语音提示校对软件界面87