在具有地址空间布局随机化的系统中的二进制转化重用

文档序号:10694033阅读:208来源:国知局
在具有地址空间布局随机化的系统中的二进制转化重用
【专利摘要】一般地,本公开内容提供了用于二进制转化(BT)重用的系统、方法和计算机可读介质。所述系统可以包括(BT)模块用以将代码区从第一指令集架构(ISA)转化成第二ISA,以用于与第一过程相关联的执行。BT模块还可以被配置成存储与经转化的代码和第一过程相关联的第一物理页号。所述系统还可以包括处理器以执行经转化的代码并且更新与执行相关联的虚拟地址指令指针。所述系统还可以包括转化重用模块以针对由第二过程的重用来验证经转化的代码。所述验证可以包括基于经更新的虚拟地址指令指针的页表映射来生成第二物理页号,并且匹配第二物理页号与所存储的第一物理页号。
【专利说明】
在具有地址空间布局随机化的系统中的二进制转化重用
技术领域
[0001]本文中描述的示例性实施例一般地涉及二进制转化(BT)系统,并且更具体地涉及在采用地址空间布局随机化(ASLR)的系统中的二进制转化的重用。
【背景技术】
[0002]计算系统可以采用二进制转化(BT)来将代码动态地从公共指令集架构(ISA)(诸如例如Intel ? x86架构)转化成处理器或核所执行的私有或原生ISA。计算系统支持公共ISA的能力使得能够执行遗留代码,所述遗留代码一般提供向后兼容性以及对大的现有软件集合的访问。另一方面,原生ISA可以被设计成提供增加的处理器性能或改进的功率消耗。另外,处理器可以被规律地更新或重设计以利用新技术,所述新技术可以改变它们的原生ISA而仍维持公共ISA以及运行现有软件的能力。
[0003]然而,转化成本通常很高,因此合期望的是将转化存储在存储器中以供在每当可能的时候重用,例如当在稍后的时间点处执行相同的指令序列并且先前的转化仍然有效的时候。这允许转化的成本随时间缓冲(amort i z e )。
[0004]地址空间布局随机化(ASLR)越来越多地被操作系统(OS)使用以提供在不同的虚拟地址空间中运行的过程之间的安全性。ASLR可以随机地(或伪随机地)修改与不同过程的代码页相关联的虚拟地址,尽管那些代码页被映射到相同的物理地址。这可以防止恶意代码发动依赖于在不同过程之间的或在相同或不同处理器上的相同过程的执行之间的代码公共布局的攻击。
[0005]然而,ASLR的使用通常使所存储的转化无效,因为先前存储的转化的有效性可能要求待转化的代码区的虚拟地址、物理地址和页属性与所存储的转化的那些相配。这因此可能阻止二进制转化器重用先前的转化并且可能显著地降低二进制转化系统的总体效率。
【附图说明】
[0006]随着以下详细描述进行并且在参照附图时,所要求保护的主题的实施例的特征和优点将变得显而易见,其中同样的标号描绘类似的部分,并且其中:
图1图示了与本公开内容一致的示例性实施例的顶层系统图解;
图2图示了与本公开内容一致的一个示例性实施例的框图;
图3图示了与本公开内容一致的另一示例性实施例的框图;
图4图示了与本公开内容一致的一个示例性实施例的操作的流程图;
图5图示了与本公开内容一致的一个示例性实施例的操作的流程图;
图6图示了与本公开内容一致的另一示例性实施例的操作的流程图;以及图7图示了与本公开内容一致的另一示例性实施例的平台的顶层系统图解。
[0007]尽管以下详细描述将参照说明性实施例进行,但是其许多可替换方案、修改和变型对于本领域技术人员而言将是显而易见的。
【具体实施方式】
[0008]—般而言,本公开内容提供系统、设备、方法和计算机可读介质来用于二进制转化(BT)重用,例如在包括被配置用于地址空间布局随机化(ASLR)的操作系统(OS)和处理器的系统中。该系统的BT模块可以被配置成将代码区从第一指令集架构(ISA)转化成适合用于由处理器执行的第二 ISA(例如,原生于处理器的ISA)。代码区可以包括能够被不同的过程或应用所重用的共享代码,使得能够缓冲转化的成本,如果代码区对于尝试使用它的每个过程保持有效的话。转化重用模块可以被配置成检验代码区的有效性,如将在以下更详细解释的那样,其基于与该代码区相关联的存储器页的物理页号和页属性。经转化的代码区可以被确定为对于被不同的过程重用而言是有效的,尽管将每个过程映射到代码区的虚拟地址可能例如由于ASLR而不同,但只要针对那些区的物理页号和页属性自其与原始转化相关联的值保持不变即可。
[0009]图1图示了与本公开内容一致的示例性实施例的顶层系统图解100。被配置用于ASLR的OS 102被示出为托管一个或多个过程或应用108 JSLR可以通过随机地修改与不同过程的代码页相关联的虚拟地址而提供在不同虚拟地址空间中运行的过程之间的安全性,尽管那些代码页被映射到相同的物理地址。这可以防止恶意代码发动这样的攻击:所述攻击依赖于在不同过程之间或在相同或不同处理器上的相同过程的执行之间的代码的公共布局。
[0010]二进制转化模块104被配置成将与过程108相关联的代码区从第一 ISA转化成第二ISA。第一ISA可以是公共ISA,诸如例如Intel ? x86架构或其变型。第二ISA可以是由主机处理器106执行的原生ISA。原生ISA—般可以具有与公共ISA的很少相似处或没有任何相似处。虽然公共ISA提供对遗留代码的支持,所述遗留代码使得能够访问大的现有软件集合,但是原生ISA可以被设计用于有针对性的目标,诸如例如增加的处理器性能或改进的功率消耗。处理器可以被规律地更新以利用新技术并且可以改变其原生ISA而维持运行现有软件的能力。
[0011]过程/应用108可以包括OS组件(包括基本输入输出系统(B1S)、设备驱动器等等)和/或任何其它软件,诸如例如较高层应用或其它用户提供的在系统上运行的代码。过程108可以共享公共代码,诸如例如库例程等等。转化重用模块110可以被配置成确定与一个过程相关联的先前转化的代码区是否可以被另一过程重用,因而避免重转化的开支。如果经转化的代码中的存储器页在它们代表第一过程被转化的时间和它们可能被第二过程重用的时间之间保持有效,则可以准许重用。验证可以基于经转化的代码区的物理页号和页属性,如将在以下更详细地解释的那样。
[0012]图2图示了与本公开内容一致的一个示例性实施例的框图200。被配置用于ASLR的OS 102出于说明性的目的而被示出为托管两个过程,过程A 108a和过程B 108b,尽管在实践中可以托管任何数目的过程。共享的代码202,其可以例如包括公共库函数,被过程108a和108b共享。BT转化模块104可以被配置成转化204例如来自共享的代码/库202的代码区,当该代码被过程A 108a需要(调用)的时候。转化重用模块110可以被配置成确定先前转化的代码区在被过程B 108b调用时是否可以被重用206。如果重用不可能,则代码区或其部分可以被重转化208。经转化的代码可以被存储在转化器存储器中或由处理器106可访问以供执行的其它合适的存储装置中。
[0013]图3图示了与本公开内容一致的另一示例性实施例的框图300。在该更详细的图示中,示出三个过程:过程A 108a、过程B 108b和过程C 108c,其中的所有可以在各种时间利用共享的代码202。每个过程可以与对用于该过程的存储器空间进行标识的不同虚拟地址相关联。虚拟地址可以包括虚拟页号(VPN)和偏移^SLR系统可以随机地指派或修改与每个过程相关联的VPN(但是一般不是偏移)。虚拟地址到物理地址映射模块302可以被配置成将虚拟地址映射到物理地址,例如通过使用页表或其它合适的机制。物理地址可以包括物理页号(PPN)和偏移。代码区可以跨越一个或多个存储器页并且每页将具有虚拟地址(VPN和偏移)以及对应的物理地址(PPN和偏移)。
[0014]指令指针寄存器,用于虚拟和物理地址二者,将地址指针提供给当前正由处理器106执行的指令。虚拟地址指令指针寄存器可以被称为RIP并且物理地址指令指针寄存器可以被称为PIP。地址偏移可以一般被存储在这些寄存器的较低阶位中,而页号(VPN/PPN)可以一般被存储在较高阶位中。
[0015]在该示例中,来自过程A 108a的共享代码202具有包括VPN 1(和偏移)的虚拟地址I,而来自过程B 108b的共享代码202具有包括VPN 2(和偏移)的虚拟地址2,并且来自过程C108c的共享代码202具有包括VPN 3(和偏移)的虚拟地址3。过程A 108a可以是从共享代码202中调用库例程的第一过程,其可以使该代码区被转化204成转化器存储器210的页N。转化被示出为具有物理地址I,所述物理地址I包括PPN 1(和偏移),其指向经转化的代码现在驻留在其中的页N中的位置。
[0016]当过程B108b调用该相同的共享代码库例程时,相关联的虚拟地址(VPN2)被映射到物理地址,所述物理地址在该情况下与先前的转化的物理地址相同(S卩,PPNl加偏移)。转化重用模块110检测到该事实并且确定转化204对于被过程B重用206而言保持有效。
[0017]然而,继续该示例,当过程C108c调用该相同的共享代码库例程时,相关联的虚拟地址(VPN 3)被映射到不同的物理地址(即,PPN2加偏移)。转化重用模块110也检测该事实并且确定转化204因此对于被过程C重用而言不有效并且代替地引起重转化208,所述重转化208可以被映射到不同的页中,例如,如所图示的页N+k。
[0018]在一些实施例中,页表可以被高速缓存在转化后备缓冲器(TLB)304中,所述转化后备缓冲器(TLB)304被配置成提供更快的访问和更高效的虚拟到物理地址转化。TLB可以存储更频繁使用的转化页表。
[0019]除了页号和偏移之外,虚拟和物理地址还可以包括或相关联于页属性或上下文指示。页属性可以指示访问模式(例如,访问许可的读/写/可执行类型)、页大小、映射状态、修改状态和/或高速缓存策略。这些页属性还可以被转化重用模块110采用,作为转化有效性检查的部分。例如,如果与来自过程A的物理地址映射相关联的页属性不同于与过程B的物理地址映射相关联的页属性,则转化204不再可以被认为是对于被过程B重用206而言有效。另外,在一些实施例中,转化重用模块110可以被配置成作为有效性检查的部分而检验经转化的代码没有改变,例如作为执行自修改或交叉修改代码的结果。
[0020]在一些实施例中,转化重用模块110还可以被配置成将指令插入或嵌入到经转化的代码的一个或多个页中,所述指令在被执行时可以有助于针对转化重用而对那些页的验证。这些嵌入的指令可以被称为页间序(Inter-Page Prologue)(IPP),或简单地称为序,并且还可以被配置成在经转化的代码区的不同页之间的控制转移(例如,分支)期间对页进行验证。IPP可以包括指令和/或数据,所述指令和/或数据提供在那些页的原始转化期间被BT模块104使用的VPN和PPN的指示。IPP然后可以访问页表,以确定VPN到PPN映射是否仍有效以及页是否可执行。如果这些检查没有通过,则可以引发失效,这导致该转化被废弃并且新的转化被生成。可替换地,在失效的情况下,处理器可以在较低性能模式中(例如,没有转化的一些方面的益处)执行代码,直到在未来的时间点可以生成新转化为止。
[0021]图4图示了与本公开内容一致的一个示例性实施例的操作400的流程图。操作提供用于BT重用的方法。在操作410处,代码区或指令被接收用于执行。在操作420处,执行检查以确定该区是否已经在先前被转化。如果不是,则该区在操作450处被转化并且在操作460处被执行。如果该区已经被转化,则在操作430处,现有转化被验证。验证基于转化的物理地址和页属性。如果验证成功,则转化在操作460处被重用和执行,否则该区在操作450处被重转化。
[0022]图5图示了与本公开内容一致的一个示例性实施例的操作500的流程图。示出的是第一指令转化区(Tl)520、第二指令转化区(T2)530、第三指令转化区(T3)540、第四指令转化区(Τ4)560和第五指令转化区(Τ5)570。在转化区之间的执行的链接和/或分支也通过有向线段连同多个验证操作510、550和580示出。转化区Tl、Τ2和Τ3被映射到与页号PPNl相关联的第一存储器页,而转化区Τ4和Τ5被映射到与页号ΡΡΝ2相关联的第二存储器页。将领会的是,转化区的数目、验证操作的数目及其跨页边界的互连作为说明性的示例被呈现并且当然可以变化。
[0023]可以在对第一存储器页上的转化的初始访问或执行时执行验证操作510以检验该页的有效性。执行可以进行通过转化区Τ1、Τ2和Τ3直到跨过页边界,在该点处执行验证操作550以检验第二页的有效性。如果在转化区Τ4和Τ5的执行之后再次跨过页边界,则可以执行验证操作580以检验第一页对于执行而言仍有效。
[0024]验证操作可以由IPP执行,所述IPP被包括或嵌入在与每个存储器页相关联的经转化的代码中,例如通过转化重用模块IlOtJPP可以包括指令和/或数据以提供当执行原始转化时与该页相关联的虚拟地址和物理地址。IPP还可以包括指令以访问页表,所述页表提供在当前虚拟地址指令指针和当前物理地址指令指针之间的映射。指令指针相关联于由处理器106执行的当前指令。当前虚拟地址指令指针可以如下所述那样被维护。IPP还可以确定当前物理地址和页属性是否匹配在转化时候的物理地址和页属性,并且因而确定该页上的转化区对于执行而言是否有效。在原始转化的时候处于使用中(并且可以通过ASLR随机地修改)的虚拟地址的VPN部分不用于验证匹配。
[0025]当前虚拟地址指令指针可以被维护或更新,例如通过处理器106或BT模块104,在执行进行时。在一些实施例中,当前虚拟地址指令指针可以被维护以供硬件寄存器中的IPP(被称为FL_RIP)使用并且可以通过使用原生ISA中所包括的指令(被称为ADDRIP)来被更新。ADDRIP指令可以被配置成以相对高效的方式来修改FL_RIP寄存器中所存储的虚拟地址的偏移分量。在一些实施例中,例如,存储器页大小可以是4k字节并且虚拟地址偏移可以因此在长度上是12位。ADDRIP指令可以因而被配置成清除FL_RIP寄存器的最低有效12位并且将新值添加到该寄存器,其中新值被存储为ADDRIP指令的立即操作数。
[0026]IPP可以以此方式使用ADDRIP指令来实现相对分支,其中立即操作数表示相对分支偏移。在绝对分支的情况下,无论是直接的还是间接的,IPP可以简单地将新值写到与绝对分支位置相对应的FL_RIP寄存器中。在子例程调用和返回的情况下,返回虚拟地址可以在调用时间被计算并且被推送到堆栈上并且稍后在返回时间从堆栈被弹出并且写到FL_RIP寄存器。不跨页边界的分支不需要更新FL_RIP寄存器,因为该寄存器仅仅需要维护正确的VPN并且页内分支将只影响偏移。涉及FL_RIP寄存器的大多数操作(指令)供应隐式地与FL_RIP中的VPN相组合的页偏移。这减少在经转化的代码中所需要的FL_RIP更新指令的数目。在一些实施例中,FL_RIP寄存器还可以用作隐式基础,其具有偏移来实现用于加载和存储BT系统的RIP-相对寻址。
[0027]在一些实施例中,IPP检查可以被动态地添加到经转化的代码。例如,可以静态地确定(例如在转化的时候)没有分支从任何其它页进入到转化区中并且因此用于该转化区的IPP的生成和插入可以被避免以减少开销。在某个稍后的点处(例如在执行期间),系统可以检测往该转化区中的页转化,并且动态地就地插入IPP来处理验证检查。这可以通过仅仅在必要时插入IPP来增加系统效率。
[0028]图6图示了与本公开内容一致的另一示例性实施例的操作600的流程图。操作提供用于BT重用的方法,例如在采用ASLR的系统中。在操作610处,执行代码区的二进制转化。BT是从第一 ISA到第二 ISA的转化,其中第二 ISA原生于处理器。执行转化以用于与第一过程相关联的执行。在操作620处,第一物理页号被存储。第一物理页号相关联于二进制转化和第一过程。在操作630处,虚拟地址指令指针的偏移被存储。偏移相关联于二进制转化和第一过程。在操作640处,在通过处理器的执行期间更新虚拟地址指令指针。在操作650处,二进制转化被检验为对于用于与第二过程相关联的执行的重用而言有效。检验包括基于页表映射来生成第二物理页号,所述映射基于经更新的虚拟地址指令指针和所存储的偏移。检验还包括匹配第二物理页号与所存储的第一物理页号。
[0029]图7图示了与本公开内容一致的另一示例性实施例的平台710的顶层系统图解700。平台710是硬件平台或计算设备,诸如例如智能电话、智能平板设备、个人数字助理(PDA)、移动因特网设备(MID)、可转换的平板设备、笔记本或膝上型计算机、台式计算机、月艮务器、智能电视或无论固定还是移动的任何其它设备。所述设备一般可以经由显示器770(诸如例如触摸屏、液晶显示器(IXD)或任何其它合适的显示器类型)向用户呈现各种接口。
[0030]系统700被示出为包括处理器720。在一些示例性实施例中,处理器720可以被实现为任何数目的处理器核。处理器(或处理器核)可以是任何类型的处理器,诸如例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、现场可编程门阵列或被配置成执行代码的其它设备。处理器720可以是单线程的核或多线程的核,因为它每核可以包括多于一个硬件线程上下文(或“逻辑处理器”)。系统700还被示出为包括被耦合到处理器720的存储器730。存储器730可以是如所已知的或以其它方式可用于本领域技术人员的任何的多种多样的存储器(包括存储器高速缓存和/或存储器层次的各种层)。系统700还被示出为包括输入/输出(10)系统或控制器740,其可以被配置成使能或管理在处理器720与系统700的其它元件或系统700外部的其它元件(未示出)之间的数据通信。系统700还可以包括被配置成使能在系统700和任何外部实体之间的通信的通信接口 750。通信可以符合任何现有或还待开发的通信标准(包括移动电话通信标准)或以其它方式与其相兼容。例如,通信接口 750可以使用预定的有线或无线通信协议,诸如但不限于因特网协议、W1-FI协议、蓝牙协议、广域网(WAN)、其组合等等。通信接口 750可以因此包括允许硬件平台710向/自任何外部实体发送和接收数据信号的硬件(即电路)、软件或硬件和软件的组合。
[0031]系统700可以还包括二进制转化模块104,其被配置成与采用ASLR托管应用/过程108的OS 102相结合地提供转化重用。
[0032]将领会到,在一些示例性实施例中,系统700的各种组件可以组合在芯片上系统(SoC)架构中。在一些实施例中,组件可以是硬件组件、固件组件、软件组件或者硬件、固件或软件的任何合适组合。
[0033]本文中描述的方法的示例性实施例可以被实现在一种系统中,所述系统包括一个或多个存储介质,所述存储介质在其上单独地或组合地存储了指令,所述指令在被一个或多个处理器执行时施行所述方法。此处,处理器可以包括例如系统CPU(例如核心处理器)和/或可编程电路。因而,意图的是根据本文中描述的方法的操作可以跨多个物理设备(诸如在若干不同物理位置处的处理结构)而分布。而且,意图的是方法操作可以单独地或次组合地被执行,如本领域技术人员将会理解的那样。因而,不是每个流程图的所有操作都需要被执行,并且本公开内容明确地意图这样的操作的所有次组合(subcombinat1n)被使能,如本领域普通技术人员将会理解的那样。
[0034]处理器720可以是能够处理数据的任何设备,包括例如被配置成基于输入数据而实施特定操作或能够执行计算机可读代码中所包括的指令的微处理器。例如,处理器720可以被配置成根据一些示例性实施例而被编程以操作,并且存储器730可以被配置成存储程序。处理器720的类型和性质可以基于众多因素而被选择,诸如形状因素、期望的功耗、期望的处理能力、其组合等等。可以在处理单元240中使用的合适处理器的非限制性示例包括从INTEL?、Advanced Micro Devices(AMD ? )、APPLE ?、SAMSUNG ? 和 NVIDIA ? 商业上可得到的移动和台式处理器。
[0035]存储介质可以是能够存储、包含或承载(一个或多个)指令和/或数据的任何存储介质,并且可以包括任何类型的有形介质,例如,任何类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)、数字通用盘(DVD)和磁光盘、非易失性存储器、半导体设备、诸如只读存储器(R0M)、随机存取存储器(RAM)、诸如动态和静态RAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器设备(其可以包括例如NAND或NOR类型的存储器结构)、磁卡或光卡、其组合和/或适合于存储电子指令的任何类型的介质。
[0036]如在本文中任何示例性实施例中所使用的,术语“模块”可以指代被配置成执行或使得执行与本公开内容一致的一个或多个操作的软件、固件和/或电路。软件可以被体现为非暂时性计算机可读存储介质上所记录的软件封装、代码、指令、指令集和/或数据。固件可以体现为存储器设备中硬编码的(例如非易失性)代码、指令或指令集和/或数据。“电路”,如在本文中的任何实施例中所使用的,可以例如单个地或以任何组合地包括硬布线的电路、可编程电路、诸如计算机处理器,其包括一个或多个单独的指令处理核、状态机电路、存储由可编程电路执行的指令的软件和/或固件。电路可以体现为集成电路,诸如集成电路芯片。软件和/或应用可以体现为可以在诸如主机处理器或其它可编程电路之类的可编程电路上执行的代码或指令。
[0037]因而,本公开内容提供用于二进制转化重用的系统、设备、方法和计算机可读介质。以下不例关于另外的实施例。
[0038]根据示例I,提供了一种用于二进制转化重用的系统。所述系统可以包括二进制转化模块,用以将代码区从第一指令集架构(ISA)转化成第二ISA,以用于与第一过程相关联的执行。该示例的二进制转化模块还可以被配置成存储与经转化的代码和第一过程相关联的第一物理页号。该示例的系统还可以包括处理器以执行经转化的代码并且更新与执行相关联的虚拟地址指令指针。该示例的系统还可以包括转化重用模块,以针对由第二过程的重用而验证经转化的代码。验证可以包括基于经更新的虚拟地址指令指针的页表映射来生成第二物理页号;并且匹配第二物理页号与所存储的第一物理页号。
[0039]示例2可以包括前述示例的元件,并且所述二进制转化模块还存储与经转化的代码和第一过程相关联的虚拟地址指令指针的偏移;并且所述页表映射还基于所存储的偏移。
[0040]示例3可以包括前述示例的元件,并且二进制转化模块还存储与经转化的代码和第一过程相关联的第一页属性;并且所述处理器还确定与经转化的代码和第二过程相关联的经更新的页属性;并且所述验证还包括匹配所存储的第一页属性与经更新的页属性。[0041 ] 示例4可以包括前述示例的元件,并且如果所述验证没有通过的话,所述二进制转化模块还执行代码区的第二二进制转化以用于与第二过程相关联的执行。
[0042]示例5可以包括前述示例的元件,并且所述系统还包括寄存器(FL_RIP)以维护经更新的虚拟地址指令指针,并且所述处理器提供指令(ADDRIP)来修改FL_RIP寄存器中的虚拟地址指令指针的偏移,所述ADDRIP指令相关联于第二 ISA。
[0043]示例6可以包括前述示例的元件,并且与经转化的代码相关联的虚拟页号由于地址空间布局随机化(ASLR)而在第一过程和第二过程之间不同。
[0044]示例7可以包括前述示例的元件,并且所述二进制转化还包括将序嵌入在经转化的代码区中,所述序包括指令以:存储第一物理页号和偏移;并且响应于检测到二进制转化的执行越过了存储器页边界而执行验证。
[0045]示例8可以包括前述示例的元件,并且虚拟地址指令指针的更新与分支指令的执行相关联地被执行。
[0046]示例9可以包括前述示例的元件,并且页表被高速缓存在转化后备缓冲器(TLB)中。
[0047]示例10可以包括前述示例的元件,并且所述系统是智能电话、膝上型计算设备、智能TV或智能平板设备。
[0048]示例11可以包括前述示例的元件,并且所述系统还包括用户接口,并且所述用户接口是触摸屏。
[0049]根据示例12,提供了一种用于二进制转化重用的方法。所述方法可以包括执行代码区从第一指令集架构(ISA)到处理器的第二 ISA的二进制转化,所述二进制转化用于与第一过程相关联的执行。该示例的方法还可以包括存储与二进制转化和第一过程相关联的第一物理页号。该示例的方法还可以包括存储与二进制转化和第一过程相关联的虚拟地址指令指针的偏移。该示例的方法还可以包括在由处理器的执行期间更新虚拟地址指令指针。该示例的方法还可以包括检验二进制转化对于用于与第二过程相关联的执行的重用是有效的。检验可以包括基于页表映射而生成第二物理页号,所述映射基于经更新的虚拟地址指令指针和所存储的偏移;并且匹配第二物理页号与所存储的第一物理页号。
[0050]示例13可以包括前述示例的元素,并且还包括存储与二进制转化和第一过程相关联的第一页属性;并且确定与二进制转化和第二过程相关联的经更新的页属性;并且所述检验还包括匹配所存储的第一页属性与经更新的页属性。
[0051 ] 示例14可以包括前述示例的元素,并且还包括如果所述检验没有通过则执行代码区的第二二进制转化以用于与第二过程相关联的执行。
[0052]示例15可以包括前述示例的元素,并且虚拟地址指令指针的更新还包括在寄存器(FL_RIP)中维护虚拟地址指令指针;并且执行指令(ADDRIP)来修改FL_RIP寄存器中的虚拟地址指令指针的偏移,并且所述ADDRIP指令相关联于第二 ISA。
[0053]示例16可以包括前述示例的元素,并且与二进制转化相关联的虚拟页号由于地址空间布局随机化(ASLR)而在第一过程和第二过程之间不同。
[0054]示例17可以包括前述示例的元素,并且所述二进制转化还包括将序嵌入在经转化的代码区中,所述序包括指令以:存储第一物理页号和偏移;并且响应于检测到二进制转化的执行越过了存储器页边界而执行检验。
[0055]示例18可以包括前述示例的元素,并且虚拟地址指令指针的更新与分支指令的执行相关联地被执行。
[0056]示例19可以包括前述示例的元素,并且页表被高速缓存在转化后备缓冲器(TLB)中。
[0057]根据示例20,提供了一种用于二进制转化重用的系统。所述系统可以包括用于执行代码区从第一指令集架构(ISA)到处理器的第二 ISA的二进制转化的构件,所述二进制转化用于与第一过程相关联的执行。该示例的系统还可以包括用于存储与二进制转化和第一过程相关联的第一物理页号的构件。该示例的系统还可以包括用于存储与二进制转化和第一过程相关联的虚拟地址指令指针的偏移的构件。该示例的系统还可以包括用于在由处理器的执行期间更新虚拟地址指令指针的构件。该示例的系统还可以包括用于检验二进制转化对于用于与第二过程相关联的执行的重用是有效的构件。检验可以包括用于基于页表映射而生成第二物理页号的构件,所述映射基于经更新的虚拟地址指令指针和所存储的偏移;和用于匹配第二物理页号与所存储的第一物理页号的构件。
[0058]示例21可以包括前述示例的元件,并且还包括用于存储与二进制转化和第一过程相关联的第一页属性的构件;和用于确定与二进制转化和第二过程相关联的经更新的页属性的构件;并且所述检验还包括用于匹配所存储的第一页属性与经更新的页属性的构件。
[0059]示例22可以包括前述示例的元件,并且还包括用于如果所述检验没有通过则执行代码区的第二二进制转化以用于与第二过程相关联的执行的构件。
[0060]示例23可以包括前述示例的元件,并且虚拟地址指令指针的更新还包括用于在寄存器(FL_RIP)中维护虚拟地址指令指针的构件;和用于执行指令(ADDRIP)来修改FL_RIP寄存器中的虚拟地址指令指针的偏移的构件,并且所述ADDRIP指令相关联于第二 ISA。
[0061]示例24可以包括前述示例的元件,并且与二进制转化相关联的虚拟页号由于地址空间布局随机化(ASLR)而在第一过程和第二过程之间不同。
[0062]示例25可以包括前述示例的元件,并且所述二进制转化还包括用于将序嵌入在经转化的代码区中的构件,所述序包括指令以:存储第一物理页号和偏移;并且响应于检测到二进制转化的执行越过了存储器页边界而执行检验。
[0063]示例26可以包括前述示例的元件,并且虚拟地址指令指针的更新与分支指令的执行相关联地被执行。
[0064]示例27可以包括前述示例的元件,并且页表被高速缓存在转化后备缓冲器(TLB)中。
[0065]根据另一示例,提供了至少一个计算机可读存储介质,其具有存储在其上的指令,所述指令在由处理器执行时使得处理器执行如在以上任何示例中所述的方法的操作。
[0066]根据另一示例,提供了一种装置,其包括用以执行如在以上任何示例中所述的方法的构件。
[0067]在本文中采用的术语和表述用作描述的术语而非限制的术语,并且没有意图在这样的术语和表述的使用中排除所示和所述特征(或其部分)的任何等同物,并且认识到,在权利要求的范围内,各种修改是可能的。因此,权利要求意图涵盖所有这样的等同物。在本文中已经描述了各种特征、方面和实施例。所述特征、方面和实施例能容许与彼此组合以及变型和修改,如本领域技术人员将理解的那样。本公开内容因此应当被认为包括这样的组合、变型和修改。
【主权项】
1.一种用于二进制转化重用的系统,所述系统包括: 二进制转化模块,用以将代码区从第一指令集架构(ISA)转化成第二ISA,以用于与第一过程相关联的执行;所述二进制转化模块还存储与所述经转化的代码和所述第一过程相关联的第一物理页号; 处理器,用以执行所述经转化的代码并且更新与所述执行相关联的虚拟地址指令指针; 转化重用模块,以针对由第二过程的重用而验证所述经转化的代码,所述验证包括: 基于所述经更新的虚拟地址指令指针的页表映射来生成第二物理页号;并且 匹配所述第二物理页号与所述所存储的第一物理页号。2.根据权利要求1所述的系统,其中所述二进制转化模块还存储与所述经转化的代码和所述第一过程相关联的所述虚拟地址指令指针的偏移;并且所述页表映射还基于所述所存储的偏移。3.根据权利要求1所述的系统,其中所述二进制转化模块还存储与所述经转化的代码和所述第一过程相关联的第一页属性;并且所述处理器还确定与所述经转化的代码和所述第二过程相关联的经更新的页属性;其中所述验证还包括匹配所述所存储的第一页属性与所述经更新的页属性。4.根据权利要求1所述的系统,其中如果所述验证没有通过的话,所述二进制转化模块还执行所述代码区的第二二进制转化以用于与所述第二过程相关联的执行。5.根据权利要求1所述的系统,还包括寄存器(FL_RIP)以维护所述经更新的虚拟地址指令指针,其中所述处理器提供指令(ADDRIP)来修改所述FL_RIP寄存器中的所述虚拟地址指令指针的偏移,所述ADDRIP指令相关联于所述第二 ISA。6.根据权利要求1所述的系统,其中与所述经转化的代码相关联的虚拟页号由于地址空间布局随机化(ASLR)而在所述第一过程和所述第二过程之间不同。7.根据权利要求2所述的系统,其中所述二进制转化还包括将序嵌入在所述经转化的代码区中,所述序包括指令以: 存储所述第一物理页号和所述偏移;并且 响应于检测到所述二进制转化的执行越过了存储器页边界而执行所述验证。8.根据权利要求1所述的系统,其中所述虚拟地址指令指针的所述更新与分支指令的执行相关联地被执行。9.根据权利要求1所述的系统,其中所述页表被高速缓存在转化后备缓冲器(TLB)中。10.根据权利要求1所述的系统,其中所述系统选自包括以下各项的组中:智能电话、膝上型计算设备、智能TV和智能平板设备。11.根据权利要求1所述的系统,还包括用户接口,其中所述用户接口是触摸屏。12.—种用于二进制转化重用的方法,所述方法包括: 执行代码区从第一指令集架构(ISA)到处理器的第二 ISA的二进制转化,所述二进制转化用于与第一过程相关联的执行; 存储与所述二进制转化和所述第一过程相关联的第一物理页号; 存储与所述二进制转化和所述第一过程相关联的虚拟地址指令指针的偏移; 在由所述处理器的执行期间更新所述虚拟地址指令指针;以及 检验所述二进制转化对于用于与第二过程相关联的执行的重用是有效的,其中所述检验包括: 基于页表映射而生成第二物理页号,所述映射基于所述经更新的虚拟地址指令指针和所述所存储的偏移;并且 匹配所述第二物理页号与所述所存储的第一物理页号。13.根据权利要求12所述的方法,还包括: 存储与所述二进制转化和所述第一过程相关联的第一页属性;并且确定与所述二进制转化和所述第二过程相关联的经更新的页属性;其中所述检验还包括匹配所述所存储的第一页属性与所述经更新的页属性。14.根据权利要求12所述的方法,还包括如果所述检验没有通过则执行所述代码区的第二二进制转化以用于与所述第二过程相关联的执行。15.根据权利要求12所述的方法,其中所述虚拟地址指令指针的所述更新还包括: 在寄存器(FL_RIP)中维护所述虚拟地址指令指针;并且 执行指令(ADDRIP)来修改所述FL_RIP寄存器中的所述虚拟地址指令指针的偏移,其中所述ADDRIP指令相关联于所述第二 ISA。16.根据权利要求12所述的方法,其中与所述二进制转化相关联的虚拟页号由于地址空间布局随机化(ASLR)而在所述第一过程和所述第二过程之间不同。17.根据权利要求12所述的方法,其中所述二进制转化还包括将序嵌入在所述经转化的代码区中,所述序包括指令以: 存储所述第一物理页号和所述偏移;并且 响应于检测到所述二进制转化的执行越过了存储器页边界而执行所述检验。18.根据权利要求12所述的方法,其中所述虚拟地址指令指针的所述更新与分支指令的执行相关联地被执行。19.根据权利要求12所述的方法,其中所述页表被高速缓存在转化后备缓冲器(TLB)中。20.具有存储在其上的指令的至少一个计算机可读存储介质,所述指令在由处理器执行时导致用于二进制转化重用的以下操作,所述操作包括: 执行代码区从第一指令集架构(ISA)到处理器的第二 ISA的二进制转化,所述二进制转化用于与第一过程相关联的执行; 存储与所述二进制转化和所述第一过程相关联的第一物理页号; 存储与所述二进制转化和所述第一过程相关联的虚拟地址指令指针的偏移; 在由所述处理器的执行期间更新所述虚拟地址指令指针;以及检验所述二进制转化对于用于与第二过程相关联的执行的重用是有效的,其中所述检验包括: 基于页表映射而生成第二物理页号,所述映射基于所述经更新的虚拟地址指令指针和所述所存储的偏移;和 匹配所述第二物理页号与所述所存储的第一物理页号。21.根据权利要求20所述的计算机可读存储介质,还包括以下操作: 存储与所述二进制转化和所述第一过程相关联的第一页属性;和 确定与所述二进制转化和所述第二过程相关联的经更新的页属性;其中所述检验还包括匹配所述所存储的第一页属性与所述经更新的页属性的操作。22.根据权利要求20所述的计算机可读存储介质,还包括如果所述检验没有通过则执行所述代码区的第二二进制转化以用于与所述第二过程相关联的执行。23.根据权利要求20所述的计算机可读存储介质,其中所述虚拟地址指令指针的所述更新还包括以下操作: 在寄存器(FL_RIP)中维护所述虚拟地址指令指针;和 执行指令(ADDRIP)来修改所述FL_RIP寄存器中的所述虚拟地址指令指针的偏移,其中所述ADDRIP指令相关联于所述第二 ISA。24.根据权利要求20所述的计算机可读存储介质,其中与所述二进制转化相关联的虚拟页号由于地址空间布局随机化(ASLR)而在所述第一过程和所述第二过程之间不同。25.根据权利要求20所述的计算机可读存储介质,其中所述二进制转化还包括将序嵌入在所述经转化的代码区中的操作,所述序包括指令以: 存储所述第一物理页号和所述偏移;并且 响应于检测到所述二进制转化的执行越过了存储器页边界而执行所述检验。26.根据权利要求20所述的计算机可读存储介质,其中所述虚拟地址指令指针的所述更新与分支指令的执行相关联地被执行。27.根据权利要求20所述的计算机可读存储介质,其中所述页表被高速缓存在转化后备缓冲器(TLB)中。
【文档编号】G06F9/30GK106062708SQ201580014695
【公开日】2016年10月26日
【申请日】2015年3月10日 公开号201580014695.1, CN 106062708 A, CN 106062708A, CN 201580014695, CN-A-106062708, CN106062708 A, CN106062708A, CN201580014695, CN201580014695.1, PCT/2015/19567, PCT/US/15/019567, PCT/US/15/19567, PCT/US/2015/019567, PCT/US/2015/19567, PCT/US15/019567, PCT/US15/19567, PCT/US15019567, PCT/US1519567, PCT/US2015/019567, PCT/US2015/19567, PCT/US2015019567, PCT/US201519567
【发明人】D.N.麦克金托什, J.H.克尔姆, N.A.坎贝尔
【申请人】英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1