论文部分内容阅读
随着互联网的迅速发展和信息化技术的深入,面向各个应用领域或行业需求的软件得到了广泛的应用,大大提高了我们的工作生活效率和质量。计算机软件产业在迎来巨大发展机遇的同时也面临着诸多挑战,大量的软件破解和软件盗版行为使软件开发者的利益受到了严重侵害,如何有效的保护软件的核心算法和机密数据成为困扰软件开发商的重要问题。 目前传统的软件保护方法主要有基于硬件和基于软件的保护方法,但随着软件逆向工程的发展,诸多的软件保护方法并不能真正有效的进行软件保护。软件保护的意义在于增加非法复制软件和破解软件的技术难度,增加其所消耗的时间,当破解软件所花费的代价超过购买软件的代价,那么实际上起到了软件保护的效果。基于虚拟机的软件保护技术是将被保护软件中的核心代码转换成虚拟机解释执行的虚拟机字节码,并将字节码进行多样化处理,加强了软件保护的强度,提高了受保护软件的易用性,从而有效的对软件进行保护。 本文以软件逆向工程为切入点,从攻击者的角度研究了软件分析方法,讨论了软件安全测试模型,展开分析了现有的软件保护技术;基于虚拟化的思想以及壳保护和虚拟机的关系,提出了基于虚拟机的软件保护模型;研究了软件保护虚拟机的整体设计,包括虚拟机的整体架构和虚拟机的工作流程,研究了虚拟机指令集、虚拟机编译器和虚拟机解释器的设计,设计了一种随机字节码生成算法,提出了一种的基于虚拟机的软件保护模型SRVM32(SecureRegister-base32bitsVirtualMachine);进而,设计并实现了基于SRVM32模型的软件保护系统VMPacker,本文给出了VMPacker系统的整体架构和工作流程,详细描述了各个模块的设计和实现,描述了随机字节码生成算法的实现过程。最后,通过实验结果分析了系统的保护强度。 本文提出的基于虚拟机的软件保护模型,具有较强的扩展性,可以融合反调试、代码变形、代码混淆和软件水印等技术,可提供一个综合的软件保护解决方案。