一种软件保护方法和装置制造方法及图纸

技术编号:6598999 阅读:174 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种软件保护方法,将受保护软件的N个代码段中的多个代码段作为第一被移植代码,将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,将第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中,当受保护软件执行代码的过程中,若欲执行的代码段为第一被移植代码时,受保护软件调用安全虚拟机执行所第一被移植代码,当安全虚拟机执行所述第一被移植代码时,若欲执行的代码段为第一被移植代码中的第二被移植代码时,安全虚拟机调用加密锁执行所述第二被移植代码。同时,本发明专利技术还公开了一种软件保护装置,本发明专利技术公开的方法和装置提高了软件保护的强度。

【技术实现步骤摘要】

本专利技术涉及软件版权保护
,特别涉及一种软件保护方法和装置
技术介绍
软件由于其纯数字化的特征,一直遭受盗版的困扰,在现有技术中,通常采用两种软件保护方法防止盗版,一种为基于硬件的保护方法,例如,采用加密锁进行软件保护,另一种为基于软件的保护方法,例如,采用虚拟机机制进行软件保护。下面,对现有技术中这两种软件保护方法进行介绍。加密锁是一种具有一定处理能力的硬件设备,其通过应用程序编程(API)接口和软件平台相连,受保护软件的运行环境为所述软件平台,将受保护软件的部分代码移植至加密锁中,取而代之地,受保护软件中被移植代码部分用调用函数替换,调用函数用于表示调用加密锁中的被移植代码。受保护软件在软件平台上运行的过程中,当运行至原有的被移植代码部分时,采用调用函数调用加密锁中被移植代码,被移植代码在加密锁中运行完毕后,再将结果再返回至软件平台上的受保护软件。为了对加密锁的上述工作过程进行详细说明,下面举例说明。假设软件平台为计算机上的S系统,受保护软件用于依次连续执行步骤1、2、3、4, 步骤1对应代码段a,步骤2对应代码段段b,步骤3对应代码段c,步骤4对应代码段d,加密锁与计算机上的S系统连接后,可将受保护软件中的代码段c转化为加密锁可识别的指令移植至加密锁中,受保护软件中的代码段c用调用函数f(x)替换,f(x)用于表示调用加密锁中的代码段c,当受保护软件在计算机上的S系统运行完毕代码段a后,运行f (χ)调用加密锁中的代码段b,代码段b在加密锁中运行完毕后,将结果返回至计算机上的S系统中的受保护软件,然后受保护软件在计算机上的S系统中再运行代码段c、d。由上述方法可知,由于受保护软件的一部分在加密锁硬件中运行,脱离加密锁的受保护软件是不完整的,破解者必须还原出加密锁内运行的代码才能实现对软件的破解, 因此受保护软件的保护强度就依赖于加密锁硬件内运行的那部分代码的保护强度,而加密锁硬件通常会使用安全性极高的安全处理器或者智能卡,确保内部代码无法跟踪,显然这种保护方式具有极高的保护强度。现有的虚拟机保护技术和上述的加密锁保护技术非常相似,也是通过将软件的部分代码置于安全环境中运行来实现对软件的保护,与加密锁保护方法的主要区别在于所述的安全环境并不是由额外的硬件提供,而是由和受保护软件同一硬件中的虚拟机提供。为了对虚拟机的上述工作过程进行详细说明,下面举例说明。假设受保护软件和虚拟机均运行于某计算机上的S系统中,受保护软件用于连续执行步骤1、2、3、4,步骤1对应代码a段,步骤2对应代码b段,步骤3对应代码c段,步骤 4对应代码段d,可将受保护软件中的代码段c转化为虚拟机指令移植至虚拟机中,受保护软件中的代码段c用调用函数f(x)替换,f(x)用于表示调用虚拟机中的代码段c,当受保护软件在计算机上的S系统运行完毕代码段a后,运行f (χ)调用S系统中的虚拟机的代码段b,代码段b在虚拟机中运行完毕后,将结果返回至S系统中的受保护软件,然后受保护软件在计算机上的S系统中再运行代码段c、d。需要强调的是,本专利技术所述的虚拟机和VMWare,QEMU等虚拟机不同,本专利技术所述的虚拟机是指一组指令集和执行此指令集所需的运行环境,而并不需要对应某种真实机器,类似于自定义指令集的高级语言虚拟机,下文中称为安全虚拟机。此安全虚拟机为软件保护目的而设计,可以嵌入到受保护软件中运行,且安全虚拟机的指令集和运行机制等技术细节完全不公开,从而使安全虚拟机指令的跟踪和分析难度明显提高,这样运行在安全虚拟机中的代码就得到了保护。由于此安全虚拟机和受保护软件运行在相同的平台中,不会遇到类似加密锁保护技术那样的性能和资源瓶颈,因此可以从受保护软件中选择的代码范围和运行效率大大增加。然而,上述两种软件保护方法均存在一些缺陷,详细论述如下对于基于加密锁的软件保护方法来说,在选择足够复杂的代码的情况下,其能实现的保护强度显然是最高的,但在实际应用中,由于受限于加密锁的硬件性能和可用资源等原因,在很多保护方案中,受保护软件中最终可以移植到加密锁中的代码是有限的,也就是说,这种情况下,被移植代码的复杂度有可能达不到要求,破解者通过跟踪、分析受保护软件和加密锁之间交互的规律,有可能还原出被移植代码的功能,从而实现破解。对于基于虚拟机的软件保护方法来说,由于虚拟机技术其自身由软件实现,且运行在和受保护软件相同的平台中,并不能摆脱破解者的跟踪和分析,一旦破解者分析出安全虚拟机的指令集和运行特征,仍然可以如同普通的软件破解一样,对安全虚拟机中运行的指令进行跟踪和分析,还原出安全虚拟机中运行的代码的功能,甚至可以对安全虚拟机中运行的代码直接进行篡改,从而实现破解。综上,现有技术中基于加密锁和安全虚拟机的保护技术各有缺陷,都不能完全满高强度的软件保护需求。
技术实现思路
有鉴于此,本专利技术提供一种软件保护方法和装置,能够提高软件保护强度。为实现上述专利技术目的,本专利技术的技术方案是这样实现的一种软件保护方法,该方法用于对受保护软件进行保护,所述受保护软件包括依次按照执行顺序排列的代码段1、2. ..N, N为正整数,所述受保护软件运行于软件平台,在所述软件平台中设置安全虚拟机,所述加密锁还与软件平台连接,该方法包括将N个代码段中的多个代码段作为第一被移植代码,将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,将所述第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中。将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,且将所述第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中之后,该方法进一步包括受保护软件依次执行N个代码段,其中,若欲执行的代码段为第一被移植代码时, 受保护软件调用安全虚拟机执行所第一被移植代码,安全虚拟机执行完毕后将执行结果返回至受保护软件,当安全虚拟机执行所述第一被移植代码时,若欲执行的代码段为第一被移植代码中的第二被移植代码时,安全虚拟机调用加密锁执行所述第二被移植代码,加密锁执行完毕后将执行结果返回至安全虚拟机。该方法进一步包括预先将安全虚拟机本身的实现代码中的一部分代码移植至加密锁中。一种软件保护装置,该装置用于对受保护软件进行保护,所述受保护软件包括依次按照执行顺序排列的代码段1、2. ..N, N为正整数,该装置包括软件平台和加密锁,所述软件平台包括安全虚拟机单元、执行单元、移植单元和接口单元;其中,所述执行单元,用于存储受保护软件;所述移植单元,将N个代码段中的多个代码段作为第一被移植代码,将第一被移植代码通过接口单元移植至安全虚拟机单元中,将所述第一被移植代码中的一个或多个代码段作为第二被移植代码通过接口单元移植至加密锁中;所述安全虚拟机单元,用于接收所述第一被移植代码,将其转化为自身的指令;所述加密锁,用于接收所述第二被移植代码,将其转化为自身的指令。所述执行单元,进一步用于控制受保护软件依次执行N个代码段,其中,若欲执行的代码段为第一被移植代码时,执行单元通过接口单元调用安全虚拟机单元执行所第一被移植代码,安全虚拟机单元执行完毕后通过接口单元将执行结果返回至执行单元,当安全虚拟机单元执行所本文档来自技高网
...

【技术保护点】
1.一种软件保护方法,该方法用于对受保护软件进行保护,所述受保护软件包括依次按照执行顺序排列的代码段1、2...N,N为正整数,所述受保护软件运行于软件平台,其特征在于,在所述软件平台中设置安全虚拟机,所述加密锁还与软件平台连接,该方法包括:将N个代码段中的多个代码段作为第一被移植代码,将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,将所述第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中。

【技术特征摘要】
1.一种软件保护方法,该方法用于对受保护软件进行保护,所述受保护软件包括依次按照执行顺序排列的代码段1、2. ..N, N为正整数,所述受保护软件运行于软件平台,其特征在于,在所述软件平台中设置安全虚拟机,所述加密锁还与软件平台连接,该方法包括将N个代码段中的多个代码段作为第一被移植代码,将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,将所述第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中。2.根据权利要求1所述的方法,其特征在于,将第一被移植代码转化为安全虚拟机的指令并移植至安全虚拟机中,且将所述第一被移植代码中的一个或多个代码段作为第二被移植代码,将第二被移植代码转化为加密锁的指令并移植至加密锁中之后,该方法进一步包括受保护软件依次执行N个代码段,其中,若欲执行的代码段为第一被移植代码时,受保护软件调用安全虚拟机执行所第一被移植代码,安全虚拟机执行完毕后将执行结果返回至受保护软件,当安全虚拟机执行所述第一被移植代码时,若欲执行的代码段为第一被移植代码中的第二被移植代码时,安全虚拟机调用加密锁执行所述第二被移植代码,加密锁执行完毕后将执行结果返回至安全虚拟机。3.根据权利要求1或2所述的方法,其特征在于,该方法进一步包括预先将安全虚拟机本...

【专利技术属性】
技术研发人员:孙吉平韩勇
申请(专利权)人:北京深思洛克软件技术股份有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1