使用二进制转换执行安全性操作的制作方法

文档序号:9291690阅读:396来源:国知局
使用二进制转换执行安全性操作的制作方法
【专利说明】使用二进制转换执行安全性操作
【背景技术】
[0001] 当前防病毒/防恶意软件技术用于监视关键应用程序和内核代码以便进行自查 以跟踪恶意软件或病毒的非法使用。用于监视关键代码(如应用程序编程接口(API))的技 术涉及挂钩(hook)关键代码并且在允许关键代码执行继续前强制绕路到防病毒代理以便 进行自查。
[0002] 用于挂钩/绕路到防病毒代理的一种方法是指令修补原代码以便绕路到防病毒 代理。然而,此方法的缺点是它是侵入式并且不透明。因此,挂钩能够轻松被病毒检测到。 此外,修补原代码由于指令边界问题而变得复杂。例如,由补丁替换的原指令的大小小于补 丁指令的大小时,修补是不安全的。修补具有返回指令指针(RIP)相对寻址的指令也是不 安全的,这是因为防恶意软件代理代码在被监视地址空间中的不同虚拟地址执行。
[0003] 另一个此类方法是通过页面许可调用,如将具有关键代码的页面标记为不可执 行,并且经例外将控制导引到防病毒代理。此方法的缺点在于它具有高开销。另外,提出例 外存在性能影响。另外,由于粗粒度(例如,4千字节(kB)页级别)挂钩原因,能够存在大量 的错误肯定,这造成为进行分析而到防病毒代理的不必要上下文交换。
【附图说明】
[0004]图1是根据本发明的一个实施例,二进制转换执行的安全性代码能够在其上操作 的系统的框图。
[0005]图2是示出根据本发明的一实施例,二进制转换辅助的执行剖析的控制流程的框 图。
[0006]图3是根据本发明的一实施例,为二进制转换软件提供硬件受管理容器的系统的 框图。
[0007] 图4是根据本发明的一实施例,为二进制转换软件提供虚拟机器监视器受管理容 器的系统的框图。
[0008]图5是根据本发明的一实施例,为二进制转换软件提供操作系统受管理容器的系 统的框图。
[0009]图6是根据本发明的一实施例,为二进制转换软件提供应用程序受管理容器的系 统的框图。
[0010]图7是根据本发明的一实施例,用于执行二进制转换的方法的流程图。
[0011] 图8是根据本发明的一实施例,用于执行到转换的代码的低开销转移的方法的流 程图。
[0012] 图9是根据本发明的一个实施例,包括处理器和存储器的协同设计环境的框图。
[0013] 图10是根据本发明一个实施例的系统的框图。
【具体实施方式】
[0014] 在各种实施例中,经部分转换模型执行二进制转换(BT)的硬件/软件(HW/SW)协 同设计的处理器可用于提供低开销和透明代码转换/插装(instrument),从而允许更快和 透明的绕路机制而无需修补原代码。为此,通过内联分析和一个或更多个策略检查功能,可 产生原代码的转换版本。经此插装代码的执行,可降低到防病毒/防恶意软件(AV/AM)代 理的昂贵上下文交换的频率。在部分转换模型中,只转换/插装目标代码(例如,通过x86 插装),并且在本机执行代码的剩余部分(作为原x86代码)。在一实施例中,转换/插装代码 存储在转换高速缓存中以便在执行期间访问。虽然本文中所述实施例使用部分转换模型, 但在其它实施例中,可使用通过二进制转换来转换所有代码的完全转换模型。
[0015] 为实现部分转换,处理器能够具有两种模式:在其中它直接执行源ISA的指令的 第一模式,指令在一个实施例中能够是源ISA代码(例如,用于Intel Architecture (IA) ? 体系结构的ISA的x86代码);以及在其中它执行目标ISA的指令的第二模式(并且它能够 是在微操作(uop)级别,绕过处理器的指令解码器),指令能够是在诸如代码高速缓存等转 换高速缓存中存储的转换和优化的代码。在本文中使用时,第一模式可称为"原生模式"或 "原生执行模式",并且第二模式指"二进制转换执行模式"。
[0016] 因此,可经uops以通常方式直接获取或执行应用程序/0S软件的一些部分,而经 到目标指令集的转换仿真应用程序/0S软件的其它部分。此过程有时称为部分转换。通过 部分转换,能够以良好的性能先直接执行软件,并且随后基于剖析信息,转换和在转换高速 缓存中存储选择的经常执行的区域。此方案具有在为经常执行的软件提供性能和/或功率 效率增益的同时先遇到软件时,避免性能损耗的益处。
[0017] 在操作中,AV/AM代理剖析在系统中执行的代码,并且识别要监视的关键内核/用 户代码。代理随后调用BT软件,软件生成关键代码的插装版本(嵌有安全性检查)。随后, 在执行期间,执行插装代码而不是原代码。在一次或更多次嵌入式检查失败时,插装代码将 控制转移到安全性代理。
[0018] 在各种实施例中,AV/AM代理作为应用程序/操作系统/虚拟机监视器(VMM)环 境的一部分运行,并且负责识别要监视的目标代码。代理也负责调用二进制转换软件以执 行插装。根据本发明的一实施例的BT软件可支持部分转换模型。在一实施例中,BT软件 在处理器的BT容器内运行,并且实现二进制转换算法以分析目标代码并且基于AV/AM代理 确定的策略,通过适当的安全性检查,产生代码的插装版本。在一实施例中,BT容器环境包 含用于BT软件的处理器状态和保留用于BT软件的代码和数据的私有存储器空间。容器环 境也提供用于由AV/AM代理调用BT软件的接口。
[0019] BT导引单元可提供用于实现处理器支持,以允许在部分转换的代码与原生代码之 间的交互。它连接到AV/AM代理以调用BT软件,将从/向目标代码的控制导引到插装代码。 在一实施例中,导引是精细粒度的(小于页面大小),并且不使用页面级陷阱/绕路机制。换 而言之,到插装代码的转移可针对位于存储器页面中间的关键代码段。
[0020] 因此,二进制转换及其硬件基础设施可允许目标代码(例如,关键API)的动态代码 执行监视,而不修补原代码以及采用到原代码的转换版本的快速和精确/精细粒度(小于 页面大小)绕路机制。此基于策略的插装代码可最小化到安全性代理的转换,并且因此降低 了错误肯定的开销。
[0021] 现在参照图1,图中所示是根据本发明的一个实施例,BT执行的安全性代码能够 在其上操作的系统的框图。如图1所示,系统1〇〇由经常称为裸平台硬件的硬件形成,包括 在一实施例中可以是带有一个或更多个核的中央处理单元(CPU)的处理器110。作为一个 此类示例,处理器110可以是多核处理器,例如包括2、4、8或另一数量的独立核。另外,处 理器可另外的处理单元,如图形处理器、固定功能单元等等。还如图1所示,处理器110还 包括二进制转换引擎115。通常,二进制转换(BT)引擎115可操作以执行基础代码的二进 制转换。另外,BT引擎115可提供机制以允许代码流到部分转换模型中的一个或更多个二 进制转换的重定向。
[0022] 如图1的实施例中所示,BT引擎115包括二进制转换导引单元116和分析与插装 单元118 (本文中称为插装单元)。导引单元116可用于允许在运行时期间代码执行从非 插装(uninstrumented)代码到插装代码的导引,且反之亦然。在一实施例中,BT导引单元 116可包括一个或更多个映射表以指示在给定过程的原生代码与一个或更多个转换的代码 段之间的对应关系。例如,每个过程可具有表格以存储原生入口点和对应插装入口点,使得 在执行期间遇到原生入口点时,执行到插装高速缓存中存储的插装代码的低开销跳。同时, 插装单元118可例如响应剖析或者响应来自另一实体的指令,分析非插装代码,并且基于 代码的分析和/或剖析信息,执行二进制转换以由此将代码插装到插装代码段中。
[0023] 此插装代码段可存储在转换高速缓存125中,转换高速缓存125可位于耦合到处 理器110的物理存储器120内。在一实施例中,物理存储器120可以是动态随机存取存储 器(DRAM)、非易失性存储器或平台内的另一存储装置。当然,理解在执行期间,至少一些代 码可存储在处理器的一个或更多个高速缓存存储器(图1中为便于说明而未示出)中。
[0024]图1中示出的其它内容是在裸平台硬件上执行的软件模型。图1中具体所示是可 充当监控器(supervisor)/管理程序(hypervisor)软件以控制执行的0S/VMM 130。在实 施例中,所示0S/VMM 130可包括内核AV代理132 (注意,"AV"在本文中通常用于指防病毒 和/或防恶意软件),代理132可配置成注意处理器的BT能力,并且指示BT引擎115在0S/ VMM 130内或者在0S/VMM环境中执行的一个或
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1