一种软件保护方法及装置与流程

文档序号:12470882阅读:320来源:国知局
一种软件保护方法及装置与流程

本发明属于信息安全技术领域,尤其涉及一种软件保护方法及装置。



背景技术:

软件保护,也可称为程序保护,是指通过对软件与数据的保护,达到防止知识产权被非法使用的效果。例如防止软件被盗版,其涉及软件的安装份数,使用时间,应用范围以及功能模块等内容。

目前安全性较好的软件保护方法大多是通过安装在串行接口、并行接口或USB接口上的硬件电路智能型加密产品等硬件方式来实现,需要软件开发商提供智能型的软件保护工具,生产成本高。对于使用此类基于硬件保护方式的程序的终端用户而言,则需要在计算机中安装相应的客户端硬件或者驱动程序,安装过程耗时、繁琐、易出错,并且浪费硬件端口资源。而基于软件的程序保护方法,主要是通过验证序列号、注册码、许可证文件等方式来实现。其缺点在于需要与应用服务器或许可证服务器进行联网认证,易于被破解,安全性较低,认证设备架设成本高,且多台设备往往可以共享一个序列号,软件保护能力低。



技术实现要素:

本发明实施例的目的在于提供一种软件保护方法,旨在解决目前软件保护方法成本和操作复杂度高、安全性低、硬件端口资源浪费的问题。

本发明实施例是这样实现的,一种软件保护方法,包括:

获取软件的授权信息;

获取所述授权信息的加密值并存储到用户系统中;

在所述用户系统中,获取与所述授权信息的类型对应的当前系统参数;

当所述授权信息为区间数值时,获取所述授权信息的解密值;

若所述当前系统参数不在所述授权信息的解密值的区间内,软件终止运行;

当所述授权信息为非区间数值时,获取所述当前系统参数的加密值;

若所述授权信息的加密值与所述当前系统参数的加密值不同,软件终止运行。

本发明实施例的另一目的在于提供一种软件保护装置,包括:

第一获取单元,用于获取软件的授权信息;

第二获取单元,用于获取所述授权信息的加密值并存储到用户系统中;

第三获取单元,用于在所述用户系统中,获取与所述授权信息的类型对应的当前系统参数;

第一处理单元,用于当所述授权信息为区间数值时,获取所述授权信息的解密值;若所述当前系统参数不在所述授权信息的解密值的区间内,软件终止运行;

第二处理单元,用于当所述授权信息为非区间数值时,获取所述当前系统参数的加密值;若所述授权信息的加密值与所述当前系统参数的加密值不同,软件终止运行。

在本发明实施例中,完全使用基于软件以及依靠用户终端单设备的方式来保护程序,有效降低了软件保护成本和操作复杂度,保证了硬件端口资源不被浪费,且通过对授权信息的加密认证,提高了软件保护的安全性能。

附图说明

图1是本发明实施例提供的软件保护方法的实现流程图;

图2是本发明实施例提供的软件保护方法S101的具体实现流程图;

图3是本发明另一实施例提供的软件保护方法的部分流程图;

图4是本发明另一实施例提供的软件保护方法的部分流程图

图5是本发明实施例提供的软件保护装置的结构框图;

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明实施例中,完全使用基于软件以及依靠用户终端单设备的方式来保护程序,有效降低了软件保护成本和操作复杂度,保证了硬件端口资源不被浪费,且通过对授权信息的加密认证,提高了软件保护的安全性能。

图1示出了本发明实施例提供的软件保护方法的实现流程,详述如下:

在步骤S101中,获取软件的授权信息值。

在本实施例中,被保护的软件获取的授权信息值为授权信息原始值,可以是软件开发商、授权方或者程序管理员将授权信息类型及原始值预先设置到软件程序中。授权信息包括但不限于授权终端MAC地址值(Media Access Control,媒体访问控制)、硬盘序列号、使用日期范围、使用时间范围、使用次数值等。

在步骤S102中,获取所述授权信息的加密值并存储到用户系统中。

通过预设的加密算法对获得的授权信息原始值进行加密,得到授权信息的加密值。并在安装该软件的用户系统中,将授权信息的加密值及授权信息的类型存到用户系统的相同或者不同文件中。授权信息的类型是指所述授权信息是MAC地址、硬盘序列号、使用日期范围、使用时间范围或者使用次数等属性。

当授权信息是一个区间数值,如使用日期范围,程序根据预设的可逆加密算法对授权信息区间的两端点值进行加密。可逆加密算法是指根据加密值可以解密出原始值的算法,可以是自定义的算法,也可以是DES\RSA等常用对称或非对称加密算法。

当授权信息为非区间数值,如授权终端MAC地址值,程序根据预设的一致性校验算法对授权信息进行计算得到授权信息加密值。其中,一致性校验算法是即使源数据只修改一个字节都会导致计算出来的结果产生巨大变化的算法,并且具有单向性、不可逆性。如MD5(Message-Digest Algorithm 5,信息-摘要算法5)、SHA(Secure Hash Algorithm,安全散列算法)、CRC(Cyclic RedundancyCheck,循环冗余校验)等算法。

在步骤S103中,在所述用户系统中,获取与所述授权信息的类型对应的当前系统参数。

在软件运行时,获取预存储在用户系统文件中的授权信息类型,根据授权信息类型获取当前系统状态下对应的类型的具体信息值(当前系统参数值)。

例如,当获取预存储在用户系统文件中的授权信息类型为MAC地址时,程序将获取当前系统状态下的具体MAC地址信息值,是一个48比特的整数,如44-45-53-54-00-00;当授权信息类型为使用日期时,程序将获取当前状态下的系统日期,如2015-8-9。

在步骤S104中,当所述授权信息是区间数值时,获取所述授权信息的解密值;当所述授权信息不是区间数值时,获取所述当前系统参数的加密值。

程序可根据预存储的授权信息类型判断加密信息是区间数值还是非区间数值。如授权信息类型为使用日期,即为区间数值;如授权信息类型为MAC地址,即为非区间数值。

当所述授权信息类型是区间数值时,由于程序对授权信息进行初始加密时使用的算法可逆,故依照对应的解密算法可对其进行可逆计算,得出授权信息原始值。

在S105中,若所述当前系统参数不在授权信息解密值区间内,软件软件终止运行;

例如,当所述授权信息类型为使用日期,对预存于系统中的使用日期加密值进行解密,得到使用日期范围的两端点数值,判断当前系统日期是否在所述两端点数值区间内,若是,软件正常运行;否则,程序内部的控制进程发出查找应用进程句柄的消息,并通对应用进程句柄发送终止运行消息,终止整个软件的运行。

在S106中,当所述授权信息不是区间数值时,使用与授权信息初始加密时相同的一致性校验算法,对当前系统参数进行计算,得出所述当前系统参数的加密值。若所述授权信息加密值与所述当前系统参数的加密值相同,软件正常运行;否则,软件终止运行;

例如,当所述授权信息类型为MAC地址时,预存于系统中的授权MAC地址值是经过MD5计算得出的加密值。程序使用相同的MD5算法对当前用户终端的MAC地址进行计算得出当前MAC地址加密值。若所述当前MAC地址加密值与预设MAC地址加密值相同,软件正常运行;否则,软件终止运行。

在本发明实施例中,完全使用基于软件以及依靠用户终端单设备的方式来保护程序,有效降低了软件保护成本和操作复杂度,保证了硬件端口资源不被浪费,且通过对授权信息的加密认证,提高了软件保护的安全性能。

作为本发明的一个实施例,在步骤S101中,所述获取软件的授权信息包括:通过动态密码方式验证管理员身份,以获取软件的授权信息值。

如图2所示,S101优选为:

在S201中,显示软件授权信息设置界面。

在S202中,获取软件授权方的动态密码。

动态密码指在不同时刻生成不同的实时密码,可防止密码被窥视泄露,使授权信息能够被窥视者任意修改,导致软件保护功能失效。只有合法的软件授权方能够获知动态密码,并在授权信息设置界面中输入当前密码。

在S203中,判断动态密码是否正确,若是,获取授权方设置的授权信息。

为了节约成本,在本实施例中,授权者直接心算得出动态密码,不需要依靠其他介质来获取。依据用户终端当前系统日期来生成密码,密码的最终形式为“YYMMDDZZ”,长度为6-8位,生成规则如下:

1)YY是当前年份的前两位,ZZ为年份的后两位;

2)如果当前月份是两位数,如12月,则MM=12;

如果当前月份是一位数,如1月,则为MM=1;

3)DD=31-today。其中,today为当前日。计算结果有两种情况:

情况1:DD为两位数。如20日,31-20=11,则DD=11;

情况2:DD为一位数。如29日,31-29=2,则DD=2;

例如,当前系统日期为2016-7-19,生成的密码则是2071216。

作为本发明的另一个优选实施例,在步骤S102中,获取授权信息加密值并存储到用户系统中包括:获取所述授权信息的加密值存储到用户系统注册表中。

由于系统注册表在用户重装电脑后会被重置成初始状态值,授权信息将丢失。在安全性能要求较高时,在用户重装系统后,可防止处于未受控环境下的终端设备仍能运行受保护的程序。

作为本发明的另一个实施例,在S105中,,若所述当前系统参数在所述授权信息解密值区间内,所述方法还包括:

将存储在所述用户系统的所述授权信息的加密值的区间起始值调整为所述当前系统参数的加密值。

如图3所示,在步骤S105后可以为:

在S501中,若所述当前系统参数在所述授权信息的解密值的区间内,获取当前系统参数的加密值。加密方式与上述实施例中的方式相同。

在S502中,将存储在系统文件中的授权信息的加密值的区间起始值替换为当前系统参数的加密值。

例如,当前系统日期为2016-8-9,在授权使用日期解密值“2016-8-7至2017-7-8”区间内,则程序将当前日期2016-8-9进行加密,依照相同的算法得到加密值假设为“2948”。原本存于系统文件中的授权使用日期加密值假设为“3928至4829”,则更新存于系统文件中的授权使用日期加密值为“2948至4829”。

在本发明实施例中,依靠每次正常运行程序后对当前系统授权信息的实时调整,可以防止用户非法修改系统参数,使其一直处于授权区间内,降低软件保护性能。

作为本发明的另一个实施例,在S102之后,所述方法还包括:

获取所述软件的可执行文件的原始校验值及当前校验值;

当所述原始校验值与所述当前校验值不同时,软件终止运行。

如图4所示,在S102之后,优选为:

在S401中,获取所述软件的可执行文件的原始校验值。

被保护程序在开发时,会通过预设的一致性算法来对程序的可执行文件进行计算得出原始校验值,常见是使用CRC校验算法。原始校验值会存储到独立文件中,并置于程序安装后生成的可执行文件的相同目录下。

当软件运行时,直接读取可执行文件当前目录下的原始校验值文件得到可执行文件的原始校验值。

在S402中,通过预设的一致性校验算法获取所述软件的可执行文件的当前校验值。

软件安装到用户系统后会生成一个可执行文件。由于软件在开发过程中预设有计算可执行文件原始校验值的一致性算法,所以当软件在安装后并运行时,会通过使用相同的一致性算法对当前重新生成的可执行文件进行计算,获得所述软件的可执行文件的当前校验值。

在步骤S403中,判断所述原始校验值与所述当前校验值是否相同。

当所述原始校验值与所述当前校验值不同时,软件终止运行;当所述原始校验值与所述当前校验值相同时,继续执行步骤S103。。

控制程序运行及终止的方式均与上述其他实施例相同。

在本实施例中,通过对软件的可执行文件的一致性验证,可以确保运行的是未被修改过的程序,防止被破解使用,提高了软件保护性能。其中,破解是指使用者在没有任何经济付出的条件下无限制的运行该程序。

图5示出了本发明实施例提供的软件保护装置的结构框图,该软件保护装置用于运行本发明上述实施例的软件保护方法。为了便于说明,仅示出了与本实施例相关的部分。

参照图5,该装置包括:

第一获取单元51,用于获取软件的授权信息;

第二获取单元52,用于获取所述授权信息的加密值并存储到用户系统中;

第三获取单元53,用于在所述用户系统中,获取与所述授权信息的类型对应的当前系统参数;

第一处理单元54,用于当所述授权信息为区间数值时,获取所述授权信息的解密值;若所述当前系统参数不在所述授权信息的解密值的区间内,软件终止运行;

第二处理单元55,用于当所述授权信息为非区间数值时,获取所述当前系统参数的加密值;若所述授权信息的加密值与所述当前系统参数的加密值不同,软件终止运行。

可选地,所述软件保护装置还包括:

认证单元,用于通过动态密码方式验证管理员身份,以获取软件的授权信息值。

可选地,所述第二获取单元52还用于:

获取所述授权信息的加密值存储到用户系统注册表中;

可选地,所述软件保护装置还包括:

调整单元,将存储在所述用户系统的所述授权信息的加密值的区间起始值调整为所述当前系统参数的加密值。

可选地,所述软件保护装置还包括:

第四获取单元,用于获取所述软件的可执行文件的原始校验值及当前校验值;

第三处理单元,用于判断当所述原始校验值与所述当前校验值不同时,软件终止运行;

在本发明实施例中,完全使用基于软件以及依靠用户终端单设备的方式来保护程序,有效降低了软件保护成本和操作复杂度,保证了硬件端口资源不被浪费,且通过对授权信息的加密认证,提高了软件保护的安全性能。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1