基于虚拟机的软件保护研究与设计探讨

时间:2022-06-11 04:54:37

【前言】基于虚拟机的软件保护研究与设计探讨由文秘帮小编整理而成,但愿对你的学习工作带来帮助。在现阶段技术条件支持下,按照功能进行划分,可以将软件保护技术划分为两种类型:(1)以防止未经授权非法使用为目的的软件保护技术;(2)以防止非法篡改、或者重利用为目的的软件保护技术。其中,前者主要建立在登陆密码、或者是序列号的前提下所实现,而后者则主要...

基于虚拟机的软件保护研究与设计探讨

摘 要:本文以基于虚拟机软件保护研究对象,首先针对基于虚拟机的软件保护基本工作原理进行了简要分析,进而分别从虚拟机编译器设计方案、代码混淆技术设计方案这两个方面入手,针对基于虚拟机的软件保护设计方案加以了详细分析与阐述,上述问题旨在于引起各方特别关注与重视。

关键词:虚拟机 软件保护 工作原理 设计方案 分析

中图分类号:TP309 文献标识码:A 文章编号:1672-3791(2013)05(a)-0002-02

软件产品有着极为突出的技术密集型特征。在软件产品的开发过程当中,往往需要消耗大量的人力及物力,可以说,软件产品的开发与生成是一个极为复杂的过程。然而,软件产品在生成之后,却极容易被复制。正是由于这一特点,使得软件产品市场面临着极为猖獗的盗版影响。从这一角度上来说,如何实现对软件的有效保护,这一问题备受各方人员的特别关注与重视。特别是对于本文所研究的建立在虚拟机基础之上的软件保护而言,设计过程当中需要重点关注对包括虚拟机编译器的设计方案、以及代码混淆技术的应用,以保障其应用质量的有效性。本文试针对以上相关问题做详细分析与说明。

1 基于虚拟机的软件保护工作原理分析

在现阶段技术条件支持下,按照功能进行划分,可以将软件保护技术划分为两种类型:(1)以防止未经授权非法使用为目的的软件保护技术;(2)以防止非法篡改、或者重利用为目的的软件保护技术。其中,前者主要建立在登陆密码、或者是序列号的前提下所实现,而后者则主要是建立在虚拟机基础之上所实现。虚拟机从本质上来说属于存储程序计算机,常规运行状态下主要涉及到的取指指令、解码指令、执行指令这几个方面。具体的操作方式在于:将软件程序当中的某一特定部分重新编译成为仅能够为自定义虚拟机所识别与读取的代码,将这部分代码的执行指令交由虚拟机,以此种方式防止代码执行出现逆向运算的问题。

在的那个钱技术条件支持下,一个完整的虚拟机主要由以下几个部分所构成:(1)虚拟CPU处理环境;(2)虚拟机编译器;(3)虚拟机解释器;(4)虚拟机指令系统。在上述部分的共同作用之下,虚拟机主要实现的技术包括以下几类:(1)硬件层:主要应用对整个操作系统的执行,例如VM Ware一类;(2)硬件/软件层:主要应用于对特定部分操作的执行,例如杀毒软件一类;(3)汇编代码层:主要在对特定部分操作指令进行执行的过程当中,实现对程序代码的有效保护。结合上述分析不难发现:基于对虚拟机软件保护基本工作原理的分析,在有关虚拟机软件保护的技术的研究过程当中,需要建立在基本保护思想的基础之上,突出虚拟机编译器设计以及代码混淆技术设计的重要性。

2 基于虚拟机的软件保护思想分析

基于虚拟机的软件保护思想的核心在于:通过设定独立运行指令系统的方式,将现实生活中不存在的计算机汇编器以及调试器设备构造出来,使其能够完成对重要代码的编写作业。具体的软件保护设计框架结构示意图(见图1)。按照这一流程来说,在应用虚拟机进行软件保护的过程当中,首先需要通过编译的方式,将源程序转化成为适宜于本地虚拟机的机器指令,结合预先设定的保护对象,选取相应的保护代码,并将其传输至虚拟机当中,经过编译器的指令转换处理,再在虚拟解释器当中嵌入相应的代码,最终输出程序。整个基于虚拟机软件保护的优势在于:能够对保护壳中绝大部分重要代码进行编写作业,且最大限度的避免保护注册算法出现逆向问题,提高软件保护的安全性。

3 基于虚拟机的软件保护关键问题分析

3.1 虚拟机编译器的设计方案分析

按照工作运行状态的差异性来划分,虚拟机主要可以分为(1)基于寄存器的虚拟机、以及(2)基于堆栈的虚拟机这两种类型。这两者之间在工作运行状态上的差异性主要受到其提供指令集体系结构的差异性。结合软件保护的基本要求来看,现阶段,在众多的软件保护环境当中,以Windows操作系统的应用最为普遍。该操作系统环境下所应用的指令集体系结构均表现为X86结构。此种架构设计模式不但能够显著控制编码的复杂程度,从而防止编译器运行过程中过函数因出现跳转偏移问题而需要进行的修复工作,同时还能够实现对整个虚拟机模拟功能的完善,确保其对各种异常运行问题的处理。按照此种方式来说,对于虚拟机编译器的设计仅需要建立在X86结构指令的基础之上完成即可。

3.2 虚拟机代码混淆技术设计方案分析

通过对代码混淆技术的合理应用,能够使基于虚拟机的软件保护性能得到显著的增强与完善,其中所涉及到的主要内容包括:(1)代码乱序;(2)代码替换。其中,前者能够使软件保护行为实施过程当中所对应的逆向工程难度增大,确保虚拟机壳能够重新获取相对于软件保护程序的控制权;而后者则能够实现对软件内存部分的有效保护。在诸多的代码混淆技术当中,又以花指令技术的应用作为频繁。在虚拟机代码混淆技术的设计过程当中,可行的方案包括以下两个方面:第一,在功能条件保持恒定的状态下,针对下一程序A进行转换,转化后的所得程序为A’,而A’可实现A程序所有的功能,但在安全性方向,A’>A。借助于此种方式,实现整个基于虚拟机软件保护系统对逆向工程的对抗;第二,在程序代码当中预制包括方程求解代码、以及矩阵生成代码在内的数据。在软件保护的过程当中,将这部分预制代码作为花指令下的随机生成代码,干扰并混淆破解人员的事先,在不影响源代码功能的前提下,提高破解难度与时间。

4 结语

通过本文以上分析需要认识到:在现代意义上的计算机安全研究领域当中,虚拟机技术的研究与应用备受各方关注与重视。因此,针对虚拟机实际运行情况,引入软件保护概念,这一问题是至关重要的。总而言之,本文针对有关基于虚拟机的软件保护研究与设计过程中所涉及到的相关问题做出了简要分析与说明,希望能够为今后相关研究与实践工作的开展提供一定的参考与帮助。

参考文献

[1] 陈彬,肖侬,蔡志平,等.基于优化的COW虚拟块设备的虚拟机按需部署机制[J].计算机学报,2009,32(10):1915-1926.

[2] 钮艳,郑衍松,杨春,等.GOSBMB:基于客户操作系统行为的虚拟机内存均衡方法[J].电子学报,2011,39(9):2178-2183.

[3] 庄威,桂小林,林建材,等.云环境下基于多属性层次分析的虚拟机部署与调度策略[J].西安交通大学学报,2013,47(2):28-32,130.

[4] 敖琪,蔡嵩松,王剑,等.基于硬件cache锁机制的Java虚拟机即时编译器优化[J].计算机研究与发展,2012,49(z1):185-190.

[5] 任怡,刘晓建,管剑波,等.一种支持在线迁移的虚拟机间快速通信方法[J].理工大学学报:自然科学版,2012,13(5):511-515.

上一篇:开放式实验室管理系统设计与开发 下一篇:虚拟私有网络在企业中的应用