基于代码切片的虚拟执行系统与方法技术方案

技术编号:2918197 阅读:280 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及计算机二进制程序指令的动态虚拟执行系统和方法。该系统由动态监控部件、反汇编部件和代码切片虚拟执行部件组成。该方法是:以调试方式启动被监视程序,动态监控部件设置触发点和释放点。触发点激活,控制权由动态监控部件转移给代码切片虚拟执行部件,在获取目标程序代码流后,由反汇编部件分析指令,创建基本块。将生成的基本块放入缓存,执行预处理后,虚拟执行基本块的每条指令。到达释放点后,返回到动态监控部件,恢复二进制程序的正常执行。本发明专利技术适用于对运行时二进制程序的指令级细粒度分析,支持对目标代码流的局部区域模拟,能有效处理多线程环境下的自变异/自校验代码,以及各种迷惑代码,具有很高的运行效率。

【技术实现步骤摘要】

本专利技术涉及二进制程序虚拟执行系统与方法,特别是指令级虚拟执行环境。本专利技术用于 对未知二进制程序的动态细粒度自动化分析。技术背景细粒度二进制程序的动态分析是一项挑战性的任务,它将提供对构建未知软件的核心结 构、功能蓝图需要的关键信息。当前有关未知二进制程序分析的研究大致可分为静态分析和 动态分析两种方法。静态方法允许详细的细粒度分析,因为它们不会受到特定运行环境的限制。这种方法可 以允许不运行二进制程序来分析其内部结构和功能,可以确保该程序的二进制代码永远不会 被执行,减少了运行时的负担。静态分析除了这些强大的特性外,还有一些局限。采用静态 分析时将面临的一个问题是,被分析的二进制代码不是实际运行的代码,在分析和执行之间 存在很多差异。特别是在某些具有自变异功能的程序,以及可动态生成代码程序的情况下, 这类问题是十分常见的。另外,由于如间接分支等不可判定性因素,采用静态分析来确定状 态是不可能的。更进一步的说,静态代码分析在有关迷惑代码的分析中存在较大的局限性,代码迷i^术主要是被软件开发人员用来保护它们自身的程序被分析和检测。动态分析方法通过运行时分析代码克服了以上的部分局限,确保了被分析的代码就是运 行时的真实代码。虽然有部分关于动态粗粒度二进制代码分析的方法,但是有关细粒度运行 时分析的研究还很少。当前动态细粒度二进制软件的分析可以通过调试器来完成。使用调试 器的基本方法就是在标识区域中设置断点, 一次一条指令的方式追踪需要査看的代码流,收 集进一步的信息。然而,这些工具都是需要人工的大量参与,自动化程度非常的低。另外, 可以使用一些自动化的细粒度分析工具架构来自动追踪代码流。但是,它们往往都是基于指 令的完全模拟实现的,运行效率非常低。并且,对具有自变异/自校验的代码能力非常有限。 因此,当前迫切需要一种新的自动化且髙效的二进制程序指令级虚拟执行环境。同时, 支持对多线程环境的自变异/自校验代码的分析,以及支持对采用迷惑技术的变形代码的有效 分析,并且虚拟执行系统还应该具有很髙的性能。
技术实现思路
有鉴于此,本专利技术的目的是提供在通用操作系统中对软件进行动态细粒度分析的系统。 目标是提供一个的髙效、轻便、易用的构架系统,它支持用户或内核模式下的多线程、自变 异/自校验代码和迷惑代码,同时允许选择性隔离代码执行。该架构通过使用精巧的技术,如基本块结合以及标准代码忽略技术来保证执行环境的高效性。通过少量的依赖性检查,以及 使用内部功能需要的反汇编部件将保证轻松地运行于Windows和UNIX操作系统。这样使得该架 构能够轻易地移植到其他操作系统或体系结构平台上。它提供的API很简单而强大,使得该构 架十分易用。为了达到上述目的,本专利技术提供了一种基于代码切片的虚拟执行系统和方法,其特征在于该引擎包括了下述组成部件动态监控部件动态监控部件的结构组成包括触发点与释放点设置模块,页错误处理 模块。虚拟执行系统的动态监控部件接受用户的输入,以此设置虚拟执行的目标代码流范围, 由触发点定义起始位置,释放点定义结束位置。触发点激活后,页错误处理模块获取控制权, 通知代码切片虚拟执行部件,动态监控部件将该段二进制代码流的执行控制权限转移给虚拟 执行系统。到达释放点位置后,虚拟执行系统将控制权返回给原二进制程序,按正常执行模 式继续运行。反汇编部件虚拟执行系统获取目标二进制程序的代码流,由反汇编部件生成对应的汇 编代码,逐条分析得到的汇编指令。代码切片虚拟执行部件将目标代码流分解成多个指令集, 以模拟代码流正常执行的方式执行基本块中的每条指令,该过程实现周部代码执行,而指令 集则组成了虚拟执行的基本块。每个基本块是没有包含分支语句的指令序列,在满足以下条 件时结束代码流切片无条件控制转移指令;条件控制转移指令;指定数量的非控制转移指 令。反汇编部件用于动态构建与目标代码流相一致的虚拟执行基本块。代码切片虚拟执行部件代码切片虚拟执行部件的结构组成包括基本块生成模块,基 本块缓存模块,基本块预处理模块和虚拟执行模块。基本块生成模块调用反汇编部件,对获 取的二进制代码流进行分析,生成不包含控制转移指令的基本块。这就使得目标代码流的所 有执行都能够保持在虚拟执行系统的控制范围内。为提髙运行效率进行相应的执行预处理, 生成的基本块经过执行预处理后存放在基本块缓存内。只有存在于基本块譯存内的代码指令 才能执行,原始的目标代码流不能直接执行。基本块预处理模块为了提升系统的运行性能, 采用了基本块结合技术和标准代码忽略技术,以此减小运行时的延迟。为了达到上述目的,本专利技术还提供了一种基于代码切片的虚拟执行方法,其特征在于 该方法包括了下述操作步骤步骤(l),以调试方式启动二进制程序;歩骤(2),动态监控部件设置虚拟执行触发点和释放点步骤(3),触发点激活,控制权由动态监控部件转移给代码切片虚拟执行部件; 歩骤(4),获取目标二进制程序的代码流,由反汇编部件分析指令后,创建基本块;步骤(5),将生成的基本块放入基本块缓存,执行基本块预处理; 步骤(6),虚拟执行每个基本块的指令;步骤(7),到达释放点后,返回到动态监控部件,恢复二进制程序的正常执行。总之,本专利技术系统与方法的优点简述如下自动化且高效的二进制程序指令级虚拟执行环境。支持对多线程环境的自变异/自校验代码,以及采用迷惑技术的变形代码的有效分析。该虚拟执行系统具有很高的性能,允许选择性隔离代码执行。附图说明图I是本专利技术用于基于代码切片的虛拟执行方法的流程图。 图2是本专利技术用于基于代码切片的虚拟执行系统的总体结构框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图对本专利技术作进一步的详细 描述。参见图1,初始化虚拟执行系统,这包括对代码切片虚拟执行部件、反汇编部件和动态 监控部件的安装和配置。以调试方式启动被监视程序,该二进制程序可能包含有用户态代码, 以及内核态代码。通过动态监控部件接受用户的输入,包括触发点位置,释放点位置,基本 块指令数限制,基本块结合要求等。将触发点和释放点地址对应的内存页面属性设置为不存 在。当二进制程序访问到触发点时,错误异常发生,由动态监控部件的页错误处理模块获取 控制权。然后,动态监控部件将控制权转移给代码切片虚拟执行部件。代码切片虚拟执行部 件在获取目标程序代码流后,由反汇编部件分析二进制代码得到对应的每条指令,根据基本 块生成的长度原则创建基本块。所有的基本块内部均不包含有分支语句,保证每个基本块的 指令代码未发生控制转移。代码切片虚拟执行部件将生成的基本块放入基本块缓存,执行基本块预处理。基本块的 预处理主要包括基本块结合与标准代码忽略两部分,然后虛拟执行基本块中的每条指令。执 行完基本块的每个指令后,控制权返回到代码切片虚拟执行部件,重新生成新的基本块。目标代码流到达释放点后,控制权返回到动态监控部件,最终恢复二进制程序的正常执行。图2为基于代码切片的虛拟执行系统的总体结构框图。下面将结合附图2,具体介绍本 专利技术系统的各个组成部件 反汇编部寸牛反汇编部件分析虚拟执行系统获取目标二进制程序的代码流,生成对应的每一条汇编指令,逐条分析得到的汇编指令。当遇到控制转移指令,或基本块的累计指令数目超出用户定 义的范围本文档来自技高网
...

【技术保护点】
基于代码切片的虚拟执行系统,其特征在于包括如下组成部件:动态监控部件:虚拟执行系统的动态监控部件接受用户的输入,以此设置虚拟执行的目标代码流范围,由触发点定义起始位置,释放点定义结束位置。触发点激活后,动态监控部件将该段二进制代码流的执行控制权限转移给虚拟执行系统。到达释放点位置后,虚拟执行系统将控制权返回给原二进制程序,按正常执行模式继续运行。反汇编部件:虚拟执行系统获取目标二进制程序的代码流,由反汇编部件生成对应的汇编代码,逐条分析得到的汇编指令。当遇到控制转移指令,或基本块的累计指令数目超出用户定义的范围时,设置为该基本块的结束。反汇编部件用于动态构建与目标代码流相一致的虚拟执行基本块。代码切片虚拟执行部件:虚拟执行系统针对反汇编部件生成的不包含控制转移指令的基本块,将基本块存放于内部的执行缓存内,为提高运行效率进行相应的执行预处理,最终虚拟执行基本块中的每条指令。

【技术特征摘要】

【专利技术属性】
技术研发人员:曹跃梁晓李毅超柴方明舒柏程
申请(专利权)人:电子科技大学
类型:发明
国别省市:90[中国|成都]

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

1