会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 软件 / 软件 / 一种软件保护方法

一种软件保护方法

阅读:1052发布:2020-07-12

IPRDB可以提供一种软件保护方法专利检索,专利查询,专利分析的服务。并且本发明公开一种软件保护方法,通过对软件保护装置内的功能模块的使用进行控制从而控制软件的使用,该方法包括:内部计时器根据软件保护装置内的CPU时钟进行计时;利用内部计时器的计时来累计记录功能模块的实际使用时间;根据软件保护装置接收到的命令和功能模块的实际使用时间来控制功能模块的使用。本发明通过在软件保护装置内部设置内部计时器以利用软件保护装置的CPU时钟来实现对软件的实际使用时间的累计计时,并结合功能模块控制器来对各个功能模块进行控制,克服了现有技术中带有时钟芯片的软件保护装置成本较高的问题,而且本发明不直接利用来自外部的系统时间进行计时,所以可防止由于系统时间被修改而带来的软件安全性差的问题。,下面是一种软件保护方法专利的具体信息内容。

1.一种软件保护方法,其通过对软件保护装置内的功能模块的使用进行控制从而控制软件的使用,其特征在于,所述方法包括以下步骤:内部计时器根据软件保护装置内的CPU时钟进行计时;

利用内部计时器的计时来累计记录软件保护装置中的功能模块的实际使用时间;以及根据软件保护装置接收到的命令和所述功能模块的实际使用时间来控制功能模块的使用,其中,所述功能模块中包括从软件中提取出来的供外部调用的代码和/或数据,所述方法进一步包括:利用从当前命令中提取的外部时间信息和从上次命令中提取的外部时间信息计算出这两个命令之间的外部时间间隔;从计时器中获取当前命令和上次命令的内部时间间隔;

判断所述外部时间间隔和内部时间间隔的差值是否在预先设定的误差范围内;在所述差值落入预先设定的误差范围的情况下,使用外部时间来校准计时器的时间,从而使功能模块的实际使用时间能够被准确计时;

如果所述内部时间间隔和外部时间间隔的差值超出了所述预先设定的误差范围,则软件保护装置对功能模块的使用进行限制。

2.根据权利要求1所述的方法,其特征在于,所述控制功能模块的使用包括根据接收到的命令和功能模块实际使用时间来启用、调用或停用功能模块。

3.根据权利要求2所述的方法,其特征在于,

在收到功能模块的启用命令并且相应的功能模块的实际使用时间没有超时的情况下,启用相应的功能模块;

在收到功能模块的调用命令并且相应的功能模块已经被启用的情况下,调用该功能模块;以及在收到功能模块的停用命令的情况下停用相应的已经被启用的功能模块。

4.根据权利要求1所述的方法,其特征在于,所述累计记录软件保护装置中的功能模块的实际使用时间为,记录停用状态的功能模块的每次使用时间的总和;

其中,所述每次使用时间是指功能模块每次从被启用到被停用的时间间隔。

5.根据权利要求1所述的方法,其特征在于,所述累计记录软件保护装置中的功能模块的实际使用时间为,记录启用状态的功能模块的在最后一次启用之前的每次使用时间和本次已经使用的时间的总和;

其中,所述每次使用时间是指功能模块每次从被启用到被停用的时间间隔;所述本次使用时间是指处于启用状态的功能模块从最后一次启用到当前的时间间隔。

6.根据权利要求5所述的方法,其特征在于,以预先设定的时间间隔,定期更新已启动的功能模块的实际使用时间,并且在功能模块的更新后的实际使用时间超时的情况下停用该功能模块。

说明书全文

一种软件保护方法

技术领域

[0001] 本发明涉及软件保护领域,特别涉及一种软件保护方法,用于在软件的使用和租赁过程中对软件的使用时间进行控制。

背景技术

[0002] 随着经济技术的飞速发展,软件作为辅助工具已经深入到了各行各业当中。软件产品是软件设计者和软件编程人员智慧的结晶,软件开发商的生存和发展是软件产品能够充足供应的基础,因而,保护软件产品的版权,防止软件产品被盗版,具有很重要的现实意义。
[0003] 在软件开发商已有的保护软件产品的众多策略中,多数采用了这样一种方式:提炼出软件产品中的核心算法或密钥作为关键程序代码,将所述关键程序代码及该程序代码所需要的数据放在软件保护装置中以作为软件保护装置中的功能模块,供外部软件调用。即,功能模块为:软件开发商从软件产品中提取出来的可以或者已经放在软件保护装置中的供外部调用的代码和/或数据。采用这种方式以后,当用户使用软件产品时,必须要有软件保护装置同时运行,否则将无法使用该软件产品。
[0004] 这种策略的优势是,软件产品的关键代码是放在软件保护装置中的,破解者很难得到软件产品的关键程序代码,也很难克隆软件保护装置,也就很难破解该软件产品。当然所述的软件保护装置的处理芯片是一个具有一定安全认证等级的智能卡芯片才可以防止被硬克隆。正因为有这种优势,国内外越来越多的软件开发商都采用了这种策略来保护自己的软件产品。
[0005] 由于市场营销策略的原因,软件开发商经常需要提供限时的软件产品。对于使用软件保护装置的软件产品,可以使用带有时钟芯片的软件保护装置来实现软件的限时使用。带有时钟芯片的软件保护装置使用电池为时钟芯片供电,从而可以实现精确的计时。但带有时钟芯片的软件保护装置和普通的软件保护装置相比,需要增加时钟芯片、电池以及时钟芯片工作需要的晶体,从而需要增加较大的额外成本。对于不使用软件保护装置的软件产品,只能通过读取系统时间来获得时间信息以限制软件的使用时间,但是由于系统时间很容易被修改,所以基于系统时间来实现对软件进行限时的方法,其安全性非常差。

发明内容

[0006] 有鉴于此,本发明的目的就是提供一种成本较低、安全性相对较高的软件保护方法。
[0007] 因此,本发明提出了一种软件保护方法,其通过对软件保护装置内的功能模块的使用进行控制从而控制软件的使用,该方法包括以下步骤:内部计时器根据软件保护装置内的CPU时钟进行计时;利用内部计时器的计时来累计记录软件保护装置中的功能模块的实际使用时间;根据软件保护装置接收到的命令和所述功能模块的实际使用时间来控制功能模块的使用,其中,所述功能模块中包括从软件中提取出来的供外部调用的代码和/或数据。
[0008] 进一步地,所述控制功能模块的使用包括根据接收到的命令和功能模块实际使用时间来启用、调用或停用功能模块。
[0009] 进一步地,在收到功能模块的启用命令并且相应的功能模块的实际使用时间没有超时的情况下,启用相应的功能模块;在收到功能模块的调用命令并且相应的功能模块已经被启用的情况下,调用该功能模块;以及在收到功能模块的停用命令的情况下停用相应的已经被启用的功能模块。
[0010] 进一步地,所述累计记录软件保护装置中的功能模块的实际使用时间为,记录停用状态的功能模块的每次使用时间的总和;其中,所述每次使用时间是指功能模块每次从被启用到被停用的时间间隔。
[0011] 进一步地,所述累计记录软件保护装置中的功能模块的实际使用时间为,记录启用状态的功能模块的在最后一次启用之前的每次使用时间和本次已经使用的时间的总和;其中,所述每次使用时间是指功能模块每次从被启用到被停用的时间间隔;所述本次使用时间是指处于启用状态的功能模块从最后一次启用到当前的时间间隔。
[0012] 进一步地,以预先设定的时间间隔,定期更新已启动的功能模块的实际使用时间,并且在功能模块的更新后的实际使用时间超时的情况下停用该功能模块。
[0013] 进一步地,利用从当前命令中提取的外部时间信息和从上次命令中提取的外部时间信息计算出这两个命令之间的外部时间间隔;从计时器中获取当前命令和上次命令的内部时间间隔;判断所述外部时间间隔和内部时间间隔的差值是否在预先设定的误差范围内;在所述差值落入预先设定的误差范围的情况下,使用外部时间来校准计时器的时间,从而使功能模块的实际使用时间能够被准确计时。
[0014] 进一步地,如果所述内部时间间隔和外部时间间隔的差值超出了所述预先设定的误差范围,则软件保护装置对功能模块的使用进行限制。
[0015] 本发明通过设置在软件保护装置内的内部计时器利用软件保护装置内的CPU时钟进行计时,来实现对功能模块的实际使用时间的计时,并且利用实际使用时间来对功能模块进行控制,从而克服了现有技术中带有时钟芯片的软件保护装置成本较高的问题,而且本发明的方法不直接利用来自外部的系统时间来计时,所以可防止由于系统时间被修改而带来的软件安全性差的问题;进一步地,本发明利用外部系统的时间信息来对内部计时器进行校准,从而可以保证内部计时器的精确性。

附图说明

[0016] 图1为本发明的软件保护方法的流程图;
[0017] 图2为本发明的软件保护方法利用系统时间对内部计时器进行校准的流程图;
[0018] 图3为利用本发明的软件保护方法的软件保护装置的结构示意图。

具体实施方式

[0019] 本发明的方法用在软件保护装置中,软件保护装置用来对运行在外部系统中的软件的使用进行限制,而这种限制是通过利用本发明的方法对软件保护装置内的功能模块的控制而实现的。本发明的方法可以用软件方式实现,为方便描述,在下文中用“功能模块控制器”来代表本发明的方法。
[0020] 下面结合附图对本发明的软件保护方法进行详细的描述。
[0021] 下面以一个具体实施方式对本发明的软件保护方法的各个步骤进行说明。如图1所示,该方法包括以下步骤。
[0022] 步骤200,初始化并启动软件保护装置的内部计时器;
[0023] 对内部计时器的初始化包括利用当前的外部系统时间来设置内部计时器的初始时间,并启动内部计时器,使其开始利用软件保护装置内的CPU时钟开始计时。
[0024] 步骤201,等待外部命令;
[0025] 该步骤为待命状态,如果未收到来自外部系统的任何命令,则继续等待,直至收到外部的命令后,才执行步骤202。
[0026] 步骤202,在接收到外部命令时,判断接收到的命令为启用、调用还是停用,当命令为启用时,执行步骤203;当命令为调用时,执行步骤211;当命令为停用时,执行步骤221;
[0027] 该步骤为分发命令的步骤,对于不同命令,执行不同的后续步骤。
[0028] 步骤203,检查要求启用的功能模块是否超时,如果不超时则执行步骤204,如果超时则返回步骤201;
[0029] 对于启用命令,可以先检查要求启用的功能模块是否超时,仅对不超时的功能模块执行步骤204,对于超时的功能模块,则可以不予处理,直接返回步骤201继续待命;在此步骤中,也可以如图1所示,在超时的时候,先执行报告错误的步骤206,再返回步骤201,这样可以使用户清楚地了解所发出命令的处理结果。
[0030] 步骤204,根据内部计时器的输出开始累计地记录该功能模块的使用时间。
[0031] 步骤205,初始化并启用该功能模块,然后返回步骤201。
[0032] 上述步骤204、205的先后顺序可调换。
[0033] 步骤211,检查该功能模块是否已经被启用,如果已启用,则执行步骤212,否则返回步骤201;
[0034] 如果在步骤202收到了调用命令,则在本步骤211中,检查功能模块是否已被启用,只对已启用的功能模块进行调用;对于未启用的功能模块,可以直接返回步骤201,也可以如图1所示,在执行报告错误的步骤206后,再返回步骤201。
[0035] 步骤212,调用该功能模块,返回步骤201;
[0036] 调用相应功能模块并向外部系统返回调用结果,这样即完成了调用命令,可以返回步骤201待命。
[0037] 步骤221,检查该功能模块是否已经被启用,如果已被启用则执行步骤222,如果未被启用则直接返回步骤201;
[0038] 如果在步骤202收到了停用命令,则在步骤221中,可以先检查功能模块是否已启用,只对已启用的功能模块进行停用操作。
[0039] 步骤222,停用该功能模块,并更新该功能模块的使用时间。
[0040] 步骤223,停止对被停用的功能模块计时,返回步骤201;
[0041] 功能模块的停用包括以上两个步骤222和223,主要为停止计时和更新使用时间,其中,在功能模块被停用后,应当停止对其使用时间的计时,而更新使用时间使功能模块的使用时间被更新为最新信息。
[0042] 此外,步骤201中可以进一步包括:循环检测计时器的值是否已达到预先设定的阈值,如果计时器的值已达到阈值,则执行步骤231:更新已启动的功能模块的使用时间。在步骤231后还可以进一步包括步骤232,检测是否有功能模块已超时,如有则执行步骤
233;否则返回步骤201;步骤233,停用相关的超时的功能模块;然后执行步骤223,然后返回步骤201。步骤231-233的这种循环检测使功能模块控制器在等待接受功能模块相关命令时,可以以预定的时间间隔对功能模块的使用时间进行检测,并及时地刷新已启用的功能模块的使用时间,从而为及时发现超时使用的功能模块提供了条件。该阈值越小,则检测是否超时使用的周期越短,对于功能模块的控制的灵敏度越高;反之,阈值越大,则检测是否超时使用的周期越长,对于功能模块的控制的灵敏度越低。
[0043] 由于本发明的方法是通过软件保护装置的内部计时器来控制软件的使用时间,而内部计时器的工作依赖于软件保护装置内的CPU时钟,而这个CPU时钟的频率可能存在一定的误差,因此这种计时的方法存在一定缺陷。在此可以通过系统时间和内部计时器相结合的办法来提高计时的精度。因为发送给功能模块控制器的命令都需要带上当前的系统时间,这样功能模块控制器可以利用外部系统发来的命令中的时间来校准内部计时器。如图2所示,本发明的方法还可以包括利用外部的系统时间对内部计时器进行校准的步骤:步骤300,提取当前命令数据中的时间数据,计算出该时间和上次传入的命令数据中的时间之间的外部时间间隔;步骤301,获取内部计时器所记录的当前命令与上次传入命令之间的内部时间间隔;步骤302,得到所述外部时间间隔和内部时间间隔之间的差值;步骤303,判断所述差值是否落在预先设定误差范围内,如是则执行步骤304;步骤304,获取当前的系统时间,对已经启动的功能模块的使用时间进行校准。例如,如果当前命令中的外部时间信息为10点零2秒,而上次命令中的外部时间信息为9点整,则可得到外部时间间隔为1小时零2秒,并且如果得到了内部时间间隔为1小时,则两个时间间隔的差值为2秒,而如果预定的误差范围为3秒,则因为3秒>2秒,所以落在误差范围内,这时可以获取当前的外部系统时间来对内部计时器的时间进行校准。
[0044] 如果在步骤303中判断得到所述两个时间间隔之间的差值超出了预先设定的误差范围,可以忽略外部时间,或者也对功能模块的使用进行限制(步骤305)。所述限制可以为:修改功能模块的使用时间,以减少功能模块的可使用时间;甚至阶段性停用或永久停用功能模块等等。
[0045] 图2中的上述步骤300-304可以在图1的步骤201和202之间执行,在执行步骤305之后,可以报告错误,即报告外部时间有误差的信息,然后可以返回步骤201,等待下一命令。
[0046] 另外,在本发明的方法的步骤200中,启动内部计时器可以在方法的开始就进行,也可以在接收到第一个启用功能模块的命令的时候进行,然后再启用指定的功能模块;如果在收到第一个启用命令时进行,则相应地上述步骤201中的检查计时器的阈值的操作必须在软件保护装置内部的计时器启动之后才能进行。
[0047] 另外,上述步骤201中的检查计时器的值,可以通过中断来完成。一般情况下可以先给计时器设置一个阈值,当计时器的值到达这个阈值时,计时器会向CPU发起一个中断请求。CPU可以在中断请求的处理函数中对已经启用的功能模块的使用时间完成更新,检查功能模块是否超时工作。
[0048] 下面对于本发明的软件保护方法的主要工作流程进行说明。功能模块控制器在接收到命令之后,根据不同的命令完成不同的操作。如果是启用功能模块的命令,则功能模块控制器查看该功能模块是否已经被启用,如果已经被启用,直接返回成功(该步骤在图中未显示);如果未被启用,则检查该功能模块是否超时,如果已超时则返回错误;如果未超时,则开始对该功能模块计时并启用该功能模块。如果是调用功能模块命令,则检查该功能模块是否已经启用,如果未被启用,则返回错误;如果已经被启用则调用该功能模块,并返回功能模块的调用结果。如果是停用功能模块命令,则检查该功能模块是否已经被启用,如果未被启用,则返回成功;如果已经被启用,则停用该功能模块并更新该功能模块的使用时间。另外,对于已启用的功能模块,可以定时更新其使用时间,并且在更新后检测功能模块是否超时,如超时则可以停用该功能模块。
[0049] 另外,本发明的方法可以用在如图3所示的一个软件保护装置中,该装置可以使用USB接口与外部系统进行通信;并且还可以包括命令分发器,其通过USB接口接收来自外部的所有命令,并将与功能模块相关的命令分发给功能模块控制器,将其它命令发送给功能模块无关命令处理器;功能模块控制器接收到命令后的处理过程(即本发明的软件保护方法)在上文中已有详细描述,在此不予赘述。如图3所示,该装置中包括了两个功能模块:第一功能模块和第二功能模块,实际上本领域的技术人员应当理解,其中可以包括一个以上的任意个功能模块。对于各个不同的功能模块的使用时间的控制是通过所记录的各自的使用时间而进行的。
[0050] 以上内容仅作为示例性的说明,而不用于限制本发明,本发明的保护范围是由权利要求书所限定的。本领域的技术人员在本发明的精神范围内可以对本发明做出各种修改或等同替换,这些也应视为落入本发明的保护范围内。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用