本申请涉软件安全,例如涉及一种基于固件安全的反控制流平坦化方法、装置和计算机可读存储介质。
背景技术:
1、一般情况下,公开发行的软件(包括硬件内置的软件)通过一定的加密和混淆手段,阻止用户对程序进行反编译分析,从而实现程序逻辑不被泄露的目的。控制流平坦化(control flow flattening)是作用于控制流图的代码混淆技术,其基本思想是重新组织函数的控制流图中的基本块关系,通过插入一个“主分发器”来控制基本块的执行流程。如附图1为软件正常的执行流程图,经控制流平坦化处理后得到附图2的流程图。通过控制流平坦化,基本块间的前后关系将被混淆,从而加大了程序逆向分析的难度。
2、相关技术中公开一种二进制反混淆方法,包括构建混淆模式下的伪代码模型;获取二进制文件,并利用编译工具对二进制文件进行反编译,构建混淆模式下的二进制的伪代码模型;利用反编译工具的数据结构,构建二进制文件的指令图和控制块信息;利用混淆模式下的二进制的伪代码模型在指令图和控制块信息中寻找混淆代码,并去除所述混淆代码。
3、在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
4、相关技术去除了混淆代码,但无法准确获得源代码的控制流,从而无法准确还原控制流平坦代码。
5、需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
1、为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
2、本公开实施例提供了一种基于固件安全的反控制流平坦化方法、装置和计算机可读存储介质,以提高还原控制流平坦化代码的准确性。
3、在一些实施例中,所述方法包括:将控制流平坦化的目标代码输入外部知识库,获得目标代码对应程序文档的解释;外部知识库是基于目标代码对应的同一类型程序文档构建的;将控制流平坦化的目标代码和目标代码对应程序文档的解释,输入训练后的大语言模型,以生成反控制流平坦化的目标源代码。
4、在一些实施例中,所述装置包括:处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如前述的用于固件反控制流平坦化的方法。
5、在一些实施例中,所述计算机可读存储介质,存储有程序指令,所述程序指令在运行时,用以使得计算机执行如前述的用于固件反控制流平坦化的方法。
6、本公开实施例提供的基于固件安全的反控制流平坦化方法、装置和计算机可读存储介质,可以实现以下技术效果:
7、本公开实施例中,基于外部知识库协助大语言模型理解控制流平台化目标代码,并对目标代码进行解释。而后,基于大语言模型,获得控制流平坦化的目标代码的目标源代码。一方面,大语言模型因离线化,无法获得模型训练数据集以外的信息;而外部知识库的运用有效解决该问题,提高大语言模型对程序文档知识的运用。另一方面,外部知识库还可以协助大语言模型理解目标代码,从而使大语言模型生成更准确的源代码。
8、以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
1.一种基于固件安全的反控制流平坦化方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,通过以下方式构建外部知识库:
3.根据权利要求2所述的方法,其特征在于,对程序文档的原始文本进行分块,获得本文块,包括:
4.根据权利要求3所述的方法,其特征在于,按照目标块的大小和特定字符,对原始文本进行分块以获得本文块,包括:
5.根据权利要求2所述的方法,其特征在于,将矢量嵌入进行存储于向量数据库以构建外部知识库之后,还包括:
6.根据权利要求1至5任一项所述的方法,其特征在于,通过以下方式获得训练后的大语言模型:
7.根据权利要求6所述的方法,其特征在于,基于训练数据集和低秩自适应技术,优化codegen基底模型,包括:
8.根据权利要求7所述的方法,其特征在于,根据低秩特征空间,优化codegen基底模型,包括:
9.一种基于固件安全的反控制流平坦化装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至8任一项所述的基于固件安全的反控制流平坦化方法。
10.一种计算机可读存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,用以使得计算机执行如权利要求1至8任一项所述的基于固件安全的反控制流平坦化方法。