一种软件保护的方法技术

技术编号:2838310 阅读:144 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种软件保护的方法,将被保护软件的部分代码编译成加密锁处理器可以识别的形式后移植到加密锁中,在目标平台上运行被保护软件时,该方法包括:A.在需要执行被移植代码时,触发加密锁执行被移植代码;B.加密锁处理器执行被移植代码,并将被移植代码的执行结果返回给目标平台。采用本发明专利技术所提供的技术方案,被移植代码是以能够被加密锁的处理器识别的形式存储在加密锁的存储区中的,在运行时直接运行在加密锁的处理器上,这样就大大提高了加密锁执行被移植的软件代码的速度,从而使得可以将更多的软件代码移植到加密锁中,进而加大了加密锁对软件的保护力度。

【技术实现步骤摘要】

本专利技术涉及软件保护技术,特别是涉及一种利用软件加密锁对软件进行保护的方法。
技术介绍
在与硬件结合的软件保护技术中,为了提高软件保护的力度,可以将要保护软件的关键代码移植到独立于软件目标平台的加密锁中。所谓加密锁,是一种有一定处理能力的硬件系统,可以和软件目标平台通过接口相连。软件在目标平台上运行的过程中,需要执行关键代码时,由目标平台向加密锁发送调用参数,加密锁根据调用参数,在加密锁内部执行关键代码进行处理,然后将处理结果返回给目标平台。这样,必须同时拥有正确的加密锁硬件,才能在目标平台上运行软件,从而实现了对软件的保护。现有技术在实现这种保护方案的时候,通常采用虚拟机机制。虚拟机机制为移植到加密锁中的软件代码提供一个虚拟的标准化的平台,这个平台就是虚拟机,虚拟机还负责加密锁内部资源的调度。采用虚拟机机制,可以从代码角度保证被保护软件的关键代码的安全性。也就是说,被移植到加密锁中的被保护软件的关键代码,是无法通过编写特定的代码从加密锁中读出的。但是,在虚拟机机制下,移植到加密锁中的软件代码在执行的时候,需要先由虚拟机转化成加密锁的处理器能够识别的形式,然后再由加密锁的处理器执行,这样就会降低加密锁的处理速度。相对于目标平台而言,加密锁的处理能力本来就很弱;虚拟机机制的采用,更使得在不对软件的运行速度造成太大影响的前提下,只能将少量的软件代码移植到加密锁中。而从软件保护的角度来说,移植到加密锁中的代码越多,保护的力度才越大。因此,现有技术的缺点是,虚拟机机制的采用,限制了加密锁处理软件代码的速度,限制了所能移植到加密锁中的软件代码量,从而导致加密锁对软件的保护力度不能进一步提高;而如果不采用虚拟机机制,又无法保证移植到加密锁中的软件代码的安全性。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供,以在保证移植到加密锁中的软件代码的安全性的前提下,提高在加密锁中运行软件代码的速度,使得可以将更多的代码移植到加密锁中运行,从而进一步提高软件保护的力度。为了达到上述目的,本专利技术提供了,将被保护软件的部分代码编译成加密锁处理器可以识别的形式后移植到加密锁中,在目标平台上运行被保护软件时,该方法包括A、在需要执行被移植代码时,触发加密锁执行被移植代码;B、加密锁处理器执行被移植代码,并将被移植代码的执行结果返回给目标平台。其中,将加密锁的存储区分为系统存储区和用户存储区,在所述将被保护软件的部分代码编译成加密锁处理器可以识别的形式后移植到加密锁之前,该方法进一步包括将负责加密锁内部资源调度的系统代码存储在系统存储区,并且运行系统代码;所述将被保护软件的部分代码编译成加密锁处理器可以识别的形式后移植到加密锁中为将被保护软件的部分代码编译成加密锁处理器可以识别的形式后,移植到加密锁中的用户存储区;在目标平台上运行被保护软件时,在步骤A之前,该方法进一步包括运行系统代码。其中,步骤A所述触发加密锁执行被移植代码为目标平台向加密锁发出执行被移植代码的指令,并且给出执行被移植代码所需要的参数。其中,步骤B在所述加密锁处理器执行被移植代码之前进一步包括B11、系统代码计算出用户代码所在的存储地址;B12、系统代码中断自身的运行,并跳转到用户代码所在的存储地址;步骤B在所述加密锁处理器执行被移植代码,和将被移植代码的执行结果返回给目标平台之间进一步包括B13、用户代码向系统代码返回运行结果,并且结束自身的运行。其中,在加密锁内部设置虚拟存储区,步骤B在所述触发加密锁处理器执行被移植代码包括B21、系统代码计算出用户代码所在的存储地址;B22、将用户代码所在的存储地址映射到虚拟存储区;B23、系统代码中断自身的运行,并跳转到虚拟存储区;步骤B在所述加密锁处理器执行被移植代码,和将被移植代码的执行结果返回给目标平台之间进一步包括B24、用户代码向系统代码返回运行结果,并且结束自身的运行。其中,在加密锁处理器执行被移植代码之前,该方法进一步包括加密锁处理器确定将要执行的代码位于用户存储区,将加密锁的部分资源设置为不能被将要执行的代码访问;在加密锁处理器执行被移植代码之后,该方法进一步包括加密锁处理器确定将要执行的代码位于系统存储区,将设置为不可访问的资源恢复为可以被将要执行的代码访问。其中,在加密锁处理器执行被移植代码之前,该方法进一步包括系统代码设置加密锁的部分资源不能被将要执行的代码访问;在加密锁处理器执行被移植代码之后,该方法进一步包括系统代码将被设置为不可访问的资源恢复为可以被将要执行的代码访问。其中,为加密锁处理器设置用以指示处理器运行在系统模式还是用户模式的标志位,在加密锁处理器执行被移植代码之前,该方法进一步包括系统代码修改加密锁处理器的标志位为用户模式;在加密锁处理器执行被移植代码之后,该方法进一步包括系统代码修改加密锁处理器的标志位为系统模式。采用本专利技术所提供的技术方案,将运行在加密锁中的代码分为两部分,一部分作为系统级代码,负责加密锁的初始化以及加密锁内部资源的调度;另一部分作为用户级代码,负责对外提供服务,也就是被移植到加密锁中的要保护软件的关键代码。系统级代码是固化在加密锁中的,而由用户下载的代码只能作为用户级代码运行。系统级代码可以根据安全需要,限制用户级代码所能访问的资源,例如,令某个用户级代码段不能访问系统存储区和其他用户级代码段所在的用户存储区。这样就可以防止通过让加密锁执行特定用户代码的方式,来读出移植到加密锁中的软件代码,从而保证了安全性。而无论是系统级代码还是用户级代码,都是以能够被加密锁的处理器识别的形式存储在加密锁的存储区中的,在运行时直接运行在加密锁的处理器上,而无需经过虚拟机的转换。这样就大大提高了加密锁执行被移植的软件代码的速度,从而使得可以将更多的软件代码移植到加密锁中,进而加大了加密锁对于软件的保护力度。附图说明图1是本专利技术提供的软件保护方法中下载代码时的流程图;图2是本专利技术提供的软件保护方法中使用软件时实施例一的流程图;图3是本专利技术提供的软件保护方法中使用软件时实施例二的流程图。具体实施例方式本专利技术的核心思想在于将运行在加密锁内部的代码分为系统级和用户级两部分,负责加密锁的初始化以及加密锁内部资源的调度的代码运行在系统级;移植到加密锁中的要保护软件代码运行在用户级。无论是系统级代码还是用户级代码都直接运行在加密锁的处理器上。为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本专利技术作进一步地详细描述。请参考图1,图1是本专利技术提供的软件保护方法中下载代码的流程图,在下载代码时本方法包括步骤101将加密锁的代码存储器划分为系统存储区和用户存储区。这里所说的系统存储区和用户存储区,可以是位于不同的物理存储器上,也可以是位于同一个物理存储器的不同存储区。步骤102将系统代码存储在系统存储区。将加密锁内的代码分为系统代码和用户代码的目的在于增强加密锁的安全性。系统代码可以自由访问加密锁内部的所有硬件资源,而用户代码只能访问系统代码允许其访问的资源。步骤103运行系统代码。在系统代码启动以后,就由系统代码负责加密锁与外界的通信,以及加密锁内部资源的调度。步骤104将希望移植到加密锁中的软件代码编译成加密锁的处理器可以识别的形式。由于软件代码是为目标平台开发的,本文档来自技高网
...

【技术保护点】
一种软件保护的方法,其特征在于,将被保护软件的部分代码编译成加密锁处理器可以识别的形式后移植到加密锁中,在目标平台上运行被保护软件时,该方法包括:A、在需要执行被移植代码时,触发加密锁执行被移植代码;B、加密锁处理器执行被移 植代码,并将被移植代码的执行结果返回给目标平台。

【技术特征摘要】

【专利技术属性】
技术研发人员:念龙龙孙吉平殷广英黄剑
申请(专利权)人:北京深思洛克数据保护中心
类型:发明
国别省市:11[中国|北京]

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

1