用于创建具有纠缠变换的安全计算机代码的系统、方法和存储介质技术方案

技术编号:35810470 阅读:17 留言:0更新日期:2022-12-03 13:31
公开了用于呈现目标代码的系统、方法和存储介质。示例性实现可以:接收输入代码;将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码;确定共享常量;确定函数表达式;以及对于经变换的代码中的每个经变换的代码函数,用函数表达式和所述至少一个隐藏常量来替换变换参数,以创建目标代码,经变换的代码函数在所述目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。击被保护。击被保护。

【技术实现步骤摘要】
【国外来华专利技术】用于创建具有纠缠变换的安全计算机代码的系统、方法和存储介质


[0001]本公开涉及用于创建安全计算机代码的系统、方法和存储介质。

技术介绍

[0002]“模糊(obfuscation)”除其他事物之外尤其是一种对计算机软件代码应用变换(也称为“变换”)的方法,通过使软件代码的逆向工程变得复杂并且因此致使代码更抵抗攻击,从而致使代码更复杂(而不对意图功能产生实质性不利影响)。在许多实例中,延迟攻击者逆向工程软件代码的能力就足够了,尤其是如果代码是执行金融交易的应用,这通常仅花费几秒钟来完成。在受版权保护的材料的实例中,通过使篡改过程足够困难,使得当与软件的正版拷贝的成本相比时,篡改过程变得过分地昂贵,模糊得以成功。
[0003]存在多种类型的已知变换。数据变换可以(手动或自动)应用于全局和局部变量、函数参数和返回值的位置。通常,对于每个个体变换位置集合,随机地和局部地选择固有常量。诸如统一签名(统一签名,FST)和合并函数(MergeFunction)之类的函数变换也可以手动或自动应用,并且可以将函数参数混洗并返回到用作要传递到经变换的函数中的新自变量的数组中,并且然后在需要时合并经变换的函数。
[0004]代码转换器间接函数变换自动应用于函数调用,并创建用于替换所有原始函数调用的函数地址表。该表包括函数地址和一些固有常量(每个函数地址一个),它们是随机生成的,用于模糊函数。控制流平坦化变换自动将控制流转换成switch语句,其中为语句随机生成固有常量,从而模糊软件的控制流。
[0005]通常,所有变换都单独应用,并生成人工产物,诸如成对的值。这些人工产物在本文被称为“变换值”,并且经常可以利用“静态攻击”被发现,这涉及例如使用部分评估器静态地分析软件而不运行它。一旦发现了偏移量,攻击者就通常可以一个接一个地逆转每个个体变换来篡改代码。

技术实现思路

[0006]变换值和变得模糊的实函数地址之间的映射是至关重要的。如果攻击者确定了映射,则攻击者可以利用静态分析获得真正的函数地址。变换值和变得模糊的实函数参数和返回值之间的映射是至关重要的。如果攻击者确定了映射,则攻击者可以利用静态分析获得真正的函数参数和返回值。本文公开的实现将至少一个共享常量和至少一个“函数表达式”引入模糊代码。函数表达式是看起来是程序函数的代码,但是,如下面详细描述的,用作模糊代码的不同变换之间的纠缠。函数表达式用于计算“纠缠参数”,例如常量,以增加静态分析的难度,如在下面讨论的。
[0007]本公开的一个方面涉及一种被配置用于呈现受保护目标代码的系统。该系统可以包括由机器可读指令配置的一个或多个硬件处理器。(一个或多个)处理器可以被配置为接收输入代码。(一个或多个)处理器可以被配置为将至少一个模糊变换应用于输入代码的多
个代码函数,以创建包括经变换的代码函数的经变换的代码。经变换的代码函数可以包括由至少一个模糊变换产生的偏移量。经变换的代码在被编译和执行时可以具有与输入代码在被编译和执行时基本上相同的功能性。(一个或多个)处理器可以被配置为接收共享常量。(一个或多个)处理器可以被配置为接收函数表达式。函数表达式可以是代码,并接受共享常量和至少一个偏移量作为自变量,从而确定至少一个变换参数或变换返回值。(一个或多个)处理器可以被配置为对于经变换的代码中的每个经变换的代码函数,用函数表达式和至少一个变换参数来替换偏移量,以创建目标代码,经变换的代码函数在该目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。
[0008]本公开的另一方面涉及一种用于呈现目标代码的方法。该方法可以包括接收输入代码。该方法可以包括将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码。经变换的代码函数可以包括由至少一个模糊变换产生的至少一个偏移量。经变换的代码在被编译和执行时可以具有与输入代码在被编译和执行时基本上相同的功能性。该方法可以包括接收共享常量。该方法可以包括接收函数表达式。函数表达式可以是代码,并且接受共享常量和至少一个偏移作为自变量,从而确定至少一个变换参数。该方法可以包括,对于经变换的代码中的每个经变换的代码函数,用函数表达式和至少一个变换参数来替换偏移量,以创建目标代码,经变换的代码函数在该目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。
[0009]本公开的又一方面涉及一种其上体现有指令的非瞬态计算机可读存储介质,所述指令通过一个或多个处理器可执行,以执行用于呈现目标代码的方法。该方法可以包括接收输入代码。该方法可以包括将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码。经变换的代码函数可以包括由至少一个模糊变换产生的至少一个偏移。经变换的代码在被编译和执行时可以具有与输入代码在被编译和执行时基本上相同的功能性。其中经变换的代码函数被纠缠,从而致使目标代码针对静态分析攻击被保护。
[0010]所述系统装置和介质还可以从另一系统接收经变换的代码,并执行以下步骤:接收共享常量,接收函数表达式,以及针对经变换的代码中的每个经变换的代码函数,用函数表达式和至少一个变换参数替换所述至少一个偏移,以创建目标代码。
[0011]本技术的这些和其他特征和特性以及相关结构元件的操作方法和功能、部件的组合和制造的经济性将在参考附图考虑以下描述和所附权利要求后变得更清楚,所有这些形成了本说明书的一部分,其中相同的附图标记指定各图中的对应部件。然而,应该明确地理解,附图仅仅是出于说明和描述的目的,而不是旨在作为对本专利技术的限制的限定。如在说明书中和权利要求中所使用的,单数形式的“一”、“一个”和“该”包括复数指示物,除非上下文另有清楚规定。
附图说明
[0012]图1图示了根据一个或多个实现的被配置用于利用纠缠变换创建目标代码的系统。
[0013]图2图示了根据一个或多个实现的用于利用纠缠变换创建目标代码的方法。
具体实施方式
[0014]如上面指出的,在常规模糊实现中,个体变换应用于代码的离散部分。因此,一旦个体的变换位置被逆向工程,它的保护就可以被移除而不影响任何其他的变换位置,因为它们是彼此独立的。所公开的实现提供了导致安全优势的变换“纠缠”,使得如果个体变换位置被改变,则所有其他纠缠的位置都将受到影响,从而导致程序将不工作的情形。
[0015]可以为经变换的代码中的所有或一些变换特征引入变换纠缠。例如,纠缠可以被引入到统一签名(FST)和代码转换器间接函数(TIF)变换中。在FST变换中,生成数组来保存一些参数地址和返回值,该数组被传递给其签名已被统一的函数。所公开的实现引入了一种新的机制,使得阵列参数混洗基于随机数和新引入的常量共享纠缠参数(本文称为“共享常量”)二者。
[0016]在TIF变换中,生成数组以保存函数地址。数组中使用的偏移量是随机生成的,并在函数调用中用于确定函数地址。所公开的实现引入了一种新的机制,使得那些偏移是从随机数和共享常量二者中生成的。共享常量可以用于本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种被配置用于呈现目标代码的系统,所述系统包括:由机器可读指令配置的一个或多个硬件处理器,用于:接收输入代码;将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码,经变换的代码函数包括由至少一个模糊变换产生的至少一个变换值,其中经变换的代码在被编译和执行时具有与输入代码在被编译和执行时基本上相同的功能性;接收共享常量;接收函数表达式,其中所述函数表达式是代码,并且接受共享常量和至少变换值作为自变量,从而确定至少一个纠缠参数;对于经变换的代码中的每个经变换的代码函数,用函数表达式和所述至少一个纠缠参数替换所述至少一个变换值,以创建目标代码,经变换的代码函数在所述目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。2.根据权利要求1所述的系统,其中,所述至少一个模糊变换包括代码转换器间接函数变换,并且所述变换值包括偏移值。3.根据权利要求1所述的系统,其中,所述至少一个模糊变换包括统一签名变换,并且所述变换值包括值的数组。4.根据权利要求1所述的系统,其中,确定共享常量包括确定多个共享常量,并且确定函数表达式包括确定多个函数表达式,每个函数表达式对应于共享常量,并且每个函数表达式和对应的共享常量被应用于至少两个经变换的代码函数。5.根据权利要求1所述的系统,其中,所述至少一个模糊变换包括至少两种不同类型的模糊变换。6.一种用于呈现目标代码的方法,包括:接收输入代码;将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码,经变换的代码函数包括由所述至少一个模糊变换产生的变换值,其中经变换的代码在被编译和执行时具有与输入代码在被编译和执行时基本上相同的功能性;确定共享常量;确定函数表达式,其中函数表达式是代码,并且接受共享常量和所述至少一个变换值作为自变量,从而确定至少一个纠缠参数;对于经变换的代码中的每个经变换的代码函数,用函数表达式和所述至少一个纠缠参数替换变换值,以创建目标代码,经变换的代码函数在所述目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。7.根据权利要求6所述的方法,其中,所述至少一个模糊变换包括代码转换器间接函数变换,并且所述变换值包括偏移值。8.根据权利要求6所述的方法,其中,所述至少一个模糊变换包括统一签名变换,并且所述变换值包括值的数组。9.根据权利要求6所述的方法,其中,确定共享常量包括确定多个共享常量,并且确定函数表达式包括确定多个函数表达式,每个函数表达式对应于共享常量,并且每个函数表
达式和对应的共享常量被应用于至少两个经变换的代码函数。10.根据权利要求6所述的方法,其中,所述至少一个模糊变换包括至少两种不同类型的模糊变换。11.一种其上体现有指令的非瞬态计算机可读存储介质,所述指令通过一个或多个处理器可执行以执行用于呈现目标代码的方法,所述方法包括:接收输入代码;将至少一个模糊变换应用于输入代码的多个代码函数,以创建包括经变换的代码函数的经变换的代码,经变换的代码函数包括由所述至少一个模糊变换产生的变换值,其中经变换的代码在被编译和执行时具有与输入代码在被编译和执行时基本上相同的功能性;确定共享常量;确定函数表达式,其中函数表达式是代码,并且接受共享常量和至少一个变换值作为自变量,从而确定至少一个纠缠参数;对于经变换的代码中的每个经变换的代码函数,用函数表达式和所述至少一个纠缠参数替换变换参数,以创建目标代码,经变换的代码函数在所述目标代码中纠缠,从而致使目标代码针对静态分析攻击被保护。1...

【专利技术属性】
技术研发人员:G
申请(专利权)人:爱迪德技术有限公司
类型:发明
国别省市:

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

1