使用软件狗进行软件加密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用软件狗进行软件加密
计算机软件是一种高投入、高成本而又极易复制的产品。所以软件盗版在全世界都是一个非常头疼的问题。即使是在知识产权保护方面做得很好的美国,每年因盗版造成的损失也高达几十亿美元。为此人们在利用法律手段阻止盗版的同时,也采取了各种切实可行的技术手段保护自己的软件不被盗版,从而保护自己的合法权益。
目前的软件加密方法大致可分为两类:软加密与硬加密。软加密是用纯软件的方式来实现软件的加密,主要包括密码方式、软件的校验方式和钥匙盘方式。硬加密则是利用硬件与软件相结合来实现软件的加密,其典型产品包括加密卡、软件狗等。
软加密具有成本低、升级快的优点。但由于其加密强度不高,并且由于这种加密方式本身的局限性,使用的人已越来越少。介绍关于软加密和钥匙盘等加密方法的文章及书籍已经很多了,在此不再赘述。硬加密由于具有加密强度高、加密性能好、加密方式灵活等优点,成为目前广泛采用的加密手段。现在比较流行的是使用在并口上的加密锁对软件进行加密。下面以金天地公司新开发的加密锁TD-MF智能型软件狗开发者套件为例,介绍怎样对软件进行加密。
新开发的TD-MF智能型软件狗开发者套件包含了两张安装盘和一只插在并口上的"狗"。在Windows或Windows
95环境下运行第一张盘上的SETUP.EXE文件。安装程序将引导开发者把驱动模块及工具软件安装到硬盘上。安装程序安装时缺省的目录为C:\TD-MF。
将狗插在并口上,然后运行安装程序。如图1、图2所示,安装程序可以选择英文界面或中文界面。选择中文界面。按"下一步"按钮之后,使用者可以选择安装的目录。然后可以选择"全部安装"、"按主题安装"、"按文件安装"。按照安装程序的提示,将所有的文件安装到硬盘上,或者只安装自己所需要的部分。
TD-MF软件狗的软件部分分为五大部分。
1. 工具部分。
2. DOS平台上的驱动模块及外壳型加密工具。
3. DOS 32位扩展平台上的驱动模块及外壳型加密工具。
4. Windows 3.X平台上的驱动模块及外壳型加密工具。
5. WIN32 (Windows 95、Windows NT、WIN32S)平台上的驱动模块、驱动程序及外壳型加密工具。
当用户需要加密自己的软件时,一种比较简单的方法是使用外壳型加密工具。例如加密一个DOS的可执行文件TEST.EXE。其过程如下:
1. 进入DOS外壳型加密工具的目录并运行加密工具软件。DOS加密工具软件是:C:\TD-MF\ DOS16\ EXETOOL\ EXE. EXE。
2. 按照加密工具软件的提示,输入要
加密的DOS可执行文件的文件名、加密后文件的文件名。加密的过程就完成了。
TD-MF软件狗还提供了Windows 3.X、Windows 95/NT下的EXE的加密工具和DOS
32下的EXP加密工具。外壳型加密*作起来比较简单,其最大的优点是可以加密没有源代码的可执行程序。但是如果想得到更高的加密强度,更好的加密效果,需要在你的程序中嵌入软件狗的驱动模块,即使用源程序级加密。
使用源程序级加密的加密强度很高,加密的效果很好,但是所做的工作比外壳型加密也多一些。首先要使用工具软件对"狗"进行预处理。工具软件dogutil.exe被安装在c:\tdmf\util目录下。工具软件可以读出软件狗中的内容,向软件狗中写入数据或求得特定数据串的变换结果。工具软件还可设置软件狗的口令。后面还将具体讲到工具软件怎样配合驱动模块进行预处理(图3)。
DOS、Windows、Windows 95/NT/32s平台下软件狗的驱动模块包含了绝大部分目前流行的编译环境。下面以Windows
NT环境为例,简要说明怎样使用软件狗。
在Windows NT环境下使用软件狗时,首先应该安装NT的设备驱动程序。运行TD-MF \ WIN32\ WINNT.DRV\
SETUP.EXE,NT的设备驱动将被安装到NT*作系统中。重新启动NT,设备驱动程序就可以为DOS 16、Windows、32位
Windows的实用程序服务了。
在TD-MF\WIN32\WIN32C目录中包含了MSVC、W32DEMO等目录,使用VC4.0打开MSVC下的W32DEMO.MAK工程文件。工程文件中包含了W32DEMO.C及相关文件、CWIN32.OBJ驱动模块。编译生成的W32DEMO.EXE可以在WIN
32S、Windows 95、Windows
NT环境下运行。TD-MF软件狗的安装软盘包含了所有驱动模块的调用演示程序。因为篇幅有限,这里不再列出W32DEMO.C的源码。
现在国内还有许多开发商在DOS、Windows环境下编程。而最终用户很可能在Windows
NT下运行这些程序。所以TD-MF软件狗的16位驱动模块使用了某种技术,通过Windows
NT的设备驱动程序对"狗"进行*作。使得软件开发商开发的16位的DOS、Windows程序可以在NT下运行。
下面以C语言为例,简要介绍使用源程序级加密的方法加密DOS可执行程序的过程。
用Borland
C3.1打开td-mf\dos16\c3.1下的工程文件Dogdemo.prj文件。编译该工程文件,生成了Dogdemo.exe。在DOS下运行Dogdemo程序。该程序依次做了对狗进行检测、数据变换、向狗中写入200个字节及读出200个字节的演示。为了提高加密强度,增强加密模块的抗反跟踪的能力。C语言模块还提供了动态代码打乱的功能。dosdemo.c中详细说明了如何打乱连接到可执行文件中的加密模块,以及如何在可执行文件运行时动态地将其恢复的技术。在Wi
ndows、Windows
95的DOS窗口下运行可执行文件Dosdemo。运行正常。为了在Windows NT下运行加密的16位DOS
可执行文件,需要在安装NT的驱动程序时,选择支持16位程序运行。启动NT4.0后,进入虚拟DOS窗口。加密的可执行文件Dosdemo可以正常地运行。
软件产品加密效果的好坏不但和加密驱动模块有关,同时和软件开发商调用加密函数的方法密切相关。下面以C语言为例子简要介绍一些加密技巧。本例子程序的功能是求一个圆锥的体积。在例子中不比较得到的数据,而是直接使用得到的数据,这样可以增加加密强度。
#include
short DogAddr; // 定义DOSDOG.OBJ所需的全
short DogBytes; // 局变量。开发商应将它们分散
short DogCode=0; // 在自己的全局变量中。
char far * DogData; //
long DogResult; //
extern unsigned long far DogCheck(void); // 定义驱动模
extern unsigned long far DogConvert(void); // 块提供的函
extern unsigned long far WriteDog(void); // 数。
extern unsigned long far ReadDog(void); //
void main(void)
{;
long ret; //
long cvtResult; //
char string[]="Test"; // 将对"Test"进行变换。
double Pi; //
unsigned int Constant; //
double Volume; //
double Radius=30.0; // 假设一个圆锥的底圆半径
double High=43.2; // 为30.0厘米。高为43.2厘 米。
DogData = string;
DogBytes = 4;
ret = DogConvert(); // 对"Test"进行变换。使用工具软
if(ret) // 件DOGUTIL可得到其变换结果
return; // 是1551798525。(不同的狗的变换
// 结果不同。)
cvtResult = DogResult/100000;
Pi=(double)cvtResult/4939.5282; // 得到圆周率3.14159。
(unsigned int *)DogData = &Constant;
DogBytes = 2;
DogAddr=20; // 事先使用工具软件在此写入了3。
ret = ReadDog(); // 得到整数3。
if(ret)
return;
Volume= Radius*Radius*Pi*High/Constant; // 计算体积。
printf("Volume=%f\n",Volume);
return;
};
使用TD-MF智能型软件狗加密的软件产品可以在PC及兼容机上运行。
----------------------------------------------
QQ: 124342424
testing@
***坎坷亦乐园 版权所有***
【关闭窗口】