利用白盒密码术的联锁二进制保护的制作方法

文档序号:6349885阅读:206来源:国知局
专利名称:利用白盒密码术的联锁二进制保护的制作方法
技术领域
本发明概括地涉及密码术和计算机安全。更具体地,本发明涉及用于保护二进制应用免受静态和动态攻击的方法。本申请要求于2009年5月6日提交的第61/175,945号美国临时申请的优先权,该申请的全部内容通过引用并入本文。
背景技术
在信息技术时代,越来越多的应用将被运用在对直接攻击完全开放的数以亿计的装置上。停止并阻止攻击成为软件设计者关注的重点。如今的软件正被越来越复杂的工具破解,这使得一般用户仅利用很少的现有知识或者无需现有知识就可访问敏感信息。先前的安全模式假设如果受保护过程在黑盒中运行,则输出就是安全的(即,攻击者不能查看黑盒内运行的过程),但这种模式不再有效。根据攻击的性质,安全漏洞被攻击者利用,从而侵害了一个或多个安全性能。通常,类似调试的活动代表最常见的、允许黑客理解应用的全部或详细操作的攻击来源。一旦黑客可访问重要的数据和代码,则计算出攻击点以进行其进一步的攻击只是时间问题。随后,攻击者通过执行克隆程序、通过使二进制程序出错或者简单地通过准予访问敏感信息或版权信息(部分或全部复制关键代码)来损害系统安全性。此外,现代操作系统包含向例如内存提升(memory lifting)攻击的其它攻击提供良好供应库(arsenal)的特征。攻击者能够利用由操作系统提供的任务管理应用程序界面 (API)。例如,将每个多进程操作系统的特有进程终止的API允许攻击者在该过程冻结在存储器中时访问重要信息。虽然软件安全性需要解决所有这些攻击,但是目前的安全引擎忽略了许多安全因素,并使得安全引擎仅集中于特定的安全考虑而完全忽略了其它的安全威胁。例如,反调试技术仅对调试器的存在进行检测,而不能保护应用免受内存提升攻击。密码术隐藏重要信息,但是不能对其内部和其自身进行保护而免受调试活动。另一有益的示例是保护应用免受篡改攻击的完整性验证,但是不能阻止静态或动态分析攻击。作为通用的范例,每一种安全技术解决一个或一些攻击,而不是整个攻击领域。因此,期望提供一种安全系统,其提供抵御各种攻击领域的保护。此外,提出了软件模糊和转换技术以转换应用的源代码。然而,本发明提出了一种包括应用二进制级别转换的改进的安全措施,其包括在源代码已被编译后应用二进制级别转换。

发明内容
本发明的目的是消除或减缓先前的安全系统中至少一个缺陷。本发明的一个方面提供一种保护包括二进制代码及任选关联数据的软件应用从原形式至更安全形式的方法,该更安全形式抵抗试图篡改、逆向改造或提升该应用的全部或部分的静态和/或动态攻击,所述系统包括a.提供构建时工具组以对所述应用执行二进制转化准备,并且通过利用该工具组将所述应用的原执行转换成安全的执行;以及b.产生语义等同于原应用、包括联锁的转化执行的受保护应用,该联锁的转化执行还与转化准备联锁,以使得二进制保护不再与受保护的应用分离。在这个文本中术语“语义等同”应解释为“产生相同的结果或输出”。转化是对应用的一种变化,其不只包括简单转换,在这个意义上转换通常包括这样的操作,其中存在逆操作以将该转换引起的变化逆转,而转化代表没有简单逆操作的更明显的变化。转化包括两个阶段-转化准备,其在构建时期间将一系列变化应用到应用代码上,并且植入与已改变的应用代码紧密相关(intertwine)的新代码;以及-转化执行,其在执行包括被植入代码的受保护应用期间进行已准备好的转化保护。限定于(A)中的不同类型的转化被应用于应用的各种粒度(granularity),该粒度包括包括应用的模块、包括模块的函数、包括函数的指令基础块、以及单个机器指令。不同类型的转化包括模块转化、函数转化、块转化、指令转化、完整性验证(IV)转化以及反调试转化。转化合并有一种或多种白盒转换。保护过程被分成两个阶段(A)构建时阶段,其中软件应用在执行之前被静态分析并转换;以及(B)运行时阶段,其中被转换的软件应用在存储器中运行。本发明的一个方面提供了一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,该安全形式抵抗试图篡改、逆向改造或提升所述应用全部或部分的静态和/或动态攻击,所述方法包括在构建时阶段通过对所述二进制应用代码产生一系列变化以产生被改变的二进制应用代码,以对所述二进制软件应用执行多个二进制转化的组合,所述变化包括在构建时期间植入与所述被改变的二进制应用代码紧密相关的新代码;以及通过在所述转化之间生成并设置依存性来联锁所述转化;应用所述转化的组合并联锁至待保护的二进制应用代码和被植入的代码;以及产生语义等同于原应用但包括所述已联锁转化的受保护应用,以使得所述二进制保护不再与受保护应用分离。发明的另一方面提供了将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,该安全形式抵抗试图篡改、逆向改造或提升该应用的全部或部分的静态和/或动态攻击,所述方法包括分析所述二进制应用以确定至少一种二进制应用能够应用于其上的所述应用中的至少一个组件,所述组件包括组件代码;对所述组件代码执行一系列变化以产生被改变的组件代码,所述变化包括对所述组件代码应用至少一种WB转换以及将与所述转换紧密相关的新代码植入所述二进制应用代码中;通过在所述变化之间生成并设置依存性来联锁所述变化;以及应用所述变化并且联锁至待保护的二进制应用代码和被植入的代码,以产生语义等同于原应用但包括所述联锁转换的已转化应用,以使得二进制保护不再与受保护应用分
13离ο优选地,所述受保护应用的安全执行包括联锁的转化执行,其被配置使得在其执行的任何时间过程中仅一小部分的二进制代码处于清除形式。在构建时,该系统能够与白盒转换构建时设备交互以生成并集合白盒转换密钥和操作代码,并且通过执行具有白盒转换构建时密钥的白盒转换操作来将所述二进制代码和相关的重要信息从输入形式转换为输出形式。在运行时,该系统能够与白盒转换运行时设备交互,通过执行具有白盒转换运行时密钥的白盒转换逆操作以将二进制代码和相关的重要信息从输出形式转换回输入形式。在回顾了本发明的特定实施方式的下列描述连同附图之后,本发明的其它方面和特征对本领域普通技术人员来说将变得显而易见。


图1示出了根据本发明的示例性实施方式的自动白盒(WB)代码生成的WB过程;图2示出了根据本发明的示例性实施方式用于转换和逆转换过程的自动白盒密钥生成;图3描绘了根据本发明的示例性实施方式提出的自动被插入受保护的二进制应用中作为联锁的安全层、具有首要安全组件的二进制保护系统;图4示出了根据本发明的示例性实施方式作为预链接保护过程的一部分的、包括使用代码转换器的保护过程的示意图;图5示出了根据本发明的示例性实施方式源代码转换如何被应用到由待保护的应用所使用的代码以及包括二进制保护技术的代码上;图6示出了根据本发明的示例性实施方式在构建时处理之后的受保护二进制应用模块的结构;图7示出了根据本发明的示例性实施方式输入为二进制应用的保护流程;图8描绘了根据本发明的示例性实施方式块转化组件的保护流程;图9示出了根据本发明的示例性实施方式具有模块转化组件的保护过程;图10示出了根据本发明的示例性实施方式具有对试图修改受保护应用的行为的篡改攻击进行检测的完整性验证组件的保护过程;图11是根据本发明的示例性实施方式,在运行时受保护应用如何安全执行的全貌图;图12示出了根据本发明的示例性实施方式在运行时执行期间的模块转化(MT)组件;图13示出了根据本发明的示例性实施方式的完整性验证组件的运行时过程;图14通过示出具有和没有IV的运行时函数处理的自动IV调用的示例描绘了根据本发明的示例性实施方式;图15示出了根据本发明的示例性实施方式在运行时执行期间的函数转化(FT)组件;图16示出了根据本发明的示例性实施方式的块转化(BT)的运行时过程;图17示出了根据本发明的实施方式受保护应用在执行的不同时刻处的示例;
14
图18示出了根据本发明的实施方式的动态函数加载的构建时过程;图19描述了根据本发明的实施方式的动态函数加载的运行时过程;图20示出了根据本发明的实施方式的动态函数加载的过程的第一阶段的示例;图21示出了根据本发明的实施方式的动态函数加载的过程的第二阶段的示例;图22示出了根据本发明的实施方式的动态函数加载的过程的第三阶段的示例;图23示出了根据本发明的实施方式的动态函数加载的过程的第四阶段的示例;图M示出了根据本发明的实施方式的最终阶段,其中调用应用可请求安全地消除函数;图25示出了根据本发明的实施方式,关于具有代码转化和联锁的动态函数加载的构建时过程的示例;图沈描绘了根据本发明的实施方式的BT和IV组件的已联锁形式;图27示出了根据本发明的实施方式的密钥分拆的示例,其中在保护时,隐藏的解密密钥被分解;图观示出了根据本发明的实施方式形成相继嵌套层的程序的不同粒度或组件;图四示出了根据本发明的示例性实施方式的相继嵌套层以及转化如何被应用于其上。
具体实施例方式概括地,本发明提供了用于将包括二进制代码及可选关联数据的软件应用从原形式转换为更安全形式的系统和方法。该方法包括对应用执行二进制转化的组合,以及通过在转化之间生成并布置相互依赖性来将转化联锁,其中转化实际上是应用的不可逆变化。 事实上,关于所包含的难度,已联锁的转化组合对应用产生转化,这种转化实际上是不可逆的,这是因为联锁不仅使所应用转换的逆向改造变得困难,而且简单地应用逆向转换也不能恢复原代码。需要明确,不可逆不一定意味着整个过程在形而上学的意义下都不能被逆转,而是意味着实际上来说,将转化逆向不会将用于保护目的所提交的精确原程序恢复。不同类型的转化被应用于应用的各种粒度或层中。转化被应用于应用代码以及植入的代码。 这样的结果是被转换的软件应用在语义上相当于原软件应用但对静态和/或动态攻击有抵抗力。注意使用术语“植入(implant)”以阐明过程通常不仅包括代码的简单插入。使用 “植入”来包括对原代码的替代和/或修改,以使被插入的新代码能够在已改变的应用中运行。如上所述,本发明应用了各种粒度或层上的转换组合,这些转换组合是联锁的以使得没有简单的逆转换。图观示出了这些不同的粒度,其形成相继嵌套层。应用601能包括一个或多个模块610,模块610封装(encapsulate) —个或多个函数620,函数620封装一个或多个块630,块630能封装一个或多个指令640。本发明的实施方式将不同的转换应用于这些相继嵌套层中的每一层,并且还在它们之间增加依存性。本发明的实施方式在消除安全架构差距的后链接二进制保护系统内将各种技术结合并互连。连同白盒密码术,本发明的实施方式允许一种包括被应用到待保护代码的二进制转化的组合的防御策略。在共同拥有的第7,397,916号美国专利和第11/020,313号美国专利申请中公开了白盒密码术的实施方式,该专利和专利申请的全部内容通过引用并入本文;在共同拥有的第6,594,761号、第6,779,114号和第6,842,862号美国专利,以及第 11/039,817号美国专利申请中也公开了白盒密码术的实施方式,这些专利和专利申请的全部内容通过引用并入本文。这些转化描述如下 反调试转化(AD)检查受保护应用是否被附接至调试器。 块转化(BT)在受保护应用在存储器中运行时提供抵御动态代码分析和攻击的二进制保护。其主要任务包括将二进制应用分拆成白盒转换的块,然后在运行时经请求将转换除去并在执行后将块毁坏。因此,仅当前执行的代码块被暴露。 函数转化(FT)充当块转化,但是将白盒转换应用到能包含许多函数块的函数中,并且在运行时调用函数时除去该转换,并且从该函数返回之后毁坏该函数。 完整性验证转化(IV)确保受保护应用在存储器中的代码段或者其组件中的任何一个没有被篡改和/或应用组件的磁盘图像没有被修改。 模块转化(MT)在二进制代码被加载存储器之前提供抵御静态代码分析和攻击的二进制保护。 指令转化(IT)利用白盒转换修改单个指令以使得指令必须具有在执行之前除去的转换。此外,这些变化甚至可以包括改变受保护的指令自身(例如,将进入和退出处理器插入或者通过请求由从其初始值改变的指令所操控的地址)。实施方式允许选择一组安全选项,这组安全选项确定这些转化如何优选地自动应用到处于联锁形式的二进制应用模块上。通过联锁,在应用中产生依存性,以使得在最终被转换的应用中已联锁的两个组件中的每一个都需要另一个的存在。例如,完整性验证调用被嵌入块或函数的每次执行,以使得如果没有成功的IV调用,则块或函数就不再正确运行,而且IV调用仅当块或函数没有被篡改时成功。此外,安全组件自身得到其他安全组件的保护(即,完整性验证保护函数转化引擎,而块转化保护完整性验证)。除了反调试之外,以上提出的转化能够利用白盒转换以增加安全性。白盒转换通过以下事实来识别,即如果应用被暴露给攻击者,密钥和转换算法也得到保护。然而,由于数学转换被应用到仅由转换代码已知的密钥上,所以密钥决不会处于清除形式。图1和2 描绘了这个规则中引起的白盒技术。图1示出了用于转换和逆转换过程的自动代码生成10,而图2示出了用于转换15 和逆转换20过程的自动白盒密钥生成。从相同的密钥和转换算法25生成WB逆转换代码 20以及隐藏密钥35。另外,每个隐藏WB密钥35与逆转换20相关联,逆转换20通过WB转换代码15将转换逆转。在保护阶段,用户能够利用允许每个安全组件具有其自身的白盒密钥组的各种WB密钥。例如,安全性验证组件和模块转化组件能够利用不同的密钥。此外, 函数转化组件利用多个密钥来转换函数。为了调整交易的安全性能,用户具有很多白盒转换技术,范围从复杂的AES加密算法到例如XOR操作的简单转换。这将在下面的密钥分拆部分中更详细地讨论。二进制保护系统图3描绘了根据本发明的示例性实施方式提出的二进制保护系统100与其最主要的安全组件,二进制保护系统被自动插入受保护的二进制应用中作为联锁的安全层。每个安全层由可执行代码实现,无论层是否实现IV转化125、FT转化130、BT转化135或MT转化120。要在层之间产生联锁关系,则安全层及其保护的代码均由具有前趋/后继关系的代码来实现。应该理解,图3实际上是示意性的。MT、FT、BT、以及指令转化(IT)(未示出) 均优选设置在一系列层间转化的相继嵌套层中(即,MT封装FT、FT转而封装BT、BT转而封装IT,如图观所示),其中IV 125和ADB 140能被应用于层间基础上(即,被应用到每个嵌套层上、或者一组层上、或者整个受保护应用上)。此外,安全层按顺序执行。当每一层获得控制时,为了适当地执行,每一层能被设定成依赖于前一层产生的值。例如,MT加载具有特定误差的可执行代码,在执行期间这些特定误差通过FT或BT来修正。二进制保护工具接收一组安全选项110的输入,安全选项 110允许并供应所需的安全组件。另外,用户提供与安全组件耦接的转换密钥。此外,二进制工具允许用户将一组转换密钥关联至安全组件。例如,函数转化组件用不同的密钥来转换函数。实施方式提供了与高级别的源代码保护联锁的能力。例如,用户能够在源代码中应用转换以增加安全性。这些高级别的转换通过代码转换器自动地应用。在共同拥有的第 6,594,761号、第6,779,114号和第6,842,862号美国专利、以及第11/039, 817号美国专利申请中可找到代码转换器的详细信息,以上专利和专利申请的全部内容通过引用并入本文。图4示出了关于源代码也被转换的实施方式的保护过程的示意图,该保护过程包括作为预链接保护过程一部分的代码转换器220的使用。二进制保护系统100框可被认为包括图3中描绘的全部框图。此外,在源级别处,用户插入一些安全机制,但是这些安全机制提供的保护并不完全,直至二进制级别明确的安全引擎也被插入。例如,在源代码中用户采用一些安全API,但是在链接之后,当相应的安全组件在二进制级别处被插入后生成的二进制才变得更加安全。在图4中二进制保护库230代表用户与安全组件之间的接口。二进制保护库230 是提供一组API以支持由程序产生的安全请求的静态库。这些API提供完整性验证以及反调试功能性。二进制保护过程中的另一个重要模块是常驻安全模块(RSM) 300,其包含五个最主要的安全组件引擎。下面将更详细地讨论RSM。在后链接保护阶段,常驻安全模块300 封装有应用二进制模块200(称为有效载荷)。有效载荷模块被分解成白盒转换的块或函数,然后被压缩并转换为整体且被RSM封装入受保护应用中。新的受保护应用替代了在已部署应用中的原可执行程序和共享的库。此外,常驻安全模块包含主要安全组件的运行时引擎、白盒逆转换代码程序以及被转换的密钥。整个后链接保护过程是自动的。除了当进行安全选项选择时,用户不与常驻安全模块交互。二进制保护库与常驻安全模块均是受保护的高级别代码,并且结合源代码转换,如在图5中概述的那样。如图5中所示,源代码转换能够被应用到待保护的应用所使用的代码以及包括二进制保护技术的代码上。也就是说, 通过利用源代码转换使攻击变得困难,链接至待保护应用的库以及在保护阶段被插入应用中的代码能具有增强的安全性。如上所述,本文所描述的方法和系统概括地分为构建时特征/组件以及运行时特征/组件。图6示出了根据本发明的示例性实施方式在构建时处理之后,受保护二进制应用模块的结构。根本地,受保护二进制应用的结构由常驻安全模块300及其被转换的有效载荷350组成。常驻安全模块实现静态和动态保护。其包含无需用户交互的安全组件,例如白盒逆转换例程(routine)、自动的完整性验证和反调试引擎、以及动态块排列管理器。 此外,常驻安全模块负责在运行时阶段将有效载荷加载存储器中。然后常驻安全模块保持常驻(或者其中的部分这样做),以使得能够为各种二进制转化提供服务。例如,经访问用于函数保护的进入处理器,该处理器能够调用RSM以获得被解密函数的其余内容等。构津时处理图6能通过对构建上述受保护二进制应用模块的过程(即,构建时过程)进行讨论而被很好地理解。这个部分描述了每个安全组件的保护阶段以及其如何单独应用。描绘并分析了受保护二进制应用的保护流程和结构。此外,该部分指出了安全组件之间的交互。 通常,这些安全组件直接自动地应用于二进制应用。安全组件的安全引擎常驻于常驻安全模块300中。通常没有要求安装安全组件的用户交互。二进制应用被大量转换并被包括成为常驻安全模块的有效载荷350。因此,有效载荷例如包括被转换的函数410(以及用于每个被转换的函数的进入和退出处理器(未示出))。根据所需的安全技术,应用在二进制级别下被修改并且在几个阶段被转换。当二进制应用受模块转化保护时,有效载荷的结构是不重要的;有效载荷被看作单个实体。然而,完整性验证和反调试组件能具有需要用户交互的另外的模式。在这种情况下,安全组件的功能性引擎常驻于静态地链接至被保护的二进制应用的二进制保护库230 中。特别注意到,安全组件能以各种模式应用。例如,如果用户应用完整性验证API,则完整性验证组件可在链接阶段103应用。此外,完整性验证能够被再次应用于所产生的作为后链接保护一部分的二进制而没有任何冲突。函数转化-构建时图7示出了根据本发明的示例性实施方式的保护流程,其中输入为二进制应用。 函数转化是阻止应用免受动态攻击的后链接保护技术。原二进制应用105被分解成其复合
函数(例如,函数1、函数2、函数3.....函数N),然后通过FT处理块130用WB算法来转换
这些复合函数。FT处理130通过白盒转换构建时设备140来执行,白盒转换构建时设备140 生成并集合用于每个函数的白盒转换密钥和操作代码。然后,每个被转换的函数410被包括作为常驻安全模块的有效载荷。FT处理还安装用于每个函数的进入和退出处理器420。 每个函数用其自身的白盒密钥(以及其自身的转换代码)来转换,因而生成的受保护二进制模块包含用于每个函数的隐藏的WB逆转换密钥(转换代码)。此时,为了避免术语密钥与代码之间的任何混淆,应澄清,代码指的是用于执行通常使用唯一密钥的转换的算法/ 软件代码。函数转换组件的益处是对在执行期间的任何给定时刻处于清除形式的函数数量进行限制。此外,常驻安全模块拦截对被转换的函数410的调用,并且与用于每个函数的进入和退出处理器420合作。进入处理器负责对函数的WB转换进行逆转并负责白盒密钥管理,而退出处理器破坏存储器中的函数。因此,通过进入处理器执行对函数的调用,而通过退出处理器从函数返回。除了函数转化组件特有的操作(函数转化和破坏)之外,进入和退出处理器还执行各种操作块排列、完整性检查、测试调试器的存在等。应该注意,附图本质上是示意性的并且被包括的目的是示出系统如何运行,并不意味着包括一切。因此,图6 没有示出进入和退出处理器(主要为了避免过于杂乱),而图7仅示出了 RSM以及与被转换函数自身相关的有效载荷的部分。
块转化-构津时图8描绘了根据本发明的示例性实施方式的块转化组件135的保护流程,当受保护应用在存储器中运行时该保护流程提供免受动态代码分析和攻击的二进制保护。块转化通过插入并替换二进制指令来修改二进制应用。另外,二进制应用代码被分解成白盒转换块,该白盒转换块需要被转换回可执行状态以被执行,这个情况在运行期间经请求发生。BT 处理块135将应用二进制模块分解成其需要的函数,然后将每个函数分成块。然后,BT处理块135利用白盒转换代码来转换块。BT对应用二进制结构影响最大。用BT保护的函数被明显修改。例如,原始指令中的一些被新的指令替代,而另外一些在函数地址空间中重新定位。由于插入新的指令,用BT保护的每个函数的数据量更大。因此,BT保护的函数被重新定位于专用的二进制位置。在运行时,用BT保护的函数包括被分成WB转换的块440的大代码段。块被分成组,并且块中的每一组用唯一的白盒密钥转换。生成的二进制应用保持其原始行为,但是更不易被篡改。被转换的白盒密钥和逆转换例程是受保护的二进制模块的一部分。此外,在程序执行期间原应用的控制流程时常被中断并改变,以阻止二进制应用受到自动攻击。常驻安全模块包含随机修改块的物理存储地址的动态块排列管理器155。 白盒转换块被包含在与常驻安全模块紧密配合的有效载荷中。樽块转化-构津时图9示出了根据本发明的示例性实施方式的利用模块转化120组件的保护过程, 模块转化120组件保护二进制应用免受静态分析和攻击。一般来说,受保护应用能由若干模块(可执行程序和共享库)构成,在这种情况下该过程为每个模块重复,以使得受保护应用包括多个被转化模块。原二进制应用105被转换、压缩,然后被包括作为常驻安全模块的有效载荷。生成的受保护二进制模块替代部署的应用中的原模块。图9中右手方框展现了用模块转化保护的应用二进制模块200的结构。除了将应用加载存储器用于静态保护的功能性之外,常驻安全模块300包含程序从而在执行期间对有效载荷360执行逆转换,而且常驻安全模块300包括完整性验证能力。图9仅示出了有效载荷360的一部分,其形成有效载荷350的部分。完整性验证-构建时图10示出根据本发明的示例性实施方式,对试图修改受保护应用的行为的篡改攻击进行检测的完整性验证组件的保护过程。在构建时,输入二进制模块是数字签名的,产生了凭单(voucher)数据。凭单包含关于受保护应用的签名集以及其它相关信息。凭单数据通过IV过程125利用白盒算法来转换,并且已转换的凭单数据被嵌入受保护应用中或者输出至分离文档。一般来说,受保护应用能够包括若干模块(可执行程序和共享库)。在这种情况下,使得应用防篡改意味着所有模块都已签名并且凭单数据能够被储存在用于所有模块的单个实体中,或者优选地,每个模块具有单独储存的其自身的凭单数据。允许用于每个模块的凭单数据不仅为应用提供了无需重新签名就可更新单个模块的灵活性,而且通过允许将每个凭单用不同的密钥来转换还增加了安全性。完整性验证转化能够以自动模式和/或用户交互模式运行。这两种模式共享行为和原理,但是其不同之处在于IV机制被插入受保护二进制应用的方式。在自动模式下,IV 引擎540常驻在常驻安全模块中,并且在策略点处IV组件自动插入受保护二进制应用中。 在用户交互模式下,IV机制550基于对IV库555的调用常驻在静态地链接至应用中的二进制保护库中,在编译阶段前IV库555被插入用户的源代码中。通常,在运行时,受保护应用的结构由大量代码段构成,这些代码段根据已应用的不同二进制转化动态地改变其状态。实际上,受保护的二进制应用结构包括多个二进制转化的组合,二进制转化包括至少一种被应用于所述二进制应用代码的相继嵌套层的层间转化,其中相继嵌套层包括包括应用的模块、包括模块的函数、包括函数的指令基础块、以及单个机器指令。大多数安全性重要的函数用BT保护,另外一些用FT保护。无论受保护应用的自我修改代码本性如何,IV转化都将优选地提供检查模块、函数或块的完整性的能力。 因此,签名阶段包括将一组签名关联至在执行期间改变其状态的每个代码段。这些代码段在转换之前或之后被签名。例如,等式1示出了处于其已转换以及未转换状态的块的签名。 随后,等式2能够表达用BT保护的函数的签名,其是包括函数的块签名之和。当用FT保护函数时,函数被转换成一体。等式3表征用FT保护的函数的签名。
权利要求
1.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,所述安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分应用的静态和/或动态攻击,所述方法包括A)在构建时阶段中通过对所述二进制应用代码产生一系列变化来对所述二进制软件应用执行多种二进制转化的组合,以产生被改变的二进制应用代码,所述变化包括在构建时植入与所述被改变的二进制应用代码紧密相关的新代码;以及B)通过在所述转化之间生成并设置依存性来联锁所述转化;C)在执行期间,应用所述转化的组合并且将其与待保护的二进制应用代码和被植入的代码联锁;以及D)产生语义等同于原应用的受保护应用,所述受保护应用包括所述已联锁的转化,以使得所述二进制保护不再与所述受保护应用分离。
2.如权利要求2所述的方法,其中所述多种二进制转化的组合包括被应用到所述二进制应用代码的相继嵌套层上的至少一种层间转化。
3.如权利要求2所述的方法,其中步骤(B)包括添加联锁数据,并且其中步骤(D)包括产生受保护应用,所述受保护应用在有效的联锁数据不存在的情况下不能正确执行。
4.如权利要求3所述的方法,其中步骤(B)包括使一种转化需要先前的转化存在来适当执行。
5.如权利要求4所述的方法,其中步骤(B)包括使一种转化产生用作第二转化输入的输出。
6.如权利要求1-5中任一项所述的方法,其中步骤(B)包括利用具有补充性能的转化。
7.如权利要求2-6中任一项所述的方法,其中所述相继嵌套层包括包括所述应用的模块、包括模块的函数、包括所述函数的指令基本块、以及各机器指令。
8.如权利要求2-7中任一项所述的方法,其中所述二进制转化的组合还包括被应用到所述二进制应用代码的层上的至少一种层内转化。
9.如权利要求8所述的方法,其中所述至少一种层内转化包括在构建时和运行时都被应用于至少一层的完整性验证(IV)转化。
10.如权利要求8或9中的任一项所述的方法,其中所述至少一种层内转化包括被应用于至少一层的反调试转化。
11.如权利要求2-10中的任一项所述的方法,其中二进制转化包括静态构建时过程, 所述静态构建时过程包括i)将转化执行代码插入所述待保护的应用的源代码中,以产生被改变的源代码,然后编译所述被改变的源代码以产生所述二进制应用代码; )将补充的变化插入所述待保护的二进制应用中,以使得除非所述二进制应用存在所述补充的变化,否则所述应用源代码的所述变化不能正常工作;以及iii)在二进制形式的待保护应用上执行二进制转化特定操作,并且产生执行时所需的关联的静态联锁数据,其中二进制转化还包括运行时过程,所述运行时过程包括a.以如果所述转化被除去或修改就不保存所述应用的原语义的方式来执行被插入所述应用中的所述转化执行代码;b.动态生成执行所述转化执行代码时进一步需要的运行时联锁数据;c.利用所述关联的静态和动态联锁数据以检验所需的联锁依存性;d.以指定顺序执行一系列的多种转化,以使得需要一种转化来生成所述受保护应用执行时适合于执行第二转化的应用状态。
12.如权利要求1-11中的任一项所述的方法,其中二进制转化应用白盒转换过程,所述白盒转换过程包括在构建时i)利用白盒转换构建时设备以生成并集合白盒转换密钥和操作代码;以及 )通过执行具有白盒转换构建时密钥的白盒转换操作来将所述二进制代码及相关的重要信息从输入形式转换为输出形式,以及iii)在运行时,利用白盒转换运行时设备、通过执行具有白盒转换运行时密钥的白盒转换逆操作将所述二进制代码及相关的重要信息从输出形式转换回输入形式。
13.如权利要求12所述的方法,其中所述白盒转换构建时设备包括a.白盒转换生成器;b.白盒转换构建时密钥主机;c.白盒转换操作主机;以及d.白盒转换构建时管理器,并且其中所述白盒转换运行时设备包括e.白盒转换运行时密钥主机;f.白盒转换逆操作主机;以及g.白盒转换运行时管理器。
14.如权利要求13所述的方法,其中所述白盒转换生成器接受由用户提供的原密钥数据和转换算法选择,并且生成与相应的白盒转换运行时密钥数据(连同逆操作代码)耦接的成对的白盒转换构建时密钥数据对(连同语义的操作代码)。
15.如权利要求14所述的方法,还包括在白盒转换运行时密钥数据和操作代码生成之后隐藏所述原密钥数据和重要转换信息,从而当所述相应的白盒转换逆操作代码执行时阻止不慎的泄露。
16.如权利要求13或14所述的方法,其中多种转换被应用,并且其中所述白盒转换操作主机储存有多个白盒转换操作,所述白盒转换构建时密钥主机储存有多个白盒转换密钥,并且其中所述白盒转换运行时密钥主机储存有多个白盒转换运行时密钥,以及所述白盒转换逆操作主机储存有多个白盒转换逆操作。
17.如权利要求13所述的方法,其中-所述白盒转换构建时密钥主机通过所述白盒转换构建时管理器接入; -所述白盒转换操作主机安全且有效地组织并定位多个白盒转换语义操作代码; -所述白盒转换操作主机仅通过所述白盒转换构建时管理器接入; -所述白盒转换构建时管理器将储存、重新取回、匹配的各种白盒转换构建时密钥与其相应的白盒转换语义操作代码协调;-以使得每个白盒转换过程利用白盒转换构建时管理器来在运行时利用相应的白盒转换构建时密钥调用适当的白盒转换语义操作;-所述白盒转换运行时密钥主机安全且有效地组织、储存并定位多个白盒转换运行时密钥;-所述白盒转换运行时密钥主机通过所述白盒转换运行时管理器接入;-所述白盒转换逆操作主机安全且有效地组织并定位多个白盒转换逆操作代码;-所述白盒转换逆操作主机通过所述白盒转换运行时管理器接入;-所述白盒转换运行时管理器将储存、重新取回、匹配的各种白盒转换运行时密钥与其相应的白盒转换逆操作代码协调;以及-以使得每个白盒转换过程利用白盒转换运行时管理器来在运行时利用相应的白盒转换运行时密钥调用适当的白盒转换逆操作。
18.如权利要求13所述的方法,还包括为通过所述白盒转换生成器实现的白盒转换算法来选择包括最流行的密码算法的大范围的计算算法。
19.如权利要求14所述的方法,其中如果用户选定密码算法并且提供加密密钥,所述白盒转换生成器生成b.作为白盒转换操作代码的白盒加密操作代码c.作为白盒转换逆操作代码的白盒解密操作代码d.作为白盒转换构建时密钥数据的白盒加密密钥数据e.作为白盒转换运行时密钥数据的白盒解密密钥数据
20.如权利要求12-19中的任一项所述的方法,其中为不同的相继嵌套层中的不同转化生成并集合不同的白盒转换构建时和运行时密钥以及操作代码。
21.如权利要求2-20中的任一项所述的方法,其中所述方法增加联锁保护,所述联锁保护包括对所述源代码进行变化,所述源代码变化和所述二进制代码变化以其都需要存在从而使所述受保护应用正确运行的方式共同作用,并且其中所述联锁包括层间转化和层内转化,以使得所述转化中的任何一个或者所有转化难以除去,并且其中通过嵌套转化来联锁所述转化,每个被嵌套的转化对其封装的层提供进一步保护,同时接受来自封装层的进一步保护,并且每个被嵌套的转化附加地包括至少一个层内转化,每个层内转化提供所述受保护应用的一层内的交叠保护,或者为作为整体的所述受保护应用提供保护。
22.如权利要求9-21中的任一项所述的方法,其中所述IV转化包括在构建时的IV处理,所述IV处理包括a.生成并集合IV特定的白盒转换密钥和操作代码;b.计算代表构建时所述应用二进制代码的散列信息的静态IV凭单数据;c.通过使用所述特定白盒转换密钥和操作代码来应用IV特定白盒转换以转换所述应用的所述凭单数据,从而阻止对所述凭单数据未授权的访问和攻击;d.集合与所述特定白盒转换密钥和操作代码对应的、隐藏的白盒转换运行时密钥数据;并且其中所述IV转化还包括在执行所述受保护应用开始时和执行所述受保护应用的过程中的运行时行动,所述运行时行动包括e.在IV库被调用时,IV初始化器与所述白盒转换运行时设备交互,通过在所述白盒转换运行时密钥数据上执行所述IV特定白盒转换逆操作,从而将所述白盒转换IV数据逆转换成普通的IV数据并且将所述普通的数据加载受保护数据结构中;f.通过OS对加载存储器中的所述二进制代码的动态IV凭单数据进行计算,所述动态 IV凭单数据代表运行时中所述应用二进制代码的散列信息,并且将所述动态IV凭单数据储存至受保护的数据结构中;g.通过将以被保护形式存在的所述静态IV凭单数据与所述动态IV凭单数据作比较, 来检查所述待保护的应用代码的完整性。
23.如权利要求22所述的方法,其中所述应用的所述IV转化包括通过在所述构建时阶段中允许用户将IV API调用插入所述应用的源代码的选定位置中来检查由用户规则的制定部分确定的完整性,以及随后在构建时将自动的完整性验证引擎自动添加到所述应用中,所述完整性验证引擎在运行时执行。
24.如权利要求22或23所述的方法,其中所述IV转化检查所述二进制应用代码自身的完整性,而且还检查被应用到所述代码的任何其它二进制转化的代码的完整性。
25.如权利要求21-24中的任一项所述的方法,其中所述IV转化执行通过调用回叫函数被联锁至所述应用。
26.如权利要求25所述的方法,其中在所述构建时阶段中添加所述回叫函数,并且在所述IV转化准备期间通过将具有作为参数的回叫函数的IV API调用插入,使所述回叫函数与IV转化执行联锁。
27.如权利要求12-26中的任一项所述的方法,其中所述二进制转化中的一个二进制转化包括在构建时和运行时通过MT处理来保护应用模块的模块转化(MT)以便阻止对所述应用模块的静态攻击,所述应用模块能够为应用可执行模块和/或动态共享库模块,其中在构建时的所述MT处理包括a.与所述白盒转换构建时设备交互以生成并集合MT特定白盒转换密钥和操作,其中所述被集合的MT特定白盒转换密钥和操作包括MT特定白盒转换构建时密钥数据和白盒转换操作,以及相应的白盒转换运行时密钥数据和白盒逆操作;b.将待保护的应用模块的所述二进制代码压缩以形成被压缩的二进制代码;c.应用所述MT特定白盒转换操作,以通过利用所述MT特定白盒转换构建时密钥数据和白盒转换操作(来自步骤a)来转换所述被压缩的二进制代码以形成白盒转换的模块;d.通过将所述白盒转换的模块(来自步骤c)与常驻安全模块(RSM)合并,为所述应用模块生成安全封包的应用模块,所述常驻安全模块(RSM)包含处于隐藏形式的所述白盒转换运行时密钥数据和逆操作(在步骤a中集合);以及其中所述模块转化(MT)还包括运行时处理,所述运行时处理包括e.当OS加载所述安全封包的应用模块并且触发所述RSM中的代码的执行时,所述RSM 与所述白盒转换运行时设备交互,以利用所述白盒转换运行时密钥数据通过执行所述IV 特定白盒转换逆操作将所述白盒转换的模块逆转换为所述被压缩的应用模块;f.对所述被压缩的应用模块应用非压缩操作以获得所述应用模块的二进制代码;g.将所述应用模块映入并加载存储器中,并将控制传送至所述应用的进入点。
28.如权利要求27所述的方法,其中所述RSM是通过将ADD和IV二进制转化中的一种或两种应用到所述RSM上来保护的。
29.如权利要求12-28中的任一项所述的方法,其中所述二进制转化之一包括至少一种函数转化(FT),所述至少一种函数转化(FT)通过在构建时和运行时的FT处理保护应用模块内的个别函数,以便阻止对所述函数的静态和动态攻击,其中函数转化包括在构建时的FT处理,其中在构建时的所述FT处理包括a.与所述白盒转换构建时设备交互以生成并集合待保护的函数中的每一个待保护的函数特有的FT特定白盒转换密钥和操作代码;b.通过应用FT特定的白盒转换来产生已转换的函数,从而通过利用函数中的每一个函数特有的白盒转换构建时密钥数据和白盒转换操作(来自步骤a)对包括所述函数中的每一个函数的所述二进制代码进行转换;c.安装用于所述已转换的函数中的每一个函数的进入和退出函数处理器,以使得对每个已转换的函数的所有调用都通过其进入函数处理器来执行,而通过其退出函数处理器从所述函数返回;d.通过将所述白盒转换的函数与对应于在步骤(b)中使用的白盒转换构建时密钥数据和白盒转换操作的、步骤(a)中集合的隐藏的白盒转换运行时密钥数据和逆操作,以及为所有受保护函数在步骤(c)中安装的所有进入和退出函数处理器进行组合,为包括常驻安全模块(RSM)和所有受保护的函数的所述应用模块准备安全封装的应用模块;以及其中所述函数转化(FT)还包括用于每一个FT保护的函数的运行时行动,所述运行时行动包括e.在应用模块执行期间,当受保护函数被调用时,所述受保护函数的进入函数处理器首先被执行并且与所述白盒转换运行时设备交互,以通过利用所述函数特有的白盒转换运行时密钥数据和操作代码执行所述白盒转换逆操作来对所述白盒转换的函数代码进行逆转换;f.将所述逆转换的函数加载执行存储器内;以及g.将所述执行控制传送至所述函数,并且通过从所述函数退出来调用所述函数的退出处理器。
30.如权利要求四所述的方法,其中用于每个函数的所述RSM在返回之前将所述函数的存储器占用空间清除或搅乱。
31.如权利要求四或30所述的方法,其中层内保护被调用,以使得通过将IV转化、ADB 转化或者两种转化隐含应用到所述进入和退出函数处理器上,所述IV或ADB转化中的一种或两种与被保护的函数所应用的所述FT联锁。
32.如权利要求四-31中的任一项所述的方法,其中另外的层间转化,即块转化(BT)通过构建时和运行时的BT处理来保护应用模块内个别函数中的代码基础块,以便为所述函数提供抵御静态、动态和自动攻击的更强保护,并且在具体的实施方式中,其中所述块转化包括构建时的所述BT处理,构建时的所述BT处理包括a.分析所述函数的控制流和数据流,以识别并确定所述函数的块信息和结构;b.通过为每一个块安装进入和退出块处理器来扩大每一个块,以使得到达每一个被保护块的所有执行路径首先调用其进入块处理器,然后到达所述块代码,最后相应地经由其退出块处理器从所述块离开;c.与所述白盒转换构建时设备交互以生成并集合待保护的函数中的每一个待保护的函数特有的BT特定白盒转换密钥和操作代码;d.通过应用BT特定白盒转换以转换所述基础块中的每一个的已扩大的二进制代码(步骤b中处理的)、通过利用块中的每一个特有的白盒转换构建时密钥数据和白盒转换操作(步骤c中生成并集合)来产生已转换的块;e.为包括常驻安全模块(RSM)的所述应用模块准备安全封装的应用模块,所述常驻安全模块包含具有所述进入和退出块处理器的所述已转换的块、以及已集合的所述隐藏的白盒转换运行时密钥数据和逆操作;其中所述块转化(BT)还包括用于一个特殊FT保护的函数的所有受保护块的运行时行动,所述运行时行动包括f.在所述应用模块执行期间,每当包含受保护块的受保护函数被调用时,在存储器中属于相同函数的所有块被随机排列;g.每当受保护块执行时,所述受保护块的进入块处理器被调用,然后与所述白盒转换运行时设备交互,以通过利用所述块特定的白盒转换运行时密钥数据和操作代码、执行所述白盒转换逆操作来对所述白盒转换的块进行逆转换;h.将所述逆转换的块加载指定的执行存储器中;i.将执行控制传送至已加载的块,并且经从所述块的退出,所述退出块处理器(任选地)清除或搅乱存储器占用空间并且将执行传送至下一个块。重复步骤B、C以及D直至受保护函数退出。
33.如权利要求32所述的方法,其中所述块转化(BT)还包括基于由用户通过输入安全选项所指定的块排列的频率的存储器中动态逆转换的块的随机代码位置排列。
34.如权利要求32所述的方法,其中所述块转化(BT)还包括所述退出块处理器,所述退出块处理器能够与所述白盒转换运行时设备交互,以通过利用所述块特定的白盒转换运行时密钥数据和操作代码、执行所述白盒转换操作来对所述白盒逆转换的块进行逆转换。
35.如权利要求33或34所述的方法,其中所述块转化通过将IV和/或ADB转化中的一种或两种应用到每一个块的进入和退出块处理器上来得到进一步保护。
36.如权利要求27-35中的任一项所述的方法,其中所述指令转化(IT)通过构建时和运行时的IT处理对应用模块内个别函数中的代码的单个指令进行保护,以便为所述函数提供抵御静态、动态以及自动攻击的更强保护。
37.一种保护包括二进制代码和任选关联数据的软件应用从原形式至更安全形式的系统,所述更安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分应用的静态和/ 或动态攻击,所述系统包括a.提供用于软件应用的安全二进制库,以调用在用户想保护的代码位置处的指定转化执行行为;b.为用户提供选项从而在例如包括所述应用的模块、函数、块以及指令的各种粒度下应用不同类型的转化;c.提供构建时工具组以对所述应用执行二进制转化准备,并且通过利用所述工具组将所述应用的原执行转换成安全的执行;d.产生语义等同于原应用、包括联锁的转化执行的受保护应用,所述联锁的转化执行还与转化准备联锁,以使得所述二进制保护不再与所述受保护的应用分离;e.在受保护应用执行期间,包括联锁的转化执行的所述受保护的应用保护所述执行, 以阻止受到静态和动态攻击,并且在执行的任何时间过程中,存在于执行存储器中的二进制代码中的非常少的部分处于清除形式。
38.如权利要求37所述的系统,其中c、d、以及e还包括通过在转化准备与执行之间联锁来生成、排列并且增加联锁数据和代码,并且产生若有效联锁数据和代码不存在就不能正确执行的受保护应用;通过在不同转化的执行之间联锁来生成、排列并且增加联锁数据和代码,并且产生若有效的联锁数据和代码不存在就不能正确执行的受保护应用;使得多种转化对所述应用产生多个保护层;以及其中(b)还包括使至少一个粒度的多于一种的转化交叠。
39.如权利要求38所述的系统,还包括嵌套的补充转化产生每个均由IV、ADB或者IV 和ADB保护的、具有补充性能的多个嵌套保护层。
40.如权利要求39所述的系统,还包括将粒度分拆成几个部分,并且仅当IV检查结果被确定在当前粒度的当前转化上成功时,为所述粒度的下一部分调用转化执行。
41.如权利要求37-40中的任一项所述的系统,还包括在所述转化之间提供失败和成功回叫功能,其中给定粒度的一个转化的白盒转换逆操作仅当另一转化的白盒转换逆操作成功时才能进行。
42.如以上任一权利要求所述的方法/系统,其中所述转化被应用到所述代码和相关数据上。
43.一种计算机程序产品,包括有形地储存机器可读指令和可执行指令的机器可读介质,当由处理器执行时,所述机器可读介质使得所述处理器实现在本文中公开和/或权利要求保护的方法中的任何方法。
44.如权利要求37所述的系统,其中所述白盒转换允许将白盒运行时密钥数据分拆成两个或更多部分,其中至少一个部分是内部的并且被嵌入所述受保护应用内,而其它部分是外部的并且以一个或多个单独的储存形式储存。
45.如权利要求44所述的系统和方法,还包括允许外部白盒转换运行时密钥部分单独被供应至所述受保护应用的装置上,而在装置供应时期间,部分安装所述内部白盒转换运行时密钥。
46.如权利要求44所述的系统和方法,还包括提供通过白盒转换运行时密钥主机调用的特定白盒运行时操作,以将不同且分开的白盒运行时密钥数据部分重新组成为可用形式。
47.如权利要求44所述的系统和方法,还包括在所述受保护应用与这些单独供应的所述白盒转换运行时密钥的外部部分之间产生联锁依存性,以增加如下安全性a.在分配并供应受保护应用和外部密钥信息的任何时期中,攻击者必须打破白盒密钥的多个部分以便得到整个密钥,因此将使得这种攻击更困难并且降低安全风险;b.由于所述受保护应用和白盒转换运行时密钥的不同示例能具有不同百分比的密钥数据分拆,实施者能通过改变密钥的多个不同部分的比率来引进多样性;c.将受保护应用的示例与一个装置联锁或者将受保护的示例与共享相同的密钥数据格式的一组装置联锁,以使得受保护应用的示例联锁至单个装置,而来自所述装置的语义等同应用的全部或部分的代码提升不能在任何未授权和匹配的装置上运行。
48.如权利要求47所述的系统和方法,其中供应表现为以下形式d.通过制造者在制造时或者服务提供者在供应时,将所述白盒转换运行时密钥的所述外部部分安装在装置上;e.当所述应用第一次或者每次被调用时,通过网络下载所述白盒转换运行时密钥的所述外部部分;f.当所述应用被调用时,从用户供给装置获得所述白盒转换运行时密钥的所述外部部分,所述用户供给装置例如为与所述装置连接的智能卡;g.当所述应用被调用时,通过所述用户手动地进入所述白盒转换运行时密钥的所述外部部分。
49.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法, 所述安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分的静态和/或动态攻击,所述方法包括分析所述二进制应用以确定至少一种二进制转化能被应用于其上的、所述应用的至少一个组件,所述组件包括组件代码;对所述组件代码执行一系列变化以产生改变的组件代码,所述变化包括将至少一种WB 转换应用到所述组件代码上以及将与所述变化紧密相关的新代码植入所述二进制应用代码;通过在所述变化之间生成并放置依存性来联锁所述变化;以及应用所述变化的组合并将其联锁至待保护的二进制应用代码和被植入的代码,以产生语义等同于所述原应用但包括所述已联锁转换的已转化应用,从而使得所述二进制保护不再与所述受保护应用分离。
50.一种保护包括二进制代码和任选关联数据的软件应用从原形式至更安全形式的方法,所述更安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分的静态和/或动态攻击,所述方法包括c.提供构建时工作组以对所述应用执行二进制转化准备,并且通过利用所述工具组将所述应用的原执行转换成安全的执行;以及d.产生语义等同于原应用、包括联锁的转化执行的受保护应用,所述联锁的转化执行还与转化准备联锁,以使得所述二进制保护不再与所述受保护的应用分离;其中所述受保护应用的所述安全执行包括被配置使得在其执行的任何时间过程中仅一小部分的二进制代码处于清除形式的联锁的转化执行。
51.如权利要求50所述的方法,其中包括以下步骤通过在转化准备和转化执行之间联锁来生成、排列和增加联锁数据和代码,并且产生若有效的联锁数据和代码不存在就不能正确执行的受保护应用;
52.如权利要求51所述的方法,其中所述生成、排列和增加联锁数据和代码包括在不同粒度的不同转化的执行之间联锁,并且产生若有效的联锁数据和代码不存在就不能正确执行的受保护应用;以及使得多种转化对所述应用产生多个保护层。
53.如权利要求52所述的方法,其中所述不同粒度的不同转化包括使得嵌套的补充转化产生每个均由IV、ADB或者IV和ADB保护的、具有补充性能的多个嵌套保护层。
54.如权利要求50-53中的任一项所述的方法,还包括a.为软件应用提供安全二进制库以在用户想要保护的代码位置处调用指定的转化执行行为;以及b.为用户提供选项以在例如包括所述应用的模块、函数、块以及指令的各种粒度下应用不同类型的转化。
55.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法, 所述安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分的静态和/或动态攻击,所述方法包括A)在构建时阶段中通过对所述二进制应用代码进行一系列变化来对所述二进制软件应用执行多种二进制转换的组合,以产生被改变的二进制应用代码,所述变化包括在构建时植入与所述被改变的二进制应用代码紧密相关的新代码;B)通过在所述转换之间生成并设置依存性来联锁所述转换;以及C)对待保护的二进制应用代码和被植入的代码应用所述转换的组合并联锁,以产生语义等同于原应用但包括所述联锁转换的已转化应用,以使得所述二进制保护不再与所述受保护应用分离。
56.如权利要求55所述的方法,其中步骤A和B包括在二进制形式的所述受保护二进制应用上执行二进制转化特定操作,并且生成执行时需要的关联静态联锁数据,其中二进制转化还包括运行时过程,所述运行时过程包括a.以如果所述转化被除去或修改就不保存所述应用的原语义的方式来执行被插入所述应用中的所述转化执行代码;b.动态生成进一步需要的运行时联锁数据并执行所述转化执行代码;c.利用所述关联的静态联锁数据和动态联锁数据以检验所需的联锁依存性;d.以指定顺序执行一系列多种转化,以使得需要一种转化来生成执行所述受保护应用时适于执行第二转化的应用状态。
57.如权利要求56所述的方法,任何给定的转化包括插入具有其所附联锁设备的IV和 ADB例程,并且将程序分解成接下来被WB技术转换的函数、块和指令需要在其中运行的特定环境(其包括实体和退出处理器、RSM等),并因此实际不可逆地产生。
58.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法, 所述安全形式抵抗试图篡改、逆向改造或提升所述应用的全部或部分的静态和/或动态攻击,所述方法包括分析所述二进制应用以确定所述应用的组件,所述二进制转化能被应用于所述组件上,其中每种二进制转化包括通过对所述组件代码应用转换来对所述代码进行变化并且附加地植入与所述被转换的组件代码紧密相关的转化执行代码;通过在所述变化和所述应用代码的其它方面 < 其能够包括主应用或者其它组件 > 之间生成并设置依存性来联锁所述变化;以及应用所述变化并联锁至待保护的二进制应用代码和被植入的代码,以产生语义等同于所述原应用但包括所述联锁转换的已转化应用,以使得所述二进制保护不再与所述受保护应用分离。
59.如权利要求58所述的方法,其中二进制转化包括生成执行时所需的关联的静态联锁数据;并且其中二进制转化还包括运行时过程,所述运行时过程包括a.以如果所述转化被除去或修改就不保存所述应用的原语义的方式来执行被插入所述应用中的所述转化执行代码;b.动态生成进一步需要的运行时联锁数据并执行所述转化执行代码;c.利用所述关联的静态和动态联锁数据以检验所需的联锁依存性;d.以指定顺序执行一系列多种转化,从而需要一种转化来生成所述受保护应用执行时适合于执行第二转化的应用状态。
60.一种如前述权利要求中的任何一项所述的方法,还包括动态函数加载。
61.一种如所述的动态函数加载的方法。
全文摘要
一种将包括二进制代码和任选关联数据的软件应用从原形式转换为更安全形式的系统和方法。该方法包括对该应用执行二进制转化的组合,并且通过在所述转化之间生成并设置依存性来联锁转化,其中转化是对应用的不可逆变化。不同类型的转化可应用于应用的各种粒度。转化还被应用到应用代码和被植入的代码上。结果是被转换的软件应用语义等同于原软件应用但是抵抗静态和/或动态攻击。
文档编号G06F9/44GK102483790SQ201080030733
公开日2012年5月30日 申请日期2010年5月6日 优先权日2009年5月6日
发明者丹尼尔·艾利·穆多克, 保罗·麦克瑞, 博格丹·尼科莱苏, 朱喜建, 瓦勒瑞·莱维斯基, 董宏瑞, 顾元祥 申请人:埃德图加拿大公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1