1.程序保护方法,用于防止一个目标程序(20)被破解,其特征在于,所述目标程序(20)运行在第一虚拟机(101)上,所述方法包括:
在所述第一虚拟机(101)的操作系统启动过程中,运行第一解密程序,其中,所述第一解密程序用于对所述第一虚拟机(101)的第一分区进行解密,所述第一分区中包括所述目标程序(20);
在解密所述第一分区后,运行所述目标程序(20)。
2.如权利要求1所述的方法,其特征在于,运行所述第一解密程序,包括:
判断所述第一虚拟机(101)的至少一个属性中每一个属性的取值与第二虚拟机(102)该属性的取值是否相同,其中,所述第二虚拟机(102)是预设的用于运行所述目标程序(20)的虚拟机;
若所述第一虚拟机(101)的所述至少一个属性中的每一个属性的取值与所述第二虚拟机(102)该属性的取值相同,则解密所述第一分区;
若所述第一虚拟机(101)中的所述至少一个属性中存在一个属性,该属性的取值与所述第二虚拟机(102)该属性的取值不同,则保持所述第一分区被加密。
3.如权利要求1或2所述的方法,其特征在于,所述目标程序(20)由Java编写或由一种解释型语言编写,所述解密程序由一种编译型语言编写。
4.如权利要求1~3任一项所述的方法,其特征在于,还包括:
在运行所述目标程序(20)过程中,向一个许可服务器(30)请求用于运行所述目标程序(20)的许可;
若获得运行所述目标程序(20)的许可后,则继续运行所述目标程序(20),若未获得运行所述目标程序(20)的许可,则终止运行所述目标程序(20)。
5.许可服务器启动方法,所述方法用于启动一个许可服务器(30),其特征在于,所述许可服务器(30)运行在一个第三虚拟机(103)上,用于为一个目标程序(20)的运行提供许可,所述方法包括:
在所述第三虚拟机(103)的操作系统的启动过程中,运行第二解密程序,其中,所述第二解密程序用于对所述第三虚拟机(103)的第三分区进行解密,所述第三分区中包括所述许可服务器(30)的程序;
在解密所述第三分区后,运行所述许可服务器(30)的程序,以启动所述许可服务器(30);
在启动所述许可服务器(30)的过程中,检查硬件狗是否存在,若存在,则提供一个应用程序接口,所述应用程序接口用于接收来自所述目标程序(20)的许可请求;若不存在则终止所述许可服务器(30)的启动。
6.如权利要求5所述的方法,其特征在于,在提供一个应用程序接口,用于接收来自所述目标程序(20)的许可请求后,还包括:
若检测到所述硬件狗被拔出,则终止许可服务器(30)。
7.第一虚拟机(101),其特征在于,所述第一虚拟机(101)上运行一个目标程序(20),所述第一虚拟机(101)包括:
一个解密模块(1011),用于在所述第一虚拟机(101)的操作系统启动过程中,运行第一解密程序,其中,所述第一解密程序用于对所述第一虚拟机(101)的第一分区进行解密,所述第一分区中包括所述目标程序(20);
一个目标程序运行模块(1012),用于在所述解密模块(1011)解密所述第一分区后,运行所述目标程序(20)。
8.如权利要求7所述的第一虚拟机(101),其特征在于,所述解密模块(1011)具体用于:
判断所述第一虚拟机(101)的至少一个属性中每一个属性的取值与第二虚拟机(102)该属性的取值是否相同,其中,所述第二虚拟机(102)是预设的用于运行所述目标程序(20)的虚拟机;
若所述第一虚拟机(101)的所述至少一个属性中的每一个属性的取值与所述第二虚拟机(102)该属性的取值相同,则解密所述第一分区;
若所述第一虚拟机(101)中的所述至少一个属性中存在一个属性,该属性的取值与所述第二虚拟机(102)该属性的取值不同,则保持所述第一分区被加密。
9.如权利要求7或8所述的第一虚拟机(101),其特征在于,所述目标程序运行模块(1012)运行的所述目标程序(20)由Java编写或由一种解释型语言编写,所述解密模块(1011)运行的所述解密程序由一种编译型语言编写。
10.如权利要求7~9任一项所述的第一虚拟机(101),其特征在于,所述目标程序运行模块(1012),还用于:
在所述目标程序(20)运行过程中,向一个许可服务器(30)请求用于运行所述目标程序(20)的许可;
若获得运行所述目标程序(20)的许可,则继续运行所述目标程序(20),若未获得运行所述目标程序(20)的许可,则终止运行所述目标程序(20)。
11.第三虚拟机(103),其特征在于,所述第三虚拟机(103)上运行一个许可服务器(30),所述许可服务器(30)用于为一个目标程序(20)的运行提供许可,所述第三虚拟机(103)包括:
一个解密模块(1031),用于在所述第三虚拟机(103)的操作系统的启动过程中,运行第二解密程序,其中,所述第二解密程序用于对所述第三虚拟机(103)的第三分区进行解密,所述第三分区中包括所述许可服务器(30)的程序;
一个许可服务器运行模块(1032),用于:
在解密模块(1031)解密所述第三分区后,运行所述许可服务器(30)的程序,以启动所述许可服务器(30);
在启动所述许可服务器(30)的过程中,检查硬件狗是否存在,若存在,则提供一个应用程序接口,所述应用程序接口用于接收来自所述目标程序(20)的许可请求;若不存在则终止所述许可服务器(30)的启动。
12.如权利要求11所述的第三虚拟机(103),其特征在于,所述许可服务器运行模块(1032)还用于:
在提供一个应用程序接口,用于接收来自所述目标程序(20)的许可请求后,若检测到所述硬件狗被拔出,则终止许可服务器(30)。
13.至少一台计算机设备(70),其特征在于,所述至少一台计算机设备(70)上运行如权利要求1~4中任一项所述的第一虚拟机(101)和/或权利要求5或6中所述的第三虚拟机(103)。
14.计算机存储介质,所述计算机可读介质上存储有计算机可读指令,所述计算机可读指令在被处理器执行时,使所述处理器执行权利要求1~6任一项所述的方法。
15.一种计算机网络(10),包括:至少一个第一虚拟机(101)和一个第三虚拟机(103),所述第一虚拟机(101)上运行一个目标程序(20),所述第三虚拟机(103)上运行一个许可服务器(30),其特征在于,所述第一虚拟机(101),用于:
在操作系统启动过程中,运行第一解密程序,其中,所述第一解密程序用于对所述第一虚拟机(101)的第一分区进行解密,所述第一分区中包括一个目标程序(20);
在解密所述第一分区后,向一个许可服务器(30)请求用于运行所述目标程序(20)的许可;
在获得所述目标程序(20)的许可后,运行所述目标程序(20)。