用于创建受保护计算机代码的系统、方法和存储介质与流程

未命名 07-12 阅读:81 评论:0


1.本公开涉及用于创建抵御攻击的受保护计算机代码的系统、方法和存储介质。


背景技术:

2.实际上,业务的所有方面都由在计算平台上执行的软件控制。因此,不良行为者攻击代码以便窃取知识产权、以未经授权的方式访问各种系统并且通常绕过许可和其他控制已经变得很常见。此外,许多软件代码在由潜在攻击者容易访问的设备上执行,所述设备诸如移动电话和连接互联网的服务器。作为结果,创建难以攻击的安全软件代码的需求变得非常重要。
3.保护软件代码的各种方法是众所周知的。例如,通常使用“代码混淆”技术来使软件代码更加安全,以抵御潜在的攻击。代码混淆是以如下方式修改可执行软件代码的过程:所述方式使代码在攻击者看来更复杂,但允许代码保留完整的功能。代码混淆可能使代码的逆向工程对于攻击者而言是困难并且在经济上不可行的。代码混淆包括可以组合使用的各种技术。众所周知的代码混淆技术的示例包括指令模式转换、重命名方法/变量、控制流混淆、字符串加密、伪代码插入、二进制链接/合并、以及不透明谓词插入。
4.一般而言,代码混淆技术导致以高效执行代码所需的计算资源形式的开销增加。因此,有必要平衡安全性需求与软件快速执行需求以及所得到的积极用户体验。为了实现这种平衡,已知尝试将混淆技术的应用集中在代码的最安全性敏感的部分,即最有可能被攻击的代码部分。例如,检查用户授权或包括解密密钥的代码部分可以被视为敏感部分。代码混淆通常作为服务由接收无保护代码并且对其执行混淆过程的服务提供商来完成。然而,在没有详细了解代码的情况下,难以(如果不是不可能的话)标识应该对其应用混淆的代码的最敏感部分。因此,混淆通常以某种随机的方式应用。这经常导致安全性和性能之间达不到最佳平衡。
5.一种用于标识敏感代码的可能方法是机器学习。给定代码样本的训练集和它们的安全性敏感度的度量,可以训练模型来评估其他代码的安全性敏感度。由发明人进行了这样的努力,经由通过安全专家对超过1000个c代码样本的人工调查,创建了训练数据集。所导出的模型在其他c代码上实现了大约60%的准确率。然而,它对其他源代码语言或其他代码表示的有效性可能要更低得多。该过程也非常昂贵和耗时。针对其他语言重复该调查将同样昂贵,并且针对其他类型的代码(诸如android dex字节码或低级虚拟机(llvm)位代码)重复这该调查将几乎是不可能的,因为很少有人能够阅读这样的代码。照此,基于ml的方法将通常是行不通的。一个感兴趣的密切相关的问题是评估代码混淆技术在防止攻击方面的有效性。联系如下:一段代码被保护得越好,它被攻击的可能性就越小。通过上面的定义,这意味着保护越好,安全性敏感度越低。在完全混淆的程序中,将不存在安全性敏感的代码。照此,用于确定代码的安全性敏感度(决定应该保护哪个代码)的方法也可以用作用于该保护的有效性的量度。


技术实现要素:

6.申请人已经开发了一种用于在没有代码及其功能的详细知识的情况下确定代码敏感部分的过程。本公开的一个方面涉及一种被配置用于创建受保护计算机代码的系统。该系统可以包括由机器可读指令配置的一个或多个硬件处理器。(一个或多个)处理器可以被配置为访问计算机代码。所述(一个或多个)处理器可以被配置为将计算机代码转换成代码特性的数字描述。所述(一个或多个)处理器可以被配置为将计算机代码划分成代码块。所述(一个或多个)处理器可以被配置为通过对代码块应用异常检测算法利用异常度量来确定代码块中的至少一些的对应排名。所述(一个或多个)处理器可以被配置为通过将阈值应用于排名来选择代码块中的异常块。所述(一个或多个)处理器可以被配置为对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。
7.本公开的另一方面涉及一种用于创建受保护计算机代码的方法。该方法可以包括访问计算机代码。该方法可以包括将计算机代码转换成代码特性的数字描述。该方法可以包括将计算机代码划分成代码块。该方法可以包括通过对代码块应用异常检测算法利用异常度量来确定代码块中的至少一些的对应排名。该方法可以包括通过将阈值应用于排名来选择代码块中的异常块。该方法可以包括对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。
8.本公开的又一方面涉及一种其上体现有指令的非暂时性计算机可读存储介质,所述指令由一个或多个处理器可执行以执行用于创建受保护计算机代码的方法。该方法可以包括访问计算机代码。该方法可以包括将计算机代码转换成代码特性的数字描述。该方法可以包括将计算机代码划分成代码块。该方法可以包括通过对代码块应用异常检测算法利用异常度量来确定代码块中的至少一些的对应排名。该方法可以包括通过将阈值应用于排名来选择代码块中的异常块。该方法可以包括对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。
9.在参考随附附图考虑以下描述和所附权利要求时,本技术的这些和其他特征和特性,以及结构的相关元件的操作方法和功能以及部件的组合和制造的经济性将变得更加显而易见,所有这些都形成本说明书的一部分,其中相同的附图标记在各个附图中指定对应的部件。然而,应该清楚地理解,附图仅仅是为了说明和描述的目的,并且不旨在作为对本发明的限制的限定。如在说明书和权利要求中所使用的,单数形式的“一”、“一个”和“该”包括复数指代,除非上下文另有明确规定。
附图说明
10.图1是利用所公开的实现的保护系统中的示例工作流的框图。
11.图2是根据一个或多个实现的被配置用于创建受保护计算机代码的计算系统的框图。
12.图3是根据一个或多个实现的用于创建受保护计算机代码的方法的流程图。
具体实施方式
13.虽然通常难以确定代码是否是安全性敏感的,但是与项目中的其他代码相比,识别“不同”或异常的代码是更可行得多的。本发明的前提基于异常的代码和安全性敏感的代
码之间可能存在相关性的假设。
14.如上所述,发明人利用由安全工程师手工注释的精选数据集和无监督学习的方法进行实验,以创建将测量给定代码块相对于其他代码块有多异常的模型。基于大量实验,发明人得出结论,在相对于相同代码库的其他部分异常的代码部分和安全性敏感的代码部分之间存在显著的相关性。
15.因此,所述实现使用统计方法,以用于通过聚焦于程序内的异常代码来查找安全性敏感代码。该方法扮演双重角色,作为标识值得保护的代码的手段,以及作为在采用软件保护之后该代码被保护得有多好的度量。与早期的方法相比,该方法具有相当大的优势,即无论代码的表示如何,它都可以应用于代码,并且不需要代码流和功能的知识。
16.图1图示了所公开的实现如何能够适合于软件代码保护系统的工作流的示例,该软件代码保护系统可以由例如服务提供商来实现。预输入可以是以各种语言/格式——诸如swift、java、c/c++或objective c——的代码形式的源代码。然而,取决于用例,保护系统可能无法访问源代码。在1处示出的如由安全代码服务提供商接收的实际输入代码可以是各种形式的,诸如源、中间表示(例如,llvm、java字节码或专用格式)和本机对象代码。然后,在2处,从原始输入代码中提取代码属性。在3处,所提取的属性可以被写入通用属性文件。在4处,来自单个项目的所有属性文件被合并。在5处,所公开的实现被实现以计算代码的统计分布,如下面详细公开的那样,并且产生关于安全性的引导,也如下面描述的那样。这可以在6处被处理,与附加的安全性和其他引导相组合,被馈送到产生最终的安全性选择集的优化器,并且然后在已知的过程中被用于创建安全代码。
17.各种异常检测方法是众所周知的,并且通常被分类为有监督的或者无监督的异常检测技术。有监督机器学习异常检测方法要求存在包括正常和异常数据点以及对应标签的训练数据。有监督异常检测的示例包括使用神经网络、k最近邻和贝叶斯网络。无监督机器学习异常检测方法不要求带标签的训练数据,并且以只有一小部分传入数据是异常数据的统计假设为前提。无监督异常检测方法的示例包括k均值聚类、自编码器方法和基于假设的分析。
18.一种已知的无监督异常检测方法,被称为“隔离森林”,通过隔离数据中的离群值来标识异常。通过利用决策树算法,与其他常见异常检测算法相比,隔离森林检测异常的速度更快,并且要求的内存更少。从给定的特征集中选择特征,并且然后随机确定所选特征的最大值和最小值之间的分割值。特征的划分在树中针对异常数据值产生更小的路径,以将异常数据与“正常”数据中区分开来。所公开的实现可以使用隔离森林和其他已知的异常检测算法。
19.许多系统不存在精选的训练数据集,并且如上面指出的,在某些情况下,创建精选的数据集实际上是不可能的,因为代码语言可能不是人类可读的。因此,需要一种方法来对任意代码库的安全性敏感度进行估计和/或排名,该方法可以在具有最少的代码库先验知识的情况下工作。实现还可以用于测量由代码混淆器所应用的保护的有效性。这可以在开发期间应用(以确定新特征的有效性)、在产品配置期间应用(以确定要包括在特征中的安全性级别)和在客户应用期间应用(以确定所应用的保护的有效性)。
20.所公开的实现可以测量代码块(通常是执行功能的代码部分)的多个属性,以将其与同一程序中的代码的其他部分进行比较,并且将异常标识为安全性敏感度的指示符。当
在未受保护代码上先验地使用时,所述实现通过标记异常代码来标识要重点保护的代码部分。当在受保护代码上后验地使用时,所述实现通过寻找异常代码量的减少来测量保护的有效性。
21.所公开的实现可以被表征为具有五个主要阶段。
22.·
划分:将代码分成块
23.·
编码:将代码块转换成数字描述
24.·
建模:建立用于测量“异常”的代码库的模型
25.·
排名:使用模型利用异常度量对每个代码块进行排名
26.·
选择:使用排名来确定特定代码块是否是安全性相关的。
27.划分阶段将代码分成逻辑块。最自然的划分是在每个块中放入一个函数。然而,可以存在合期望的是不同分割时的用例,例如查看编译单元中的所有函数,或者查看函数中的不同基本块。还存在其中没有明显的函数结构的一些代码表示,在这种情况下,不同的划分是必要的。
28.编码阶段可以将代码(例如,函数)转换成语言不可知的数字表示。所述表示不一定是代码功能的编码,而是代码性质的编码,所述代码性质例如是条件指令的数量。尽管输出表示可以独立于输入格式,但是编码方法本身很可能并不独立于输入格式。每一种支持的输入格式(例如,特定语言的源代码,或者诸如llvm ir的中间表示)都可以具有该格式唯一的对应编码模块。在某些情况下,编码方法可以是平凡的,只需在文件内搜索即可。在其他情况下,它可能是更复杂的,诸如包括基于输入格式语法的自定义解析器。
29.可以在编码中捕获的特性的示例性但非详尽的列表是:
30.·
函数名的长度
31.·
函数中的行数
32.·
函数体中的标记(token)(操作)数量
33.·
函数签名中的参数数量
34.·
唯一符号数
35.·
变量数
36.·
由该函数引用的唯一函数的数量
37.·
解析该代码时遇到的错误数(元数据也可用于异常检测)
38.·
遇到特定符号或符号串的次数(例如,=、:、;、1、for以及许多其他符号或符号串)。
39.此外,可以捕获这些特性中的任何一个或者贯穿于代码中的其他特性的分布。例如,与函数的其他部分相比,函数的前25%中可能会出现更多的唯一符号。
40.图2图示了根据一个或多个实现的被配置用于创建受保护计算机代码的系统200。例如,系统200可以用于完成图1中步骤5所讨论的功能。在一些实现中,系统200可以包括一个或多个服务器202。根据客户端/服务器架构和/或其他架构,(一个或多个)服务器202可以被配置为与一个或多个客户端计算平台204通信,所述客户端计算平台204可以是远程平台。(一个或多个)客户端计算平台204可以被配置为经由(一个或多个)服务器202和/或根据对等架构和/或其他架构与其他客户端计算平台通信。用户可以经由(一个或多个)客户端计算平台204访问系统200。
41.(一个或多个)服务器202可以由机器可读指令206来配置,所述机器可读指令206可以由(一个或多个)服务器202的(一个或多个)处理器224执行。机器可读指令206可以包括一个或多个指令模块。所述指令模块可以包括计算机程序模块。所述指令模块可以包括计算机代码访问模块208、计算机代码转换模块210、计算机代码划分模块212、排名确定模块214、块选择模块216、代码安全技术应用模块218和/或其他指令模块中的一个或多个。
42.计算机代码访问模块208可以被配置为访问无保护计算机代码。短语“无保护计算机代码”是指将由所公开的实现来保护的代码,并且可以包括已经对其应用了安全功能的代码。
43.计算机代码划分模块210可以被配置为将计算机代码划分成代码块。可以基于代码功能、代码行、代码存储地址或以任何其他适当的方式来完成划分。理想的划分方法可以取决于代码的格式。两种可能的划分方法是基本块或编译单元。
44.计算机代码转换模块212可以被配置为将计算机代码转换成代码特性的数字描述。所述转换可以包括基于计算机代码的格式来解析代码。
45.作为非限制性示例,代码特性可以包括如下各项中的一个或多个:函数名的长度、函数中的行数、函数体中的操作数、函数签名中的参数数量、唯一符号数、多个变量数、函数引用的唯一函数的数量、解析代码时遇到的错误数和/或遇到特定符号或符号串的次数。
46.排名确定模块214可以被配置为通过对代码块应用异常检测算法,根据异常量度来确定至少一些代码块的相对对应排名。确定对应排名可以包括建立用于确定计算机代码的异常的一个或多个无监督学习模型。所述模型可以包括隔离森林模型。所述排名可以是异常量度、其归一化或近似,或者可以是根据基于量度的任何尺度的。在一些实现中,确定对应的排名可以包括向每个代码块分配得分,并且基于该得分对代码块进行排名。
47.块选择模块216可以被配置为通过将阈值应用于排名来选择代码块中的异常块。所述选择可以仅应用于超过阈值排名的代码块。
48.代码安全技术应用模块218可以被配置为将代码安全技术应用于至少一个异常代码块,从而创建受保护计算机代码。
49.图3图示了根据一个或多个实现的用于创建受保护计算机代码的方法300。下面呈现的方法300的操作旨在是说明性的。在一些实现中,方法300可以利用未描述的一个或多个附加操作来完成,和/或不利用所讨论的操作中的一个或多个来完成。此外,在图3中图示并且在下面描述方法300的操作的顺序不旨在是限制性的。
50.在一些实现中,方法300可以在一个或多个处理设备(例如,数字处理器、模拟处理器、设计成处理信息的数字电路、设计成处理信息的模拟电路、状态机和/或用于电子处理信息的其他机构)中实现。例如,方法300可以由图2的系统200实现。所述一个或多个处理设备可以包括响应于电子存储在电子存储介质上的指令来执行方法300的操作中的一些或全部的一个或多个设备。所述一个或多个处理设备可以包括通过硬件、固件和/或软件配置的一个或多个设备,其被专门设计用于执行方法300的操作中的一个或多个。
51.操作302可以包括访问计算机代码。根据一个或多个实现,操作302可以通过由包括与计算机代码访问模块208相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
52.操作306可以包括将计算机代码划分成代码块。根据一个或多个实现,操作304可
以通过由包括与计算机代码划分模块210相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
53.操作306可以包括将计算机代码转换成代码特性的数字描述。根据一个或多个实现,操作304可以通过由包括与计算机代码转换模块212相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
54.操作308可以包括通过对代码块应用异常检测算法利用异常度量来确定代码块中的至少一些的对应排名。根据一个或多个实现,操作308可以通过由包括与排名确定模块214相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
55.操作310可以包括通过将阈值应用于排名来选择代码块中的异常块。根据一个或多个实现,操作310可以提供由包括与块选择模块216相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
56.操作312可以包括对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。根据一个或多个实现,操作312可以通过由包括与代码安全技术应用模块218相同或相似的模块的机器可读指令配置的一个或多个硬件处理器来执行。
57.所公开的实现可以利用新的和新颖的无监督学习模型。被分成功能块的所有编码代码可以被用作单个语料库来生成异常模型。该模型可以是隔离森林模型或其他类型的模型。在一个示例中,异常模型可以返回指示代码有多异常的数字(通常在-1和1之间,尽管尺度是任意的)。与用于生成模型的代码相比,接近0的数字可以指示该代码是非常不感兴趣的(相对非异常的)。
58.该模型可以用于为每个代码块分配得分。然后,代码块按其得分排名。以该方式,可以产生代码块的有序列表,按照每个代码块有多异常进行排名。排名还可以包括诸如以下的过程:
59.·
最大得分(使用绝对值,因为+1和-1这两者都表示高度异常代码)
60.·
得分高于给定阈值的代码块的数量(同样,是绝对值)
61.·
得分的标准差。
62.所得到的有序列表提供了一种以增加选择安全性敏感代码的似然性的方式对代码块进行采样的方法。例如,如果选择了排名前50%的代码块,则可以预期,与如果选择排名较低的50%的代码块相比,将会呈现两倍数量的安全性敏感代码块。可以使用其他选择方法,诸如轮盘赌选择,或者甚至简单的阈值处理。
63.前3个阶段(编码、建模、排名)可以在保护后的代码上再次运行。排名中采取的措施可以与保护前完成的排名进行比较。如果保护是有效的,则我们应该期望最高得分更低,超过阈值的代码块更少,并且代码块之间的标准差更低。如上面指出的,编码、建模、排名和选择的阶段可以适合于用于代码保护的常规系统。
64.所公开的实现的一个示例可以基于特定用例而具有不同的“异常”定义。回想一下,异常代码是相对于感兴趣的应用中的其他代码来标识的,因此不要求在不同类型的应用(例如,游戏相对于银行应用)上“训练”异常检测器。然而,被测量的确切特征和用于将代码标识为异常的阈值是检测系统的参数,并且对于不同类型的应用,将这些参数设置得不同可以是有价值的。
65.所公开的实施例甚至在其中用户或其他系统绝对没有提供关于什么代码是安全
性敏感的引导的场景中也发挥作用。在该情况下,有效性的度量是该技术与随机猜测相比有多好地标识安全性敏感代码。如上所述,在样本数据上,所公开的实现表现得更好得多(30%相对于17%)。附加的实施例可以例如通过标记将异常检测与包括明确的用户引导的其他信息相组合,所述标记诸如“该代码*是*安全性敏感的”、“该代码*不是*安全性敏感的”。此外,可以应用隐式用户引导(例如,感兴趣的代码在应用的该通用部分中),并且可以应用从其他技术(机器学习、启发法等......)导出的引导。附加的引导可以用于缩小针对异常被检查的代码的范围,用于设置用于检测异常的参数,和/或可以简单地补充异常检测技术的结论。
66.在上面以如下通用方式描述了建模:即使对被分析的代码一无所知,建模也将发挥作用。然而,建模(即,确定异常)可以以若干种方式经由附加信息进行改进。例如,如果已知代码是用于游戏的,那么来自其他游戏的训练数据可以用于细化异常是如何被表征的。此外,可以使用输入语言、所使用的框架/库(例如,unity)、目标平台、作者、相同代码的较旧版本等等中的任何一个。
67.虽然原始的测试用例使用隔离森林来测量异常,但是其他算法也将发挥作用,并且实际上可以在估计安全性方面提供或多或少的准确性。可以使用自编码器,其被构建来创建源代码的编码表示的再现。自编码器的算法的选择几乎是任意的,只要它能够捕捉非线性关系并且准确地对描述底层代码语料库的数据分布进行建模。人工神经和受限玻尔兹曼机已经被证明对于这些目的是有效的。
68.使用上面的算法之一,将在代码语料库上创建编码器/解码器模型对。编码模型本质上充当一种“降维”形式,并且允许我们在不同程度上解释数据中的差异。然后,代码可以通过编码器的方式被编码成使用更少信息(更低维度)的格式。然后,该编码形式将通过解码器以产生重构。然后,异常可以被测量为重构偏离原始的程度。最终,用于测量异常的算法的选择将取决于准备/编码输入数据所投入的工作量。
69.测试中使用的隔离森林接受原始标记计数作为输入,并且因此要求最少的准备工作。基于神经网络的自编码器可能要求将输入表示为与平均值的偏差,或者更有利于神经网络中使用的任何学习算法和激活函数的某种其他方式。使用自编码器方法,降维的概念可能变得非常有趣,因为它允许控制我们对“异常”概念的概括程度。
70.在一些实现中,(一个或多个)服务器202、(一个或多个)客户端计算平台204和/或外部资源220可以经由一个或多个电子通信链路可操作地链接。例如,这样的电子通信链路可以至少部分地经由诸如互联网和/或其他网络的网络来建立。应当领会,这不旨在是限制性的,并且本公开的范围包括其中(一个或多个)服务器202、(一个或多个)客户端计算平台104和/或外部资源220可以经由一些其他通信介质可操作地链接的实现。
71.给定的客户端计算平台204可以包括被配置为执行计算机程序模块的一个或多个处理器。计算机程序模块可以被配置为使得与给定的客户端计算平台204相关联的用户能够与系统200和/或外部资源220对接,和/或提供在本文中归属于(一个或多个)客户端计算平台204的其他功能。作为非限制性示例,给定的客户端计算平台204可以包括台式计算机、膝上型计算机、手持式计算机、平板计算平台、智能手机、游戏控制台和/或其他计算平台中的一个或多个。
72.外部资源220可以包括在系统200外部的信息源、参与系统200的外部实体和/或其
他资源。在一些实现中,在本文中归属于外部资源220的功能中的一些或全部可以由系统200中包括的资源来提供。作为一个示例,外部资源220可以提供将安全功能应用于所选代码部分的安全服务。在另一个示例中,外部资源220可以存储和传输/接收要由系统200的实现保护的代码。
73.(一个或多个)服务器202可以包括电子存储装置222、一个或多个处理器224和/或其他组件。(一个或多个)服务器202可以包括通信线路或端口,以使能实现与网络和/或其他计算平台的信息交换。图2中(一个或多个)服务器202的图示不旨在是限制性的。(一个或多个)服务器202可以包括多个硬件、软件和/或固件组件,它们一起操作以提供在本文中归属于(一个或多个)服务器202的功能。例如,(一个或多个)服务器202可以由作为(一个或多个)服务器102一起操作的计算平台的云来实现。
74.电子存储装置222可以包括以电子方式存储信息的非暂时性存储介质。电子存储装置222的电子存储介质可以包括与(一个或多个)服务器202集成(即,基本上不可移动)提供的系统存储装置和/或经由例如端口(例如,usb端口、火线端口等)或驱动器(例如,磁盘驱动器等)可移动地可连接到(一个或多个)服务器202的可移动存储装置中的一个或两个)。电子存储装置222可以包括光学可读存储介质(例如,光盘等)、磁可读存储介质(例如,磁带、磁硬盘驱动器、软盘驱动器等)、基于电荷的存储介质(例如,eeprom、ram等)、固态存储介质(例如,闪存驱动器等),和/或其他电子可读存储介质中的一个或多个。电子存储装置122可以包括一个或多个虚拟存储资源(例如,云存储、虚拟专用网和/或其他虚拟存储资源)。电子存储装置222可以存储软件算法、由(一个或多个)处理器124确定的信息、从(一个或多个)服务器202接收的信息、从(一个或多个)客户端计算平台204接收的信息和/或使得(一个或多个)服务器202能够如本文所述的那样起作用的其他信息。
75.(一个或多个)处理器224可以被配置为在(一个或多个)服务器202中提供信息处理能力。照此,处理器224可以包括数字处理器、模拟处理器、被设计成处理信息的数字电路、被设计成处理信息的模拟电路、状态机和/或用于电子处理信息的其他机构中的一个或多个。尽管(一个或多个)处理器224在图2中被示出为单个实体,但是这仅仅是为了说明的目的。在一些实现中,(一个或多个)处理器224可以包括多个处理单元。这些处理单元可以在物理上位于相同的设备内,或者(一个或多个)处理器224可以标识协同操作的多个设备的处理功能。(一个或多个)处理器224可以被配置为执行所公开的模块和/或其他模块。(一个或多个)处理器224可以被配置为通过如下各项来执行模块:软件;硬件;固件;软件、硬件和/或固件的某种组合;和/或用于配置(一个或多个)处理器224上的处理能力的其他机构。如本文所使用的,术语“模块”可以是指执行归属于该模块的功能的任何组件或组件集。这可以包括在处理器可读指令的执行期间的一个或多个物理处理器、处理器可读指令、电路、硬件、存储介质或任何其他组件。
76.应当领会,尽管模块在图2中被图示为在单个处理单元内实现,但是在其中(一个或多个)处理器224包括多个处理单元的实现中,模块中的一个或多个可以远离其他模块实现。对不同模块所提供的功能的描述是为了说明的目的,而不旨在是限制性的,因为任何模块都可以提供比所描述的更多或更少的功能。例如,所述模块中的一个或多个可以被去除,并且其功能中的一些或全部可以由模块提供。作为另一个示例,(一个或多个)处理器224可以被配置为执行一个或多个附加模块,所述一个或多个附加模块可以执行下面归属于所公
开的模块之一的功能中的一些或全部。
77.尽管已经为了说明的目的基于当前被认为是最实用和优选的实现详细描述了本技术,但是应该理解,这样的细节仅仅是为了该目的,并且该技术不限于所公开的实现,而是相反,旨在覆盖在所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本技术在尽可能的程度上设想了任何实现的一个或多个特征可以与任何其他实现的一个或多个特征相组合。

技术特征:
1.一种被配置用于处理受保护计算机代码的系统,所述系统包括:一个或多个硬件处理器,由机器可读指令配置为:访问计算机代码;将计算机代码划分成代码块;将所述代码块转换成代码特性的数字描述;通过对所述代码块应用异常检测算法利用异常度量来确定所述代码块中的至少一些的对应排名;通过将阈值应用于排名来选择所述代码块中的异常块;和对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。2.根据权利要求1所述的系统,其中所述转换包括基于计算机代码的格式解析代码。3.根据权利要求1或2所述的系统,其中所述代码特性包括如下各项中的一个或多个:函数名的长度、函数中的行数、函数体中的操作数、函数签名中的参数数量、唯一符号数、多个变量数、函数引用的唯一函数的数量、解析代码时遇到的错误数和/或遇到特定符号或符号串的次数。4.根据权利要求1至3中任一项所述的系统,其中确定对应的排名包括建立用于确定计算机代码的异常的无监督学习模型。5.根据权利要求4所述的系统,其中所述模型是隔离森林模型。6.根据权利要求1至5中任一项所述的系统,其中确定对应的排名包括为每个代码块分配得分,以及基于所述得分对代码块进行排名。7.根据权利要求1至6中任一项所述的系统,其中所述选择仅被应用于超过阈值排名的代码块。8.根据权利要求1至7中任一项所述的系统,其中由机器可读指令配置的一个或多个硬件处理器用于:访问受保护计算机代码;将所述受保护计算机代码划分成受保护计算机代码块;将受保护代码块转换成受保护代码的特性的数字描述;通过对所述受保护代码块应用异常检测算法利用异常度量来确定所述受保护代码块中的至少一些的对应排名;和将所述受保护代码块中的至少一些的对应排名与所述代码块中的至少一些的对应排名进行比较,从而确定代码保护的有效性。9.一种用于创建受保护计算机代码的方法,所述方法包括:访问计算机代码;将所述计算机代码转换成代码特性的数字描述;将所述计算机代码划分成代码块;通过对所述代码块应用异常检测算法利用异常度量来确定所述代码块中的至少一些的对应排名;通过将阈值应用于排名来选择所述代码块中的异常块;和对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。10.根据权利要求9所述的方法,其中所述转换包括基于计算机代码的格式解析代码。
11.根据权利要求9或10所述的方法,其中所述代码特性包括如下各项中的一个或多个:函数名的长度、函数中的行数、函数体中的操作数、函数签名中的参数数量、唯一符号数、变量数、函数引用的唯一函数的数量、解析代码时遇到的错误数和/或遇到特定符号或符号串的次数。12.根据权利要求9至11中任一项所述的方法,其中确定对应的排名包括建立用于确定计算机代码的异常的无监督学习模型。13.根据权利要求12所述的方法,其中所述模型是隔离森林模型。14.根据权利要求9至13中任一项所述的方法,其中确定对应的排名包括为每个代码块分配得分,以及基于所述得分对代码块进行排名。15.根据权利要求9至14中任一项所述的方法,其中所述选择仅被应用于超过阈值排名的代码块。16.根据权利要求9至15中任一项所述的方法,进一步包括:访问受保护计算机代码;将所述受保护计算机代码划分成受保护计算机代码块;将受保护代码块转换成受保护代码的特性的数字描述;通过对所述受保护代码块应用异常检测算法利用异常度量来确定所述受保护代码块中的至少一些的对应排名;和将所述受保护代码块中的至少一些的对应排名与所述代码块中的至少一些的对应排名进行比较,从而确定代码保护的有效性。17.一种计算机程序,当由一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求9至16中任一项所述的方法。

技术总结
公开了用于创建受保护计算机代码的系统、方法和存储介质。示例性实现可以:访问计算机代码;将计算机代码转换成代码特性的数字描述;将计算机代码划分成代码块;通过对代码块应用异常检测算法利用异常度量来确定代码块中的至少一些的对应排名;通过将阈值应用于排名来选择代码块中的异常块;以及对异常代码块中的至少一个应用代码安全技术,从而创建受保护计算机代码。护计算机代码。护计算机代码。


技术研发人员:T
受保护的技术使用者:爱迪德技术有限公司
技术研发日:2023.01.05
技术公布日:2023/7/11
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐