System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于混淆LLM生成的代码的方法技术_技高网

用于混淆LLM生成的代码的方法技术

技术编号:45045383 阅读:2 留言:0更新日期:2025-04-22 17:32
一种用于借助于语言模型(22)混淆程序代码(23)的方法(10)包括以下步骤:‑借助于语言模型(22)混淆(11)程序代码(23),‑从混淆过的程序代码(23)中产生(12)可执行文件(43),‑对可执行文件(43)进行动态去混淆(13),直到去混淆(13)结束或不产生新结果,‑存储(14)动态去混淆(13)的指标,‑将动态去混淆(13)的指标和可选地所生成的程序代码(23)返回(15)给语言模型(22)以用于进一步迭代混淆(11)。

【技术实现步骤摘要】

本专利技术涉及一种用于混淆llm生成的代码的方法。


技术介绍

1、程序代码越来越多地借助诸如大型语言模型(llm)的语言模型来产生。例如,这可以在语言转译或自动程序代码转译或代码重构的范围中发生。

2、使用用于例如从llm中自动生成代码的方案始终随之带来挑战,因此无法保证代码的正确性,并且无法保证性能改进。

3、将混淆化、混淆或代码掩饰理解为以如下方式改变代码和编译过的可执行文件:即人几乎无法理解程序,而程序保持功能正确。代码掩饰的优点在于:提高了防篡改安全性和防止逆向工程,例如以保护算法的知识产权。尤其是在处理较大的代码库时执行混淆很快就会变得耗费。


技术实现思路

1、本公开的第一一般方面涉及一种用于借助于语言模型来混淆程序代码的方法。

2、该方法包括

3、-借助于语言模型混淆程序代码,

4、-从混淆过的程序代码中产生可执行文件,

5、-对可执行文件进行动态去混淆,直到去混淆结束或不产生新结果,

6、-存储动态去混淆的指标,

7、-将动态去混淆的指标和可选地所生成的程序代码返回给语言模型以用于进一步迭代混淆。

8、本公开的第二一般方面涉及一种用于训练设立用于混淆程序代码的语言模型的方法。

9、该方法包括

10、-产生程序代码,

11、-借助根据本公开的第一一般方面的方法来混淆程序代码,

12、-产生对语言模型的奖励,其中根据动态去混淆的所存储的指标和/或代码复杂度的所存储的指标产生奖励,

13、-用奖励的值更新语言模型的权重。

14、本公开的第三一般方面涉及一种计算机系统,所述计算机系统设计用于执行根据第一和/或第二一般方面(或其实施方式)的方法。

15、本公开的第四一般方面涉及一种计算机程序,所述计算机程序设计用于执行根据第一一般方面(或其实施方式)的方法。

16、本公开的第五一般方面涉及一种计算机可读介质或信号,所述计算机可读介质或信号存储和/或包含根据第四一般方面(或其实施方式)的计算机程序。

17、第一、第二、第三、第四和第五一般方面的技术在一些情况下可以具有以下优点中的一个或多个。

18、本公开使用人工智能方法,例如llm,以产生混淆的或掩饰的代码。然后对经掩饰的所述代码进行检查、动态去掩饰并静态分析其复杂度。出自所述分析中的反馈随后再次馈入代码生成中。

19、本公开实现:能够对借助于llm混淆的代码进行有效的测试,使得llm能够生成更好的掩饰的代码。为此,可以围绕代码使用验证和确认(v&v)技术,以便保护语言模型的结果,即验证和确认其正确性。这种强大或完全的自动化提高了效率。v&v技术用于:确保结果(可能)正确,向用户提供有关转译的正确性、置信度和/或质量的反馈,并使代码混淆更加可靠。此外,所生成的代码的适用性以掩饰指标的形式动态和静态地测量。代码越被掩饰,即逆向工程越困难或越耗时,代码的混淆指标就越大。

20、通常,利用较大的代码库的工作通常使静态方法、例如抽象解释的可用性劣化,因为正确性保证无法在合理的时间范围内计算,或者需要近似,所述近似会引入过度近似误差。此外,静态方法几乎不适合测量软件性能,例如运行时。而本公开实现动态方法,即用于代码的运行时。

21、本公开实现混淆具有非确定性特性的程序代码,因为使用了诸如llm的语言模型。现有技术通常依赖于语法来插入掩饰指令。对于每个提出的工具,理论上可以开发特定的逆向工程工具来反转所使用的语法。使用llm提供了非确定性特性,这使逆向工程变得困难。

22、本公开使用诸如llm的语言模型来产生掩饰的代码。设有混淆反馈,以便产生向语言模型的更好的输入(提示词),这产生更好混淆的代码。

23、代码混淆是针对逆向工程的强化。本公开附加地实现追踪未授权的副本。代码混淆本质上在软件中插入“指纹”,所述指纹作用类似于安全特征。例如,借此可以追踪:例如将提取的固件是如何进一步分发的。

24、本公开涉及基于自动化测试、特别是动态测试方法的任何产品以及具有遗留代码或性能问题的任何产品。

25、本公开中的一些术语按以下方式使用。

26、“语言模型”特别可以是大语言模型(llm)、神经网络、循环神经网络(rnn)、变换器模型或代码模型,作为专门用于代码的语言模型,甚至是也可以是也包括代码的完全通用的语言模型。还包括计算机语言、如诸如计算机的计算装置的程序代码的代码。模型的语言不仅可以包含自然语言,而且可以包含例如编程语言的人工语言。

27、代码的“重构”(英文refactoring)在软件开发中表示:在保持可观察的程序行为、即功能的情况下对代码进行结构改进。在此,主要应当改进性能,即运行时和/或存储要求。此外,例如可以改进可读性、可理解性、可维护性和/或可扩展性,目的是减少错误分析和/或功能扩展的相应的耗费。典型的重构例如是将变量重命名为不言自明的名称和/或将部分代码提取到其自己的方法中。通过重构提高了代码的质量,从而提高了软件的质量。

28、“测试”、“检查”或“比较源程序代码和目标程序代码”可以包括:例如借助于有界模型检查、源语言中的测试、源语言中的合同测试和/或句法和文体测试对源程序代码和目标程序代码的相同行为的形式检查、模糊测试、测试工具输入的突变、源语言和/或目标语言中的合同的派生和/或语言模型的派生。

29、“测试工具test-harness”或测试框架包括软件和测试数据的集合,所述集合用于在不同环境条件下以自动化方式系统地测试程序。测试工具通常包括测试执行引擎和测试数据存储库或数据库,所述测试执行引擎负责处理测试逻辑,所述测试数据存储库或数据库包含测试脚本、测试程序和其他测试资源。在此,通过如下方式自动地产生测试工具:例如向数据库添加差异化测试。测试的开始可以借助出自测试数据库中的给定的或预制的测试来开始。系统还可以自动生成测试。

30、数据在此可以是软件代码,包括测试用例和测试工具加上功能方式或有效范围的附加的(自然语言的)描述。在语言转译的情况下,在此示例性地将c描述为源语言,并且将rust描述为目标语言,但其他组合也是可行的。将c转译成rust是令人感兴趣的,因为rust提供了安全关键系统领域中的特征,但其他语言(尤其是c)中存在大量遗留代码。在重构的情况下,源语言和目标语言是相同的。

31、“合同”是基于合同的编程或根据合同的设计(“designby contract合同设计”)的组成部分。这是软件开发概念,目的是通过定义超出静态定义的接口使用的正式合同来优化各个程序模块的协作。

32、术语“代码库(英文codebase)”表示属于项目的源文本文件以及任何其所属的配置文件的总体。代码库还可以包含对于编译过程所需的各种其他文件,例如所谓的makefile本文档来自技高网...

【技术保护点】

1.一种用于借助于语言模型(22)混淆程序代码(23)的方法(10),所述方法具有以下步骤:

2.根据权利要求1所述的方法(10),还具有以下步骤:

3.根据权利要求1或2所述的方法(10),其中存储所述动态去混淆(12)的指标和所生成的程序代码(23)。

4.根据权利要求1至3中任一项所述的方法(10),其中在所述动态去混淆(12)并且执行(14)静态复杂度检查(14)之后,根据指标(32)评估所述程序代码(23)的品质,其中所述指标(32)包括代码质量指标、测试质量指标和/或测试数量。

5.根据权利要求1至4中任一项所述的方法(10),其中所述动态去混淆(12)的指标包括去混淆运行时、代码痕迹、程序输出和/或诸如运行时的程序行为。

6.根据权利要求1至5中任一项所述的方法(10),其中所述代码复杂度的指标包括圈复杂度、源代码行数、可执行代码行数、耦合和/或继承深度、可维护性指数、认知复杂度、Halstead指标、诸如Halstead量和/或返工率。

7.根据权利要求1至6中任一项所述的方法(10),其中所述混淆(11)将安全特征插入到所述程序代码(23)中。

8.根据权利要求1至7中任一项所述的方法(10),其中比较所述动态去混淆(12)的所存储的指标和/或不同混淆过的程序代码(23)的代码复杂度的所存储的指标,以便确定最佳混淆过的程序代码(23)。

9.根据权利要求1至8中任一项所述的方法(10),其中并行地执行对所述可执行文件(43)的动态去混淆(13)和对所述程序代码(23)的静态复杂度检查(29)的执行(15)。

10.一种用于训练被设计用于混淆程序代码(23)的语言模型(22)的方法(50),所述方法具有以下步骤:

11.根据权利要求10所述的方法(50),其中通过仅执行一次验证来近似所述奖励。

12.一种计算机系统(20),被设计用于执行根据权利要求1至11中任一项所述的方法(10;50)。

13.一种计算机程序,被设计用于执行根据权利要求1至11中任一项所述的方法(10;50)。

14.一种计算机可读介质或信号,所述计算机可读介质或信号存储和/或包含根据权利要求13所述的计算机程序。

...

【技术特征摘要】

1.一种用于借助于语言模型(22)混淆程序代码(23)的方法(10),所述方法具有以下步骤:

2.根据权利要求1所述的方法(10),还具有以下步骤:

3.根据权利要求1或2所述的方法(10),其中存储所述动态去混淆(12)的指标和所生成的程序代码(23)。

4.根据权利要求1至3中任一项所述的方法(10),其中在所述动态去混淆(12)并且执行(14)静态复杂度检查(14)之后,根据指标(32)评估所述程序代码(23)的品质,其中所述指标(32)包括代码质量指标、测试质量指标和/或测试数量。

5.根据权利要求1至4中任一项所述的方法(10),其中所述动态去混淆(12)的指标包括去混淆运行时、代码痕迹、程序输出和/或诸如运行时的程序行为。

6.根据权利要求1至5中任一项所述的方法(10),其中所述代码复杂度的指标包括圈复杂度、源代码行数、可执行代码行数、耦合和/或继承深度、可维护性指数、认知复杂度、halstead指标、诸如halstead量和/或返工率。

7.根据权利要求1至6中任一项所述的方法(10),其中所...

【专利技术属性】
技术研发人员:C·胡斯J·赫金哈布施J·邝特M·沃尔勒M·施伦德S·E·塞拉洛艾萨
申请(专利权)人:罗伯特·博世有限公司
类型:发明
国别省市:

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

1