当前位置: 首页 > 专利查询>西北大学专利>正文

一种具有指令集随机化的代码虚拟化软件保护系统技术方案

技术编号:12329898 阅读:513 留言:0更新日期:2015-11-16 00:41
本发明专利技术公开了一种具有指令集随机化的代码虚拟化软件保护系统,属于计算机软件安全领域。所述发明专利技术包括在该系统中构建虚拟指令集,将待保护程序中的关键代码进行反汇编得到本地指令序列,接着根据以构架的虚拟指令集将本地指令序列转换为第一虚拟指令,并将第一虚拟指令进行编码得到字节码指令,将字节码指令与生成的附属虚拟机组件组合为附加文件,将附加文件与待保护程序组合为第一文件,在对第一文件进行垃圾数据填充后得到最终的保护程序。本发明专利技术能够提高待保护程序的复杂性,延长了分析者对待保护程序的分析时间,从而增强了待保护程序的保护能力。

【技术实现步骤摘要】

本专利技术属于计算机软件安全领域,特别涉及一种具有指令集随机化的代码虚拟化软件保护系统
技术介绍
软件的广泛应用在为社会带来巨大利益的同时,关于软件安全的问题也变得日益突出,软件防恶意逆向成为急需解决的问题。当前软件攻击技术和逆向工具的发展方便了攻击者对软件逆向分析。另外,软件一般运行在“白盒攻击”环境当中,攻击者可以完全控制软件的执行过程,查看指令执行的序列。因此,只要给定攻击者足够的时间,应该能够成功逆向分析该软件。人在一定时间内处理信息量是有限的,如果攻击者在攻击时付出的代价超过他所获得的信息的价值或者分析过程的难度和复杂度可以导致攻击者放弃攻击,则采用的保护方法是有效的。因此软件保护的目的在于提高攻击者逆向分析的难度,增加攻击者的攻击开销。为了阻碍恶意的逆向工程和保护软件中的智力成果,产业界和学术界提出了多种软件保护技术,主要包括:①注入垃圾指令来阻止反汇编,②使用程序加壳技术压缩和加密关键代码和数据,③应用代码混淆技术使攻击者更难从代码中提取有用的语义信息,等等。针对二进制代码的保护方法不受编程语言的限制,相比源代码级别应用范围更广。然而这些保护技术也存在着缺点,因为,注入的垃圾指令在程序运行时不会执行,而加壳技术中压缩和加密的代码在程序运行的时候也需要在解压和解密之后才能执行。所以,垃圾指令注入和加壳技术只能阻止攻击者的静态分析(在程序没有运行的状态下分析),但是不能阻止攻击者的动态分析(当程序运行在调试或者仿真环境下时分析)。当前常用的分析工具有OllyDbg和IDAPro等。代码混淆的原理是让一个程序转化为功能上等价,但静态表示或执行过程不同的等价程序,主要是通过指令替换和顺序重排,改变程序的控制流,但是这些简单的指令压缩变换是容易被理解的。并且当前应用于二进制代码的混淆技术主要是通过花指令或垃圾指令进行保护,保护效果差,容易被发现和去除。
技术实现思路
为了解决现有技术的问题,本专利技术提供了一种具有指令集随机化的代码虚拟化软件保护系统,所述具有指令集随机化的代码虚拟化软件保护系统,包括:构建虚拟指令集;对所述待保护程序进行PE文件检测;在所述待保护程序中定位关键代码段;对所述关键代码段进行反汇编,得到本地指令序列;根据设计好的虚拟指令集将所述本地指令序列转换为第一虚拟指令;将所述第一虚拟指令按预设的编码规则进行编码,得到字节码指令;生成保护系统的附属虚拟机组件;将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文件与所述待保护程序构成第一文件,在所述第一文件中进行垃圾数据填充,获得保护后的程序。可选的,所述构建虚拟指令集,包括:确定待构建的虚拟指令;确定与所述虚拟指令对应的解释程序;其中,所述确定待构建的虚拟指令包括数据传输指令、算数和逻辑运算指令、控制转移指令。可选的,所述在所述待保护程序中定位关键代码段,包括:在所述待保护程序中的关键代码段的段首添加首标记;在所述待保护程序中的关键代码段的段尾添加尾标记。可选的,所述对所述关键代码段进行反汇编,得到本地指令序列,包括:获取所述关键代码段的起始地址和结束地址;使用反汇编工具将所述起始地址与所述结束地址中的二进制代码进行反汇编,得到本地指令序列;其中,所述本地指令序列中的指令按照地址顺序进行排列。可选的,所述根据设计好的虚拟指令集将所述本地指令序列转换为第一虚拟指令,包括:将所述本地指令序列的操作数压入栈中;执行所述本地指令序列的目标操作,获取执行结果,并存放于所述栈中;将所述执行结果存入虚拟寄存器环境或内存中。可选的,所述将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文件与所述待保护程序构成第一文件,在所述第一文件中进行垃圾数据填充,获得保护后的程序,包括:将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文件附在所述待保护程序后,构成第一文件;在所述第一文件中的所述关键代码段的起始位置处添加指向所述附加文件中虚拟机初始化入口起始地址的跳转指令,在所述第一文件中的所述关键代码段的剩余内容中随机填充垃圾数据,填充完毕后,获得保护后的程序。本专利技术提供的技术方案带来的有益效果是:相对于现有技术,能够提高待保护程序的复杂性,延长了分析者对待保护程序的分析时间,从而增强了待保护程序的防逆向分析能力。附图说明为了更清楚地说明本专利技术的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术提供的一种具有指令集随机化的代码虚拟化软件保护系统的流程示意图;图2是本专利技术提供的一种具有指令集随机化的代码虚拟化软件保护系统的控制跳转指令中内部跳转和外部跳转的示例图;图3是本专利技术提供的一种具有指令集随机化的代码虚拟化软件保护系统的三种虚拟指令的两种不同编码结果的示例图;图4是本专利技术提供的一种具有指令集随机化的代码虚拟化软件保护系统中保护后程序的详细结构示意图。具体实施方式为使本专利技术的结构和优点更加清楚,下面将结合附图对本专利技术的结构作进一步地描述。实施例一本专利技术提供了一种具有指令集随机化的代码虚拟化软件保护系统,所述具有指令集随机化的代码虚拟化软件保护系统,如图1所示,包括:01、构建虚拟指令集。02、对所述待保护程序进行PE文件检测。03、在所述待保护程序中定位关键代码段。04、对所述关键代码段进行反汇编,得到本地指令序列。05、根据设计好的虚拟指令集将所述本地指令序列转换为第一虚拟指令。06、将所述第一虚拟指令按预设的编码规则进行编码,得到字节码指令。07、生成保护系统的附属虚拟机组件。08、将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文件与所述待保护程序构成第一文件,在所述第一文件中进行垃圾数据填充,获得保护后的程序。在实施中,为了实现防止程序被逆向分析,特此提出了通过将本地x86指令转换为虚拟指令,在运行是利用嵌入的虚拟解释器对虚拟指令进行解释执行以达到和原始本地指令相同的功能。在该保护方法下,将原始指令进行复杂化处理,加大分析者理解的难度,从而起到对程序进行保护的效果。具体的,本专利技术中提供的方法的主要思想为:首先本文档来自技高网
...

【技术保护点】
一种具有指令集随机化的代码虚拟化软件保护系统,其特征在于,所述具有指令集随机化的代码虚拟化软件保护系统,包括:构建虚拟指令集;对所述待保护程序进行PE文件检测;在所述待保护程序中定位关键代码段;对所述关键代码段进行反汇编,得到本地指令序列;根据设计好的虚拟指令集将所述本地指令序列转换为第一虚拟指令;将所述第一虚拟指令按预设的编码规则进行编码,得到字节码指令;生成保护系统的附属虚拟机组件;将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文件与所述待保护程序构成第一文件,在所述第一文件中进行垃圾数据填充,获得保护后的程序。

【技术特征摘要】
1.一种具有指令集随机化的代码虚拟化软件保护系统,其特征在于,所述
具有指令集随机化的代码虚拟化软件保护系统,包括:
构建虚拟指令集;
对所述待保护程序进行PE文件检测;
在所述待保护程序中定位关键代码段;
对所述关键代码段进行反汇编,得到本地指令序列;
根据设计好的虚拟指令集将所述本地指令序列转换为第一虚拟指令;
将所述第一虚拟指令按预设的编码规则进行编码,得到字节码指令;
生成保护系统的附属虚拟机组件;
将所述字节码指令和所述附属虚拟机组件组合为附加文件,将所述附加文
件与所述待保护程序构成第一文件,在所述第一文件中进行垃圾数据填充,获
得保护后的程序。
2.根据权利要求1所述的具有指令集随机化的代码虚拟化软件保护系统,
其特征在于,所述构建虚拟指令集,包括:
确定待构建的虚拟指令;
确定与所述虚拟指令对应的解释程序;
其中,所述确定待构建的虚拟指令包括数据传输指令、算数和逻辑运算指
令、控制转移指令。
3.根据权利要求1所述的具有指令集随机化的代码虚拟化软件保护系统,
其特征在于,所述在所述待保护程序中定位关键代码段,包括:
在所述待保护程序中的关键代码段的段首添加首标记;
在所述待保护程序中的关键代码段的段尾添加尾标记。
4.根据权利要求1所述的具有指令集随机化的代码虚拟化软件保护系...

【专利技术属性】
技术研发人员:李光辉房鼎益汤战勇匡开圆陈晓江郝朝辉祁生德樊如霞任庆峰王蕾
申请(专利权)人:西北大学
类型:发明
国别省市:陕西;61

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

1