基于增强型虚拟机的软件保护技术*.docx

基于增强型虚拟机的软件保护技术*.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? 基于增强型虚拟机的软件保护技术* ? ? 吴伟民,许文锋,林志毅,司 斯,阮奕邦 (广东工业大学计算机学院,广东 广州 510006) 基于增强型虚拟机的软件保护技术* 吴伟民,许文锋,林志毅,司 斯,阮奕邦 (广东工业大学计算机学院,广东 广州 510006) 针对目前日益严峻的软件保护问题,对现有基于虚拟机的软件保护技术进行分析与研究,对虚拟机保护技术进行了改进,设计了一种增强型虚拟机软件保护技术。采用了虚拟花指令序列与虚拟指令模糊变换技术,并对虚拟机的虚拟指令系统做了改进,从而提高了虚拟机执行的复杂程度与迷惑程度,具有高强度的反逆向、防篡改、防破解的特点。实验分析表明,增强型虚拟机保护技术明显优于普通型虚拟机保护技术。 虚拟机;软件保护;虚拟花指令;模糊变换 1 引言 计算机软件是一种知识密集型的数字产品,软件的研发非常复杂,研制及维护周期很长,需要耗费大量的人力物力资源,是软件开发人员辛勤劳动的成果。但是,大量软件破解行为使得商业软件和共享软件作者的利益受到严重侵害,他们的生存和发展将会受到严重影响。因此,软件保护技术的研究与实现是目前软件产业发展的重中之重。 为了保护软件,人们提出了一系列的软件保护技术,如序列号保护方式、授权文件保护、代码混淆、加壳、软件数字水印等[1],虽然这些技术取得了一定的成效,但是这些方式的保护强度都不是很高。近年来,软件保护技术又出现了一个新的进步,那就是虚拟机技术,它通过对代码的虚拟化来达到保护软件的目的[2]。基于虚拟机的软件保护技术,它虚拟出一套自己设计的指令系统,用于将一系列指令放在一个解释引擎中执行。在该指令系统中,大部分常用的汇编指令都可以用虚拟机中的相应指令代替[3]。虽然虚拟机保护技术在反逆向、反破解方面优于其他保护技术,但是逆向工程师通过分析大量虚拟指令以及虚拟机执行过程,软件代码仍有被逆向还原的可能性[4]。为了增加代码保护强度、降低被逆向还原的可能性,本文提出了基于增强型虚拟机软件保护技术,这种新的软件保护技术融合了虚拟花指令序列和虚拟指令模糊变换技术,从保护虚拟机本身代码安全的角度出发,在最大程度上保护了软件代码。 2 虚拟机保护原理 在软件领域经常用到有关虚拟机的概念,比如VMWare,它是指虚拟出一个CPU运行整个操作系统,包含软件、硬件等各方面的虚拟化[3]。本文所指的虚拟机并不是像VMware那样的虚拟机,而更像是一个进程级的高级语言虚拟机。它拥有自定义独立的指令系统——虚拟指令系统,这种指令系统和Intel的x86指令系统并不在一个层次上。它还将我们所熟悉的x86汇编指令流转换为ByteCode(字节码),ByteCode是虚拟机解释执行被保护代码功能时所需的一串字节流。Java虚拟机、.Net或者其他脚本语言的虚拟机都是靠解析ByteCode来执行的,但它们之间的ByteCode并不通用,因为每一个虚拟机设计的ByteCode都是为自己使用的,并不兼容其他的虚拟机。利用虚拟机技术保护软件,用户可以选择软件中需保护代码块,把代码块反汇编成汇编指令流,然后用自定义的虚拟指令系统中的虚拟指令替换对应的汇编指令,在发布时,将整个虚拟机嵌入软件本身一起发布。在运行被保护代码时,由虚拟机解释执行ByteCode。 3 虚拟机软件保护流程 虚拟机保护对PE(Portable Execute)文件的处理流程如图1所示。PE文件格式是WIN32环境自带的跨平台可执行文件格式,常见的EXE、DLL、OCX、SYS、COM 等文件均是PE文件[5]。 虚拟机保护系统首先从PE中提取需保护代码块,通常以函数为单位来提取,然后通过反汇编器反汇编成我们常见的x86汇编指令流,再把汇编指令流转换成ByteCode存储在PE文件中。转换之后,PE文件中被保护代码的正确运行需要虚拟机解释执行ByteCode,因此,整个虚拟机其实是内嵌在PE文件中的,它包括跳转表、虚拟指令调度器和虚拟指令系统。 Figure 1 Process of virtual machine software protection图1 虚拟机软件保护处理流程 3.1 提取需保护代码块 由于虚拟机是通过解释执行ByteCode来完成原始代码的功能,所以经过虚拟机保护后的PE文件会增大,被保护后的代码块运行效率会降低,因此,虚拟机保护只适用于保护PE文件中重要的代码块,而不是PE文件中的所有代码。提取方式通常以函数为单位,根据函数的起始地址与结束地址确定需保护代码块。 3.2 反汇编器 反汇编器将上一步提取的代码块反汇编成汇编指令流,比如,8B442404对应的汇编指令为mov eax,dword ptr[esp+4]。我们具体借助现有成熟的反汇编器来实现这一功能,将汇编语言作为中间语言,这样有利于快速

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档