当前位置:首页 >资讯 >软件的版权保护如何用虚拟加密锁实现


版权保护是近年来一个热门话题。那么,共享软件如何保护版权呢?今天我们来介绍一下。

一、常用的软件版权保护技术。

由于特殊网络的快速发展为共享软件的快速发展提供了前所未有的机会,同时,由于软件是一种特殊的商品,容易复制和在线传播,导致盗版软件泛滥,严重损害了软件开发人员的利益。如何保护软件版权,防止非法用户盗版一直是软件开发人员不断研究的课题。根据加密原则和加密方法,软件版权保护技术分为以下三类:

(1)软加密。

它是一种不依赖特定硬件来实现软件加密保护的技术。常见的保护方法包括:序列号(注册码)保护方法。KeyFile保护方法。功能限制保护方法和时间限制保护方法等。其最大的优点是加密成本低,易于在互联网上发布和销售软件,是共享软件的保护方法;其缺点是无法防止破解者通过动态调试或静态分析技术找到软件的关键指令,修改破解软件。

(2)硬加密。

它依靠特定的硬件,通过硬件和软件的结合来实现软件加密保护技术。常用的方法包括磁盘加密、加密卡和加密锁。其优点是使用硬件的不可复制性来实现更高强度的加密保护;缺点是需要额外的硬件,成本高,不利于在线软件发布。

(3)网络加密。

它是利用网络技术对软件进行加密和保护的技术。常用的方法有网络验证等。其优点是将软件运行的重要数据放在服务器上。这些数据运行软件只有在用户注册信息通过网络验证后才能获得。其加密强度高,缺点是需要建立专门的服务器网站,成本高。

从以上介绍可以看出,更安全的共享软件版权保护方法应具有以下四个特点:软件的重要数据与软件主体分离;②软件不能复制;③软件应具有反修改、反跟踪、反静态分析等反破解功能;④易于在互联网上发布和销售软件。根据这四个特点,作者提出了一种基于虚拟加密锁的共享软件版权保护方法。

二、虚拟加密锁的理论基础。

1.软件加密锁。

软件加密锁是软件开发人员提供的一种智能软件加密工具,包括安装在计算机平行端口或USB端口上的硬件,以及适用于各种语言的接口软件和工具软件。它具有以下特点:加密锁具有抗破解功能,可对抗各种调试工具的跟踪;一锁密码或电路,软硬件不可交换;提供各种语言编程和工具软件,方便开发人员在自己的开发程序中使用;允许软件开发人员将部分软件程序或算法写入锁,并在锁中运行,使开发人员的软件与加密硬件有机结合。

使用软件时,用户必须将加密锁连接到计算机的并行或USB端口,然后软件才能继续运行。如果不安装加密锁或不安装软件的加密锁,则软件不能运行或功能不完整,以保护软件版权。 2.DLL动态链接库。

DLL是一个可以由其他应用程序共享的已编译的代码模块,包括一些可以共享的代码和资源。Windows应用程序可以根据DLL中的指令打开。启用。查询。禁止和关闭驱动程序。DLL文件还可以轻松访问硬件资源和内存资源。DLL的开发与具体的编程语言和编译器无关,只要遵循开发规范,安排正确的编程接口,DLL就是通用的;DLL不复制其库代码,只记录程序中的入口点和接口,并将代码输入内存。当多个程序使用相同的DLL时,内存只需要装载一次,可以有效、经济地使用内存;DLL是一个基于Windows的程序模块,它不仅包含可执行的代码和各种可执行的库文件。

3.通过虚拟加密锁实现共享软件版权保护。

11.虚拟加密锁加密的原理。

从上述DLL文件的功能和特点可以看出,反破解DLL文件可以实现硬件加密锁的主要功能,完成软件版权的保护。此外,与加密锁的硬件价格相比,DLL文件的开发几乎不需要成本。此外,由于DLL文件和软件主体在同一文件夹下,软件主体在执行时不需要访问并行接口或USB接口,节省了计算机硬件成本,运行速度更快,可以实现对软件的保护。基于上述因素,我们在传统软件保护技术的基础上,提出了基于虚拟加密锁的软件版权保护方法。

虚拟加密锁是一种基于DLL文件的软件保护技术。它是一种软加密技术。DLL文件主要通过模拟硬件加密锁对软件主体运行的控制来模拟。注册用户的计算机指纹信息和基于用户计算机指纹的注册验证模块包装在DLL文件中,并在DLL文件中添加文件的完整性检测。反调试和反静态分析功能模块可以提高DLL文件的反破解性能。当软件运行时,当执行到DLL文件中需要注册的功能时,必须检测DLL文件的完整性。调试器的检测只能通过检测。软件的功能只能在注册验证后执行,否则将退出软件。由于DLL文件内置了用户计算机指纹信息(不可复制)和反破解模块,因此DLL版权保护可以实现类似的加密锁功能。

1

12.实现虚拟加密锁的功能。

(1)封装软件的关键功能使软件试用版与正式版分离。

为了满足第一节中提到的特点①在设计软件时,将软件分为两部分:软件主体和DLL文件。软件主体是在线发布的软件试用版。将软件的关键功能包装在DLL文件(虚拟加密锁)中(在软件的实际开发中,如果包装功能导致DLL文件过大,则只能包装每个功能模块中的关键数据处理部分)。如图1所示,仅提供给注册用户,实现软件试用版与正式版(即软件主体+虚拟加密锁)的分离,降低破解者破解正式版的概率。 (2)收集用户计算机指纹信息,生成计算机。

所谓计算机指纹是指与计算机硬件相关的不可复制信息,通常包括硬盘物理序列号、主板序列号、CUP序列号等。不同的计算机有不同的计算机指纹,因此用户的计算机指纹可以识别计算机,以确保虚拟加密锁文件不可复制。用户计算机指纹信息通过Hash算法(如SHA.MD5等)生成。

(3)注册用户的合法验证。

为满足第注册用户的计算机指纹信息生成的ID预置到虚拟加密锁(DLL文件)中,以确保虚拟加密锁只能在注册用户的计算机上运行。当用户运行虚拟加密锁中的关键功能时,虚拟加密锁收集用户的计算机指纹,并将计算机ID与预置的计算机ID进行比较。如果两者相等,则表明用户为合法用户,软件功能正常运行;如果不相等,则限制该功能的运行或退出。

(4)反破解

如果软件不能防止破解者的非法修改,其它保护措施做得再好,也很容易被破解。为满足第1节所述特征③,在对虚拟加密锁文件进行反调试、反静态分析的基础上增加反修改功能。

1)虚拟加密锁的完整性校验

对虚拟加密锁文件进行完整性校验,可确保其不被非法修改。校验的方法可采用API函数MapFileAndCheckSum进行完整性校验。

//读取虚拟加密锁文件DIIFile的原始的校验和HeaderSum并计算其校验和CheckSum

MapFileAndCheckSum( DIIFile, &HeaderSum, &CheckSum);

if( HeaderSum==CheckSum)

{

//虚拟加密锁文件DIIFilename没有被修改,执行软件功能


}
else
{
//虚拟加密锁文件DIIFilename被修改,中止软件
}
2)调试器检测
为了防止破解者用调试工具(如OllyDbg等)对虚拟加密锁程序文件进行跟踪,可用API函数IsDebuggerPresent来检测。
if( IsDebuggerPresent())
{
//当前程序被调试,中止软件
}
else
{
//没有被调试,执行软件功能
}
3)反静态分析

为了防止破解者通过W32Da.m、IDA Pro等反汇编分析工具进行反汇编分析,可在虚拟加密锁文件中增加大量花指令。另外,用虚拟机软件VMPtotedt对虚拟加密锁文件进行处理,可以大大增强其抗静态分析的性能。

13、用户注册过程

软件试用版用户试用满意后,通过汇款或网上银行转账等方式付款后,用户将计算机ID(根据用户计算机指纹经加密生成的)通过电子邮件发送给软件开发商,软件开发商根据用户计算机ID重新编译程序生成虚拟加密锁文件,再通过电子邮件发送给用户,用户接收后用该文件覆盖软件安装文件夹下的同名文件,就可以使用软件的全部功能硝这样就可以方便地利用互联网完成软件试用版的发布和正式版的销售,这满足了第1节所述特征④。

小知识之DLL文件

DLL文件又称“应用程序拓展”,是软件文件类型。