一种程序保护方法和装置与流程

文档序号:14609710发布日期:2018-06-05 20:34阅读:142来源:国知局
一种程序保护方法和装置与流程

本发明涉及软件工程技术领域,尤其涉及一种程序保护方法和装置。



背景技术:

一个程序开发组织在完成程序开发,交付程序之后,程序由于运行在该程序开发组织的外部网络上,存在被破解的风险。

一种可能的情况是,一个程序被非法复制,非法复制者在接触到程序本身后,利用逆向工程(reverse engineering)等技术破解出程序代码。一旦程序代码被破解,则程序中的核心技术会被窃取,程序开发组织将蒙受巨大的损失。



技术实现要素:

有鉴于此,本发明提供一种程序保护方法和装置,用以防止程序被破解。其中,通过采用分区加密等手段,避免程序本身被非法人员接触到,从而降低了程序被破解的风险。

第一方面,本发明实施例提供一种程序保护方法,用于防止一个目标程序被破解。其中,该目标程序运行在第一虚拟机上,具体的保护方法包括:在所述第一虚拟机的操作系统启动过程中,运行第一解密程序,比如:将第一解密程序放在虚拟机的操作系统的启动项中,或者作为操作系统代码的一部分写入操作系统中。其中,所述第一解密程序用于对所述第一虚拟机的第一分区进行解密,所述第一分区中包括所述目标程序;在解密所述第一分区后,运行所述目标程序。若无法解密第一分区,则目标程序无法运行。

通过对目标程序所在的分区进行加密,使得非法人员在无法对分区解密的情况下,无法直接接触到目标程序,则无法破解目标程序。其中,将目标程序置于一个虚拟机上,即使该虚拟机被非法进行硬盘映射,只要无法通过解密程序的解密,非法人员就无法得到虚拟机内的目标程序,极大地降低了目标程序被获取甚至破解的风险。

在一种可能的实现方式中,可以将第一解密程序设计为:在第一解密程序运行时,判断所述第一虚拟机的至少一个属性中每一个属性的取值与第二虚拟机该属性的取值是否相同,其中,所述第二虚拟机是预设的用于运行所述目标程序的虚拟机;若所述第一虚拟机的所述至少一个属性中的每一个属性的取值与所述第二虚拟机该属性的取值相同,则解密所述第一分区;若所述第一虚拟机中的所述至少一个属性中存在一个属性,该属性的取值与所述第二虚拟机该属性的取值不同,则保持所述第一分区被加密。

若第一虚拟机为合法被授权的虚拟机,即第一虚拟机即为第二虚拟机,那么在第一解密程序对虚拟机属性取值进行验证时,则可以验证通过,第一分区可以被解密。只有一个虚拟机自身才能获得自己的属性取值。因此,通过虚拟机属性取值的验证方法,可以确保虚拟机的合法性,即使虚拟机被非法进行硬盘映射,由于虚拟机属性取值无法通过验证,非法人员也无法解密,无法直接接触到目标程序,进而也就无法通过逆向工程等方法破解程序代码。

在一种可能的实现方式中,上述虚拟机的属性可包括:虚拟机的操作系统的用户名和密码。

进一步地,上述虚拟机的属性还可包括:虚拟机的处理器标识、硬盘标识、驱动标识以及用户自定义的标识(比如一个用户文件中的特定字节)等。

在一种可能的实现方式中,所述目标程序由Java编写或由一种解释型语言编写,所述解密程序由一种编译型语言编写。

由于编译型语言编写的程序被破解的难度更大,因此采用编译型语言,诸如C++等编写解密程序,能够更好地防止解密程序被破解,进而防止目标程序被非法人员接触到。解释型语言或Java编写的程序相对于编译型语言编写的程序更容易被破解,因此,本发明实施例对于由解释性语言或Java编写的程序进行保护的必要性更大。

在一种可能的实现方式中,即使对目标程序所在的分区能够解密,运行目标程序也需要得到许可。比如:在运行所述目标程序过程中,向一个许可服务器请求用于运行所述目标程序的许可,若获得所述目标程序的许可,则继续运行所述目标程序,若未获得所述目标程序的许可,则终止运行所述目标程序。

只有得到了许可,目标程序才能够继续运行,可有效避免目标程序的非法复制。即使通过复制虚拟机得到了复制的目标程序,也会由于没有许可而无法继续运行目标程序。

进一步地,所述目标程序的许可中包括许可有效时间,目标程序在获得所述目标程序的许可后,可启动一个定时器,所述定时器的长度等于所述许可有效时间,在所述定时器超时之前,目标程序可向所述许可服务器请求更新用于运行所述目标程序的许可,并在在获得所述目标程序的更新后的许可后,继续运行所述目标程序。

给许可定义了一个有效时间,即使非法人员获得了许可,也不可能长期运行目标程序,进一步降低了目标程序被非法运行的风险。

第二方面,本发明实施例提供一种许可服务器启动方法,所述方法用于启动一个许可服务器,所述许可服务器运行在一个第三虚拟机上,用于为一个目标程序的运行提供许可,所述方法可由第三虚拟机执行。具体地,在所述第三虚拟机的操作系统的启动过程中,运行第二解密程序,其中,所述第二解密程序用于对所述第三虚拟机的第三分区进行解密,所述第三分区中包括所述许可服务器的程序;在解密所述第三分区后,运行所述许可服务器的程序,以启动所述许可服务器。

该第二解密程序解密的原理可类似于第一方面中的第一解密程序,可通过对第三虚拟机的至少一个属性的取值进行验证,验证通过,则对许可服务器的程序所在的第三分区进行解密;若验证未通过,则保持该第三分区被加密。

通过对许可服务器的程序所在分区进行加密,可降低许可服务器的程序被非法运行的风险,以及许可服务器的程序被破解的风险。

在一种可能的实现方式中,在启动所述许可服务器的过程中,检查硬件狗(dongle)是否存在,若存在,则提供一个应用程序接口,所述应用程序接口用于接收来自所述目标程序的许可请求;若不存在则终止所述许可服务器的启动。

其中,基于硬件狗技术为其许可服务器提供复制保护,许可服务器的部分启动代码可置于硬件狗中,确保许可服务器只有在硬件狗存在的情况下才能启动,从而防止对许可服务器的非法复制。

在一种可能的实现方式中,检测到所述硬件狗被拔出,则终止许可服务器。

保证了许可服务器运行的唯一性,降低了非法许可的风险。

第三方面,本发明实施例提供一种第一虚拟机,所述第一虚拟机上运行一个目标程序,所述第一虚拟机包括:一个解密模块,用于在所述第一虚拟机的操作系统启动过程中,运行第一解密程序,其中,所述第一解密程序用于对所述第一虚拟机的第一分区进行解密,所述第一分区中包括所述目标程序;以及一个目标程序运行模块,用于在所述解密模块解密所述第一分区后,运行所述目标程序。

通过对目标程序所在的分区进行加密,使得非法人员在无法对分区解密的情况下,无法直接接触到目标程序,则无法破解目标程序。其中,将目标程序置于一个虚拟机上,即使该虚拟机被非法进行硬盘映射,只要无法通过解密程序的解密,非法人员就无法得到虚拟机内的目标程序,极大地降低了目标程序被获取甚至破解的风险。

在一种可能的实现方式中,所述解密模块具体用于:

判断所述第一虚拟机的至少一个属性中每一个属性的取值与第二虚拟机该属性的取值是否相同,其中,所述第二虚拟机是预设的用于运行所述目标程序的虚拟机;

若所述第一虚拟机的所述至少一个属性中的每一个属性的取值与所述第二虚拟机该属性的取值相同,则解密所述第一分区;

若所述第一虚拟机中的所述至少一个属性中存在一个属性,该属性的取值与所述第二虚拟机该属性的取值不同,则保持所述第一分区被加密。

若第一虚拟机为合法被授权的虚拟机,即第一虚拟机即为第二虚拟机,那么在第一解密程序对虚拟机属性取值进行验证时,则可以验证通过,第一分区可以被解密。只有一个虚拟机自身才能获得自己的属性取值。因此,通过虚拟机属性取值的验证方法,可以确保虚拟机的合法性,即使虚拟机被非法进行硬盘映射,由于虚拟机属性取值无法通过验证,非法人员也无法执行目标程序,无法直接接触到目标程序,进而也就无法通过逆向工程等方法破解程序代码。

在一种可能的实现方式中,所述解密模块在运行所述第一解密程序时使用的所述至少一个属性包括:操作系统的用户名和密码。

进一步地,上述虚拟机的属性还可包括:处理器标识、硬盘标识、驱动标识或用户自定义标识。

在一种可能的实现方式中,所述目标程序运行模块运行的所述目标程序由Java编写或由一种解释型语言编写,所述解密模块运行的所述解密程序由一种编译型语言编写。

由于编译型语言编写的程序被破解的难度更大,因此采用编译型语言,诸如C++等编写解密程序,能够更好地防止解密程序被破解,进而防止目标程序被非法人员接触到。解释型语言或Java编写的程序相对于编译型语言编写的程序更容易被破解,因此,本发明实施例对于由解释性语言或Java编写的程序进行保护的必要性更大。

在一种可能的实现方式中,所述目标程序运行模块还用于在所述目标程序运行过程中,向一个许可服务器请求用于运行所述目标程序的许可;若获得所述目标程序的许可后,则继续运行所述目标程序;若未获得运行所述目标程序的许可,则终止运行所述目标程序。

只有得到了许可,目标程序才能够继续运行,可有效避免目标程序的非法复制。即使通过复制虚拟机得到了复制的目标程序,也会由于没有许可而无法继续运行目标程序。

在一种可能的实现方式中,运行所述目标程序的许可中包括许可有效时间,所述目标程序运行模块在获得运行所述目标程序的许可后,启动一个定时器,所述定时器的长度等于所述许可有效时间;所述目标程序运行模块在所述定时器超时之前,向所述许可服务器请求更新用于运行所述目标程序的许可;在获得运行所述目标程序的更新后的许可后,继续运行所述目标程序。

给许可定义了一个有效时间,即使非法人员获得了许可,也不可能长期运行目标程序,进一步降低了目标程序被非法运行的风险。

第四方面,提供一种第三虚拟机,所述第三虚拟机上运行一个许可服务器,所述许可服务器用于为一个目标程序的运行提供许可,所述第三虚拟机包括:一个解密模块,用于在所述第三虚拟机的操作系统的启动过程中,运行第二解密程序,其中,所述第二解密程序用于对所述第三虚拟机的第三分区进行解密,所述第三分区中包括所述许可服务器的程序;一个许可服务器运行模块,用于:在解密模块解密所述第三分区后,运行所述许可服务器的程序,以启动所述许可服务器;在启动所述许可服务器的过程中,检查硬件狗是否存在,若存在,则提供一个应用程序接口,所述应用程序接口用于接收来自所述目标程序的许可请求;若不存在则终止所述许可服务器的启动。

该第二解密程序解密的原理可类似于第一方面中的第一解密程序,可通过对第三虚拟机的至少一个属性的取值进行验证,验证通过,则对许可服务器的程序所在的第三分区进行解密;若验证未通过,则保持该第三分区被加密。

通过对许可服务器的程序所在分区进行加密,可降低许可服务器的程序被非法运行的风险,以及许可服务器的程序被破解的风险。基于硬件狗技术为其许可服务器提供复制保护,许可服务器的部分启动代码可置于硬件狗中,确保许可服务器只有在硬件狗存在的情况下才能启动,从而防止对许可服务器的非法复制。

在一种可能的实现方式中,所述许可服务器运行模块还用于:在提供一个应用程序接口,用于接收来自所述目标程序的许可请求后,若检测到所述硬件狗被拔出,则终止许可服务器。

保证了许可服务器运行的唯一性,降低了非法许可的风险。

第五方面,本发明实施例提供至少一台计算机设备,所述至少一台计算机设备上运行第一方面或第一方面的任一种可能的实现方式中所述的第一虚拟机和/或第二方面或第二方面的任一种可能的实现方式中所述的第三虚拟机。

第六方面,本发明实施例提供一种计算机存储介质,所述计算机可读介质上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使所述处理器执行第一方面或第一方面的任一种可能的实现方式中所述的第一虚拟机和/或第二方面或第二方面的任一种可能的实现方式中所述的第三虚拟机。

第七方面,提供一种计算机网络,包括:至少一个第一虚拟机和一个第三虚拟机,所述第一虚拟机上运行一个目标程序,所述第三虚拟机上运行一个许可服务器,其中,所述第一虚拟机用于:在操作系统启动过程中,运行第一解密程序,其中,所述第一解密程序用于对所述第一虚拟机的第一分区进行解密,所述第一分区中包括一个目标程序;在解密所述第一分区后,向一个许可服务器请求用于运行所述目标程序的许可;以及在获得所述目标程序的许可后,运行所述目标程序。

附图说明

图1为本发明实施例提供的计算机网络的结构示意图;

图2为本发明实施例提供的一种程序运行方法的流程图;

图3为本发明实施例提供的一种程序保护方法的流程图;

图4为本发明实施例提供的一种许可服务器启动方法的流程图;

图5为本发明实施例提供的第一虚拟机的结构示意图;

图6为本发明实施例提供的第三虚拟机的结构示意图;

图7为本发明实施例提供的一种计算机设备的结构示意图。

附图标记列表

10:计算机网络 101:第一虚拟机 102:第二虚拟机

103:第三虚拟机 20:目标程序 30:许可服务器

S201:操作系统启动 S202:运行第一解密程序

S203:操作系统启动 S204:运行第二解密程序

S205:检查硬件狗 S206:运行许可服务器30

S207:运行目标程序20 S208:许可请求

S209:许可响应(许可,许可有效时间) S210:继续运行目标程序20

S211:许可更新请求 S212:许可更新响应(更新后的许可,许可有效时间)

S213:继续运行目标程序20

S301:操作系统启动 S302:运行第一解密程序

S303:运行目标程序20 S304:许可请求

S305:等待许可响应 R1:收到许可响应

S306:继续运行目标程序20 R2:收到许可拒绝

S307:许可更新请求 S308:等待许可更新响应

R3:收到许可更新响应 R4:收到许可更新拒绝

S309:终止目标程序20的运行

S401:操作系统启动 S402:运行第二解密程序

S403:检查硬件狗 R5:存在硬件狗

S404:运行许可服务器30 R6:不存在硬件狗

S405:终止许可服务器30的启动 S406:接收许可请求

S407:验证许可请求 R7:许可目标程序20运行

R8:不许可目标程序20运行 S408:发送许可响应

S409:许可拒绝 S410:接收许可更新请求

S411:验证许可更新请求 R9:许可目标程序20继续运行

R10:不许可目标程序20继续运行 S412:许可更新响应

S413:许可更新拒绝 1011:解密模块

1012:目标程序运行模块 1031:解密模块

1032:许可服务器运行模块 70:宿主机

701:至少一个存储器 702:至少一个处理器

具体实施方式

如前所述,一个程序在发布后面临着被破解的风险。本发明实施例中,将目标程序置于虚拟机,对目标程序所在的虚拟机的分区进行加密,在虚拟机的操作系统启动过程中,运行解密程序,对该分区进行解密。只有解密成功,目标程序才得以运行。即使虚拟机被非法进行硬盘映射,只要无法对虚拟机的分区进行解密,仍然无法运行目标程序。避免了目标程序被非法人员直接接触,从而降低了目标程序被破解的风险。

进一步地,还有对目标程序进行许可。只有在获得许可的情况下,目标程序才得以运行。通过许可的机制避免目标程序被非法复制,即使非法人员得到的复制的目标程序,也会因为没有许可而无法运行目标程序。

下面结合附图对本发明实施例进行详细说明。

图1为本发明实施例提供的计算机网络的结构示意图。如图1所示,该计算机网络10包括:

一个第三虚拟机103,所述第三虚拟机103上运行一个许可服务器30,该许可服务器30用于为目标程序20的运行提供许可。该第三虚拟机103所在的宿主机可通过通用串行总线(Universal Serial Bus,USB)接口外接一个硬件狗(dongle),为许可服务器30提供复制保护。

一个第二虚拟机102,所述第二虚拟机102上运行一个目标程序20,该目标程序20即为本发明实施例中要保护的、防止非法运行及破解的程序。

此外,该计算机网络10还可包括至少一个第一虚拟机101,该第一虚拟机101可能是经授权的可运行目标程序20的虚拟机,也可能是将第二虚拟机102进行非法复制和/或非法硬盘映射得到的虚拟机。

图2为本发明实施例提供的一种程序运行方法的流程图。如图2所示,该流程可包括如下步骤:

S201:第一虚拟机101的操作系统启动。

一个虚拟机可以由自身的虚拟的操作系统、硬盘、驱动、处理器等。

S202:在第一虚拟机101操作系统的启动过程中,运行第一解密程序。

可选地,可将第一解密程序放在虚拟机的操作系统的启动项中,或者作为操作系统代码的一部分写入操作系统中。其中,第一解密程序用于对所述第一虚拟机的第一分区进行解密,所述第一分区中包括所述目标程序。

其中,第一解密程序可设计为:在第一解密程序运行时,判断第一虚拟机101的至少一个属性中每一个属性的取值与第二虚拟机102该属性的取值是否相同,其中,第二虚拟机102是预设的用于运行所述目标程序的虚拟机。

若所述第一虚拟机101的至少一个属性中的每一个属性的取值与第二虚拟机102该属性的取值相同,则解密第一分区;若第一虚拟机101中的至少一个属性中存在一个属性,该属性的取值与第二虚拟机102该属性的取值不同,则保持第一分区被加密。

其中,上述虚拟机的属性可包括:虚拟机的操作系统的用户名和密码。

可选地,上述虚拟机的属性还可包括:虚拟机的处理器标识、硬盘标识、驱动标识以及用户自定义的标识(比如一个用户文件中的特定字节)等。

S203:第三虚拟机103的操作系统启动。

S204:在第三虚拟机103的操作系统启动过程中,运行第二解密程序。

其中,第二解密程序的设计原理与第一解密程序类似。对第三虚拟机103的至少一个属性的取值进行验证。若每一个属性的取值均与预设的用于运行许可服务器30的虚拟机的对应属性均相同,则解密第二分区;否则保持第二分区被加密。类似地,虚拟机的属性也可包括:虚拟机的操作系统的用户名和密码、虚拟机的处理器标识、硬盘标识、驱动标识以及用户自定义的标识(比如一个用户文件中的特定字节)等。

S205:在解密第二分区后,第三虚拟机103检查硬件狗是否存在,若存在,执行步骤S206;否则,终止所述许可服务器30的启动。可选地,若第三虚拟机103检测到硬件狗被拔出,则终止许可服务器30。

检查硬件狗的操作可以由一个守护进程实现,该守护进程可在许可服务器30启动过程中检查硬件狗的存在,也可在许可服务器30运行过程中,实时监测硬件狗是否被拔出。

S206:第三虚拟机103运行许可服务器30的程序。提供一个应用程序接口,该应用程序接口用于接收来自目标程序20的许可请求。

上述步骤中,步骤S201、步骤S202,与步骤S203~步骤S206之间不分先后顺序,可并行执行。

S207:第一虚拟机101在执行步骤S202执行第一解密程序,成功解密第一分区后,第一虚拟机101运行目标程序20。

S208:在目标程序20运行的初始阶段,实现目标程序20主体功能的代码还未执行前,目标程序20向许可服务器30发送许可请求,用于请求运行目标程序20的许可,该许可请求可通过步骤S206中第三虚拟机103提供的应用程序接口发送至许可服务器30。一种可能的情况是,目标程序20发送许可请求时,许可服务器30还未运行,或异常退出,此时许可服务器30不会对该许可请求进行响应。可选地,目标程序20在发送该许可请求后,若在预设时间内未收到许可服务器30的许可响应,则可再次向许可服务器30发送许可请求。

S209:许可服务器30对步骤S207中目标程序20发送的许可请求进行验证,判断是否能够许可目标程序20的运行。

比如:许可服务器30维护一个最大许可的个数,若许可已经发完,则许可服务器30拒绝许可目标程序20的运行,若已许可的个数未达到该最大许可的个数,则许可服务器30可许可目标程序20的运行,向目标程序20发送许可响应,该响应中可包括许可本身以及该许可的许可有效时间。

S210:目标程序20在收到许可响应后,即启动一个定时器,该定时器的长度等于许可响应中的许可有效时间。

S211:在目标程序20运行过程中,定时器超时之前,目标程序20向许可服务器30发送许可更新请求,请求更新用于运行目标程序20的许可。

S212:许可服务器30收到该许可更新请求后,判断是否能够继续许可目标程序20的运行。若允许目标程序20继续运行,则向目标程序20发送许可更新响应,该响应中可包括更新后的许可,以及更新后的许可的许可有效时间;否则向目标程序20发送许可更新拒绝。

S213:目标程序20在收到上述许可更新响应后继续运行。

可选地,上述步骤中,若目标程序20已获得许可服务器30的许可,但多次在需要更新许可时未能成功更新许可,则许可服务器30可自动将给目标程序20的许可释放,避免由于第一虚拟机101异常退出带来的死锁。

图3为本发明实施例提供的一种程序保护方法的流程图。如图3所示,该流程可由本发明实施例提供的第一虚拟机101执行,具体可包括如下步骤:

S301:第一虚拟机101的操作系统启动。

S302:在操作系统启动过程中,运行上述第一解密程序,对第一虚拟机101的第一分区进行解密。

S303:在解密第一分区后,运行第一分区中的目标程序20。

S304:在目标程序20运行的初始阶段,实现目标程序20主体功能的代码还未执行前,目标程序20向许可服务器30发送许可请求,请求用于运行目标程序20的许可。

S305:目标程序20等待来自许可服务器30的许可响应,若收到来自许可服务器30的许可响应,则执行步骤S306,若收到来自许可服务器30的许可拒绝,则执行步骤S309。

S306:继续运行目标程序20。之后执行步骤S307。

目标程序20可启动一个定时器,定时器长度等于许可响应中的许可有效时间的长度。

S307:目标程序20运行过程中,在定时器超时前,目标程序20向许可服务器30发送许可更新请求,请求更新用于运行目标程序20的许可。

S308:目标程序20等待来自许可服务器30的许可更新响应,若收到来自许可服务器30的许可更新响应,则返回步骤S306,若收到来自许可服务器30的许可更新拒绝,则执行步骤S309。

其中,目标程序20在每次得到新的许可后,均可启动一个定时器,定时器长度可由许可服务器30指定,定时器超时前,目标程序20需要请求许可服务器30更新许可。

S309:终止目标程序20的运行。

上述流程中,目标程序20在发送许可请求后,若在预设的时间内既未收到许可响应,也未收到许可拒绝,可选地,目标程序20可再次发送许可请求。可选地,可设置最大许可请求次数,若连续发送许可请求的次数达到该设置的最大许可请求次数,则可终止目标程序20的运行。

类似地,目标程序20在发送许可更新请求后,若在预设的时间内既未收到许可更新响应,也未收到许可更新拒绝,可选地,目标程序20可再次发送许可更新请求。可选地,可设置最大许可更新请求次数,若连续发送许可更新请求的次数达到该设置的最大许可更新请求次数,则可终止目标程序20的运行。

图4为本发明实施例提供的一种许可服务器启动方法的流程图,该流程可由本发明实施例提供的第三虚拟机103执行。如图4所示,该流程可包括如下步骤:

S401:第三虚拟机103的操作系统启动。

S402:在操作系统启动过程中,运行上述第二解密程序,对第三虚拟机103的第二分区进行解密。其中,第二分区中包括许可服务器30的程序。

S403:在解密第二分区后,检查硬件狗是否存在,若存在,执行步骤S404;若不存在则执行步骤S405。

S404:运行许可服务器30的程序。提供一个应用程序接口,该应用程序接口用于接收来自目标程序20的许可请求。之后执行步骤S406。

S405:终止所述许可服务器30的启动。

S406:接收来自目标程序20的用于请求运行目标程序20的许可的许可请求。

S407:许可服务器30对接收到的许可请求进行验证,判断是否能够许可目标程序20的运行;若许可目标程序20运行,则执行步骤S408;否则,执行步骤S409。

S408:向目标程序20发送许可响应,许可响应中可包括许可和许可有效时间。之后,执行步骤S410。

S409:向目标程序20发送许可拒绝。

S410:许可服务器30接收来自目标程序20的许可更新请求。

S411:许可服务器30对接收到的许可更新请求进行验证,判断是否能够许可目标程序20继续运行;若许可目标程序20继续运行,则执行步骤S412;否则,执行步骤S413。

S412:许可服务器30向目标程序20发送许可更新响应,该响应中可包括更新后的许可,以及更新后的许可的许可有效时间。

S413:向目标程序20发送许可更新拒绝。

图5为本发明实施例提供的第一虚拟机101的结构示意图。第一虚拟机101上运行目标程序20。如图5所示,该第一虚拟机101可包括:

一个解密模块1011,用于在第一虚拟机101的操作系统启动过程中,运行第一解密程序,其中,第一解密程序用于对第一虚拟机101的第一分区进行解密,第一分区中包括目标程序20;

一个目标程序运行模块1012,用于在解密模块1011解密第一分区后,运行目标程序20。

可选地,解密模块1011具体用于:

判断第一虚拟机101的至少一个属性中每一个属性的取值与第二虚拟机102该属性的取值是否相同,其中,第二虚拟机102是预设的用于运行目标程序20的虚拟机;

若第一虚拟机101的至少一个属性中的每一个属性的取值与第二虚拟机102该属性的取值相同,则解密第一分区;

若第一虚拟机101中的至少一个属性中存在一个属性,该属性的取值与第二虚拟机102该属性的取值不同,则保持第一分区被加密。

可选地,目标程序运行模块1012运行的目标程序20由Java编写或由一种解释型语言编写,解密模块1011运行的解密程序由一种编译型语言编写。

可选地,目标程序运行模块1012,还用于:

在目标程序20运行过程中,向一个许可服务器30请求用于运行目标程序20的许可;

若获得运行目标程序20的许可,则继续运行目标程序20,若未获得运行目标程序20的许可,则终止运行目标程序20。

图5所示的第一虚拟机101的其他可选实现方式可参考前述的图2所示流程中第一虚拟机101的实现。其中目标程序运行模块1012用于运行目标程序20,解密模块1011用于对第一分区进行解密。

图6为本发明实施例提供的第三虚拟机103的结构示意图,该第三虚拟机103上运行前述的许可服务器30。如图6所示,该第三虚拟机103可包括:

一个解密模块1031,用于在第三虚拟机103的操作系统的启动过程中,运行第二解密程序,其中,第二解密程序用于对第三虚拟机103的第三分区进行解密,第三分区中包括许可服务器30的程序;

一个许可服务器运行模块1032,用于:在解密模块1031解密第三分区后,运行许可服务器30的程序,以启动许可服务器30;以及在启动许可服务器30的过程中,检查硬件狗是否存在,若存在,则提供一个应用程序接口,应用程序接口用于接收来自目标程序20的许可请求;若不存在则终止许可服务器30的启动。

可选地,许可服务器运行模块1032还用于:

在提供一个应用程序接口,用于接收来自目标程序20的许可请求后,若检测到硬件狗被拔出,则终止许可服务器30。

图6所示的第三虚拟机103的其他可选实现方式可参考前述的图2所示流程中第三虚拟机103的实现。其中解密模块1031用于解密许可服务器30所在的第二分区,许可服务器运行模块1032用于运行许可服务器30。

图5所示的第一虚拟机101和/或图6所示的第三虚拟机103可位于至少一台宿主机70上。宿主机70可为一台计算机设备,其结构可如图7所示。包括至少一个存储器701和至少一个处理器702。

第一虚拟机101可使用至少一个存储器701的存储能力来存储计算机可读指令,可使用至少一个处理器702的处理能力执行该计算机可读指令,实现图2所示流程中的第一虚拟机101的操作。

第三虚拟机103可使用至少一个存储器701的存储能力来存储计算机可读指令,可使用至少一个处理器702的处理能力执行该计算机可读指令,实现图2所示流程中的第三虚拟机103的操作。

本发明实施例还提供一种计算机存储介质,该计算机存储介质可位于至少一个存储器上,可存储计算机可读指令。存储的计算机可读指令由至少一个处理器执行时,可实现前述的第一虚拟机101和/或第三虚拟机103。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑,如专门的处理器,现场可编程门阵列(Field-Programmable Gate Array,FPGA)或专用集成电路(Application Specific Integrated Circuits,ASIC)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

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