基于虚拟机的软件保护方法技术

技术编号:2828952 阅读:257 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于虚拟机的软件保护方法,包括步骤:定义用于编写隐藏组件的高级程序设计语言;定义虚拟机规范;实现高级程序设计语言到虚拟机专有指令集的编译器;实现以解释器作为执行引擎的虚拟机;将软件分割为公开组件和隐藏组件;在公开组件中添加提取用户计算机硬件ID信息模块;将上述步骤得到的虚拟机和公开组件的源代码编译为可执行文件;用高级程序设计语言重新实现隐藏组件,并将其编译为虚拟机代码,作为单独的隐藏组件文件。本发明专利技术构造的安全运行环境的性能高,公开与隐藏组件间的响应延迟小,极大改善了用户体验。本发明专利技术为软件开发商提供了一条有效防止软件盗版的途径,使在线发布软件成为现实,软件成本极大降低。

【技术实现步骤摘要】

本专利技术涉及一种软件保护方法,具体地说,是涉及一种将软件分割为公开组件 和隐藏组件,并将隐藏组件通过一定的编译规则装载到虚拟机中运行,以此来保护 软件的方法。
技术介绍
盗版给软件产业带来了巨大的损失。以2004年为例,全球一年非法安装的软件 总值达到了310亿美元。由于软件的盗版,软件企业的研发投入资金不能得到充分 回收,整个软件业的发展变得萎縮或畸形。软件盗版是一个全球性问题,它严重影 响了整个软件业的健康发展,可见,软件保护技术研究有着重大的现实意义。目前,最能有效抑制软件盗版的措施是通过使用技术手段来增加盗版软件的难 度和成本。基于分割软件的软件保护是一种有效的软件保护方法,其在软件专有算 法保护和软件拷贝保护领域有着重要的应用。 一般,基于分割软件的软件保护是将 软件分割为公开组件和隐藏组件两部分。公开组件安装在不可信的用户的计算机上, 隐藏组件安装在安全的机器或设备上。隐藏组件所完成的功能是软件不可或缺的部 分,公开组件必须通过与隐藏组件交互才能完成软件功能,即如果离开隐藏组件, 公开组件便不能正常运行软件。而安装在安全的机器或设备上的隐藏组件是难于物 理复制的,且隐藏组件的代码也是无法获得的,所以盗版者只能偷走公开组件(如 复制),而得不到隐藏组件,这样便很好地防止了软件的盗版。目前,公知的用于存储和运行隐藏组件的安全运行环境主要有两种 一种是软 件开发商完全控制的Internet服务器,另 一种是含有安全智能卡芯片的软件锁 (Dongle)。对于第一种安全运行环境,运行在用户计算机上的公开组件只能以事先规定好 的完全受控方式,通过网络与运行在Internet服务器上的隐藏组件进行交互。其缺点 是网络同步通信速度慢,频繁的延迟会造成较差的用户体验。近年,提出了一种虚拟束缚技术(Virtual Leashing)。若软件使用了该技术,则 为软件的公开组件分配的存储是由隐藏组件来决定如何释放的。由于存储的释放是 不需要严格同步的,所以公开组件与隐藏组件间的通信实现了异步。可见,虚拟束 缚技术作为一种不阻塞的软件分割技术,在一定程度上解决了网络延迟的问题,但 是由于自身技术特点,其不能适用于采用自动存储回收机制语言(如Java、 0#等) 编写的应用软件。而且,软件的可用性依赖于Internet服务器中的隐藏组件的运行, 也就是软件的可用性依赖于网络的可用性。因此,由于网络的限制,使得该种环境的使用受到了极大的限制。对于第二种安全运行环境,软件锁中含有具有一定存储和计算能力的安全智能 卡芯片,软件的隐藏组件存储并运行在软件锁中。运行在用户计算机中的软件公开 组件只能通过预定义的接口来调用软件锁中对用户隐藏的隐藏组件。 一般,正版软 件在发布时配送软件锁。盗版者由于无法复制软件锁,也无法获得软件锁中的隐藏 组件代码,因此,离开隐藏组件而单纯地复制软件公开组件是无法正常运行软件的, 软件锁很好地解决了软件盗版的问题。然而,每发布一个软件拷贝,软件公司都需 要随软件拷贝赠送一个配套的软件锁。因此,对于大量发行的软件,发布成本会显 著增加,而且,由于软件锁的存在,软件的在线发布受到限制。另外,相对于目前 的计算机而言,软件锁中安全智能卡芯片的存储和计算能力都非常弱,这也就造成 了软件的整体运行性能低、用户体验差的缺陷,且无法实现在软件锁中运行复杂算 法。而若在软件锁中对隐藏组件使用简单算法,则又会使得攻击者易猜测到算法的 功能,这样便很大地降低了软件的安全性。
技术实现思路
本专利技术的目的在于提供一种,该方法为软件构造了 一种基于虚拟机的纯软件的安全运行环境,使软件受到了有效保护,维护了软件开 发商的知识产权。为实现上述目的,本专利技术釆用了以下技术方案 一种,其特征在于它包括如下步骤A. 定义一用于编写隐藏组件的高级程序设计语言HCPL;B. 定义虚拟机规范,该规范包括非公开的虚拟机专有指令集和虚拟机文件格式;C. 实现高级程序设计语言HCPL到虚拟机专有指令集的编译器;D. 实现以解释器作为执行引擎的虚拟机;E. 将软件分割为公开组件和隐藏组件两部分;F. 在公开组件中添加提取用户计算机硬件ID信息模块,以用于在安装软件、 运行该模块后提取用户计算机硬件ID信息而生成用户可识别的注册码;G. 将步骤D得到的虚拟机和步骤F得到的公开组件的源代码编译为可执行文件;H. 使用高级程序设计语言HCPL重新实现隐藏组件,将重新实现的隐藏组件使 用编译器编译为虚拟机代码,而作为一单独的隐藏组件文件。之后还包括步骤a. 在计算机中安装所述可执行文件;b. 运行所述公开组件中的提取用户计算机硬件ID信息模块,该模块将提取的计算机硬件ID信息转换为软件注册码;C.用户将该注册码提供给软件开发商;d. 若该注册码合法,则软件开发商将用户提供的注册码生成为软件使用许可证, 将该许可证添加到所述隐藏组件文件中,然后将该隐藏组件文件反馈给用户,进行 下一步骤,若该注册码非法,则软件开发商不进行隐藏组件文件的反馈,步骤中断;e. 在计算机中装入软件开发商反馈的隐藏组件文件;f. 所述虚拟机的装载器将隐藏组件的代码从隐藏组件文件中装载到所述虚拟机中;g. 用户开始使用软件。 本专利技术的优点是1、 由于本专利技术不采用即时编译技术,所以隐藏组件的代码永远不会被编译成本 地代码,这样便可防止攻击者通过公开指令集的反汇编工具来分析隐藏组件的代码。 将软件分割后的隐藏组件是在一个专有指令集的虚拟机上运行的。由于攻击者不知 道指令集的定义和编码方式,所以即使得到隐藏组件的代码,也无法分析和理解其 语义。攻击者为了能够理解隐藏组件代码的含义,就不得不通过逆向工程的手段分 析整个虚拟机的代码。而虚拟机是一个复杂的系统,在没有源代码和相关文档资料 的条件下,通过逆向工程的手段去分析一个虚拟机是一个工程难题。而且,在本发 明中,为了更好地防止软件的盗版,向虚拟机中插入了数目众多的用于其自身完整 性校验的代码段,众多校验点构成一个网络,各个校验点间形成多重相互保护,使 虚拟机具有了更强的防非法篡改功能,给试图篡改软件的攻击者造成了极大的困难。2、 在使用软件的过程中,公开组件向虚拟机发出调用隐藏组件的指令后,运行 隐藏组件代码而获取的实际计算机硬件ID信息会与许可证中授权运行软件的计算机 硬件ID信息进行比较,这样便可有效地防止软件在未经授权的计算机上使用。3、 在保护不同的软件产品时,只需要改变本专利技术中的编译器后端、虚拟机的装载器和解释器等几个重要模块即可,通用性强。4、 在性能上,基于虚拟机的隐藏组件安全运行环境比传统技术构造的安全运行环境有了大幅地提高。对于交互式应用,这种提高更为明显。公开组件与隐藏组件 间的响应延迟会因虚拟机的采用而明显降低,极大地改善和提升了用户体验。性能 的改善也使得可以在隐藏组件中使用更复杂的算法,从而降低了受黑盒子攻击的风 险,提高了安全性。5、 本专利技术为软件开发商提供了一条有效防止软件盗版的途径,使在线发布软件 成为现实,软件成本极大降低。附图说明图1是本专利技术软件保护方法的实现流程图2是设定校验器和构造校验区间的一个实例;图3是为校验器选择校验区间而形成强连通校验关系图的一个实例;图4是使用软件时的本专利技术实施软件本文档来自技高网
...

【技术保护点】
一种基于虚拟机的软件保护方法,其特征在于它包括如下步骤:A.定义一用于编写隐藏组件的高级程序设计语言HCPL;B.定义虚拟机规范,该规范包括非公开的虚拟机专有指令集和虚拟机文件格式;C.实现高级程序设计语言HCPL到虚拟机专有指令集的编译器;D.实现以解释器作为执行引擎的虚拟机;E.将软件分割为公开组件和隐藏组件两部分;F.在公开组件中添加提取用户计算机硬件ID信息模块,以用于在安装软件、运行该模块后提取用户计算机硬件ID信息而生成用户可识别的注册码;G.将步骤D得到的虚拟机和步骤F得到的公开组件的源代码编译为可执行文件;H.使用高级程序设计语言HCPL重新实现隐藏组件,将重新实现的隐藏组件使用编译器编译为虚拟机代码,而作为一单独的隐藏组件文件。

【技术特征摘要】
1、一种基于虚拟机的软件保护方法,其特征在于它包括如下步骤A.定义一用于编写隐藏组件的高级程序设计语言HCPL;B.定义虚拟机规范,该规范包括非公开的虚拟机专有指令集和虚拟机文件格式;C.实现高级程序设计语言HCPL到虚拟机专有指令集的编译器;D.实现以解释器作为执行引擎的虚拟机;E.将软件分割为公开组件和隐藏组件两部分;F.在公开组件中添加提取用户计算机硬件ID信息模块,以用于在安装软件、运行该模块后提取用户计算机硬件ID信息而生成用户可识别的注册码;G.将步骤D得到的虚拟机和步骤F得到的公开组件的源代码编译为可执行文件;H.使用高级程序设计语言HCPL重新实现隐藏组件,将重新实现的隐藏组件使用编译器编译为虚拟机代码,而作为一单独的隐藏组件文件。2、 根据权利要求1所述的基于虚拟机的软件保护方法,其特征在于 所述步骤D中,将校验器模板以汇编语言的形式植入所述虚拟机的源代码中,以使所述虚拟机具有防非法篡改功能。3、 根据权利要求2所述的基于虚拟机的软件保护方法,其特征在于植入所述校验器模板后,还包括步骤1) 设定校验器和构造校验区间;2) 为校验器选择校验区间;3) 为每一校验区间计算配平值。4、 根据权利要求3所述的基于虚拟机的软件保护方法,其特征在于 所述步骤l)中,设定校验器和构造校验区间具体为设防篡改区间为I[s,e],取位于区间/中的校验器n个,按照其地址由小到大分 别记为c,,C2,…,c;,取位于区间/外的高地址区域的校验器m-l个,按照其地址 由小到大分别记为Cn+1,Cn+2,...,Cn+Mm-1 ,构造n+ m —2个校验区间 I1,[s1,e1],I≤i≤n+ m —2,对于I≤I≤m-1,随丰几选择s,,e,,并使得寻s,. <s,C, <e, <C,+1, 对于I≤i≤m-1,随机选择si, e1,并使得C,_m+1, < si < C,—m+2,C, < ei < C,+1 。5、 根据权利要求3所述的基...

【专利技术属性】
技术研发人员:刘志成周伯生孙奎英
申请(专利权)人:北京赛柏科技有限责任公司
类型:发明
国别省市:11[]

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

1
相关领域技术
  • 暂无相关专利