CN114691151A - 一种基于深度学习的优化代码反编译方法和系统 - Google Patents
一种基于深度学习的优化代码反编译方法和系统 Download PDFInfo
- Publication number
- CN114691151A CN114691151A CN202210271791.6A CN202210271791A CN114691151A CN 114691151 A CN114691151 A CN 114691151A CN 202210271791 A CN202210271791 A CN 202210271791A CN 114691151 A CN114691151 A CN 114691151A
- Authority
- CN
- China
- Prior art keywords
- hir
- code
- lir
- hpl
- deep learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Library & Information Science (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种基于深度学习的优化代码反编译方法和系统。该方法的步骤包括:利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。本发明可以自动将LPL转换为HPL,针对优化和不优化的二进制反编译都具有较高的准确性。
Description
技术领域
本发明属于软件技术、信息安全技术领域,涉及软件逆向工程技术,具体涉及一种基于深度学习的优化代码反编译方法和系统。
背景技术
编译通常是将用高级语言(如C/C++)编写的计算机程序翻译成低级语言(如汇编语言或机器码),即运行在目标CPU(如X86,ARM)。由于两个PL(编程语言)之间的差异,通常会删除不必要的信息(例如,变量/函数名称)。此外,在这个过程中,优化技术旨在最小化或最大化可执行程序的某些属性,例如减少程序的执行时间、内存使用、存储大小等。注意优化后的目标程序的执行结果应该是与未优化的原始程序相同。优化通常有几个级别(例如,编译器GCC从O0到O3)。一些优化策略进行机器相关优化,利用目标机器语言的特性进一步改进优化。
反编译是一种将已编译的可执行程序或LPL(低级编程语言)转换为功能等效且易于阅读的HPL(高级编程语言)的技术。反编译后的代码通常用于理解难以阅读的LPL、发现程序漏洞、分析恶意行为或执行克隆检测。它还可以帮助将没有源代码的程序移植到不同的体系结构(例如,不同的硬件或操作系统)。现有的反编译器多用规则模式匹配,将LPL提升为中间表示,这对于反编译器恢复HPL非常重要。然而,已知的指令集非常多样化,通常需要分析师付出巨大的努力(例如,几年的开发)来总结规则。更糟糕的是,由于编译/优化策略的变化导致反编译规则的频繁变化,这意味着分析人员必须不断更改他们之前生成的规则。这个过程既耗时又容易出错,因为规则很可能会发生冲突(尤其是许多旧规则)。
机器翻译技术是自然语言处理中的一种技术,将一种语言翻译为另一种语言,例如英语到法语的翻译。通过编码器将输入的一种语言编码为特定的向量,然后解码器根据该向量解码得到输出的语言。模型可以通过大量的数据学习到输入和输出的句子和词之间的映射规则。通过机器翻译模型,可以自动化的学习LPL和HPL之间的映射规则,实现反编译的效果。
发明内容
本发明的目的在于提供一种基于深度学习模型的优化代码反编译方法和系统。本发明可以自动将LPL转换为HPL,针对优化和不优化的二进制反编译都具有较高的准确性。与IDA Pro中的Hex-Rays等最先进的反编译器相比,本发明对优化代码的反编译也更加准确且具有更好的可读性。
本发明采用的技术方案如下:
一种基于深度学习的优化代码反编译方法,包括以下步骤:
利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;
利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;
对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;
利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
进一步地,所述利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集,包括:
从LPL和HPL中获取函数级别的LIR和HIR;
对函数级别的LIR和HIR进行数据依赖分析,得到LIR的数据依赖图DDGl和HIR的数据依赖图DDGh;
对DDGl和DDGh先进行CFG的基本块的匹配,再在基本块内进行数据依赖图的子区域的匹配,得到更细粒度的LIR和HIR代码片段对;
使用随机生成高级语言的程序,按照一定的比例生成各种类型的语句,并在各个编译优化等级O0-O3下编译生成LIR和HIR,将大量的LIR和HIR代码片段对经过去重之后形成训练数据集。
进一步地,所述深度学习模型为GGS-NN模型,使用LIR的数据依赖图作为模型的输入,HIR的序列作为模型的输出。
进一步地,所述数据流恢复包括:对于每一对LIR和HIR,根据指令的类型,指令的顺序以及指令的源操作数和目标操作数的数量进行操作数的匹配,并对特殊情况进行规则的处理。
进一步地,所述进行操作数的匹配包括:首先按照操作数的个数对指令进行分类,当遇到普通的三操作数类型指令时,按照顺序将LIR中的操作数分配到HIR中。
进一步地,所述对特殊情况进行规则的处理,包括:
对于多操作数类型指令,根据指令的语法规则,利用中间变量,构建模版将LIR中的操作数填充到HIR中;
对于函数调用类型的指令,同样构建模版将LIR中的参数列表和返回值填充到HIR中;
对于涉及到优化的指令,通过优化规则构建模版,根据LIR中的操作数计算HIR中的操作数并进行填充。
进一步地,所述利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中,包括:
利用相似性匹配算法在开源项目中找到与生成的HPL代码相似的函数Psrc,将待恢复的函数Pdes编码为一个向量;
对于函数Pdes和函数Psrc分别构建抽象语法树,然后提取其上下文特征,对于Pdes中的变量,在Psrc中寻找与其具有相似特征的变量,将其语义信息迁移到Pdes的对应变量中,最终得到恢复语义信息的Pdes。
一种采用上述方法的基于深度学习的优化代码反编译系统,其包括:
数据集构建模块,用于利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;
深度模型翻译模块,用于利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;
HPL代码生成模块,用于对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;
语义信息恢复模块,用于利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
与现有技术相比,本发明的积极效果为:
本发明对于去掉符号信息和优化的二进制也具有较高的准确性。
本发明能够在恢复的源码中加入语义信息,增加代码的可读性。
附图说明
图1为本发明整体流程图。其中,CFG表示控制流图(Control Flow Graph);DDG表示数据依赖图(Data-Dependence Graph);SEQ表示代码序列(Sequence),LIR表示低级中间表示(Low-level Intermediate Representation),HIR表示高级中间表示(High-levelIntermediate Representation)。
图2为翻译单元划分示意图。其中,TU表示翻译单元(Translate Unit)。
图3为模型结构图。其中mul表示乘法指令。
图4为语义信息恢复示意图。
具体实施方式
下面通过具体实施例和附图,对本发明做进一步说明。
1.本发明的基于深度学习的优化代码反编译方法的整体流程如图1所示,包含如下要点;
1.1.数据集构建:从LPL和HPL中获取低级中间语言LIR和高级中间语言HIR代码对,进行数据依赖分析得到图结构的LIR和序列结构的HIR。
1.2.深度模型翻译:选择适合代码翻译的深度学习模型,利用构建的数据集训练深度学习模型,学习LIR和HIR之间的映射规则。利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR。
1.3.生成HPL代码:根据HIR,恢复数据流,恢复控制结构,生成类C语言的HPL代码。
1.4.语义信息恢复:利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
2.如要点1.1所述,数据集构建包含以下几个步骤:
2.1.反汇编和CFG的构建:当给定一个二进制文件时,需要先对该文件进行函数的划分和反汇编。本实施例使用开源工具Angr进行获取二进制中的函数并反汇编得到每个函数的LPL。同时,本实施例利用Angr中的静态分析技术得到每个函数的CFG。
2.2.中间语言的获取:由于LPL和HPL不适合模型直接进行学习。因此,对LPL进行了提升,首先加入了代码中无法体现的编译器隐含信息,然后根据数据依赖关系,对冗余指令进行了移除,得到最终的LIR。根据LPL的CFG可以映射得到LIR的CFG。对于HPL,使用编译器进行编译得到经过优化的高级中间语言HIR,对HIR代码进行数据依赖分析移除了冗余指令,得到了最终的HIR。
2.3.翻译单元的划分:将函数级别的LIR和HIR拆分成更小的对应单元,便于模型更好的学习。将函数级别的LIR和HIR拆分成更小的对应单元的方法是:对LIR和HIR进行数据依赖分析,得到LIR的数据依赖图DDGl和HIR的数据依赖图DDGh;对DDGl和DDGh先进行CFG的基本块的匹配,再在基本块内进行数据依赖图的子区域的匹配,可以得到更细粒度的LIR和HIR代码片段对。
图2为翻译单元划分示意图。其中:
(a)图是对LIR的数据依赖图DDGl第一阶段的划分。这一阶段的划分是依据节点的出度进行划分的,出度大于等于2的节点作为边界将图划分为几个不相交的区域。其中每个节点表示一条指令,图中节点中的内容都是对应的AArch64指令和该指令在基本块中的位置编号,例如bl0表示这一段代码中的第一条bl指令。边为两条指令间的数据传递关系,例如x0_5表示bl0计算出的变量x0_5被传递到了add3指令中。TU表示该阶段划分得到的单元,指向图中的虚线框。虚线箭头是根据实现数据依赖关系建立的单元之间的数据传递关系。
(b)图是对(a)中得到的单元进行合并的结果,合并的方式是如果一个单元只有虚线出边,那么则将他与其指向的单元合并。(a)中的5个单元最终合并成了(b)中的3个单元TU1,TU2和TU3。
(c)是对应的HIR代码的数据依赖图的单元划分。划分的方式和(a)、(b)相同,最终得到了3个HIR的单元TU1,TU2和TU3。其中节点和边分别表示指令和数据依赖。对应的HIR代码为实线方框中的内容。
2.4.构建数据集:使用随机生成高级语言的程序,按照一定的比例生成各种类型的语句,并在各个编译优化等级O0-O3下编译生成LIR和HIR。使用2.1~2.3中的方法得到大量的小代码片段对,经过去重之后形成训练数据集。
3.如要点1.2所述,深度模型翻译部分选取GGS-NN(Gated Graph SequenceNeural Network,门控图序列神经网络)模型作为翻译LIR的模型。使用LIR的数据依赖图作为模型的输入。HIR的序列作为模型的输出。
图3为模型结构图。首先,输入LIR的DDG,然后进行节点的初始化,然后使用GG-NN(Gated Graph Neural Network,门控图神经网络)对LIR的DDG进行编码,然后解码器部分使用Luong注意力机制的LSTM网络解码,输出已经预测出的部分序列,输出下一个待预测词。
4.如要点1.3所示,生成HPL代码部分包含以下几个步骤:
4.1.数据流恢复:获得指令对后,本发明设计了一种基于数据流的方法来恢复HIR操作数。其中基于数据流的方法是指:对于每一对LIR和HIR,根据指令的类型,指令的顺序以及指令的源操作数和目标操作数的数量进行操作数的匹配,并对一些特殊情况进行基于规则的处理。
其中,进行操作数的匹配是指:首先按照操作数的个数对指令进行分类,当遇到普通的三操作数类型指令时,按照顺序将LIR中的操作数分配到HIR中。
其中,对一些特殊情况进行规则的处理,具体是指:
1)多操作数类型指令,例如madd指令,通常会对应HIR中的多条指令。根据这些指令的语法规则,利用中间变量,构建模版将LIR中的操作数填充到HIR中。
2)函数调用等类型的指令,同样构建模版将LIR中的参数列表和返回值填充到HIR中。
3)涉及到优化的指令,例如整除的优化。通过优化规则构建模版,根据LIR中的操作数计算HIR中的操作数并进行填充。
4.2.控制结构恢复:利用已有的控制结构恢复技术进行恢复。
4.3.HPL生成:通过语句规则映射,将HIR恢复到HPL。
5.如要点1.4所示,语义信息恢复部分包含以下几个步骤:
5.1.利用相似性匹配算法在开源项目中找到相似的函数Psrc。将待恢复的函数Pdes编码为一个向量,并将其与候选数据集中的函数向量进行比较。候选数据集是基于二进制文件的应用场景,从开源社区下载的类似场景的项目,从候选数据集中选取最接近的函数Psrc。
5.2.对于函数Pdes和函数Psrc,分别构建他们的抽象语法树,然后提取他们的上下文特征,包括在函数中出现的位置、语句的类型、语句的操作等。对于Pdes中的变量,在Psrc中寻找与其具有相似特征的变量,将其语义信息迁移到Pdes的对应变量中。
图4为语义信息恢复示意图。其中,Sdes表示二进制文件,Pdes表示恢复出的源码,Psrc表示在候选数据集中找到的和待匹配函数相似的函数的源码,包括以下步骤:
1)将Sdes反编译得到源码Pdes,在候选数据集中根据相似性匹配算法匹配到和Pdes相似的函数Psrc。
2)反编译出的代码进行标准化,包括语法检查等。
3)对恢复的源码进行简单的优化,去除冗余的赋值语句,例如图4左下的int v1=a。
4)分别提取Pdes和Psrc中变量的上下文特征。
5)遍历Pdes中的每个变量,在Psrc中寻找具有相似的上下文特征,并且之前没有使用过的变量,并将其分配给Pdes中的对应变量作为新的变量名,最终得到恢复语义信息的Pdes。
本发明的技术方案与已有的基于深度学习的反编译方案相比,能够更好的处理优化的代码。本方案提出的单元划分方案,比直接使用模型翻译汇编代码和高级语言或者语法树相比,效果提升了4.1%-71.23%。
本发明的一个实施例中,模型训练过程包括:
1)使用正则表达式随机生成训练用的源码文件。
2)使用Clang+LLVM将源码编译成二进制文件,并获取中间生成的HIR。
3)使用Angr反编译二进制文件获取每个函数的LIR以及CFG。
4)使用本方案提出的单元划分方法,将HIR和LIR划分为更小的匹配单元。
5)使用本方案提到的模型结构进行训练。
本发明的一个实施例中,反编译过程包括:
1)使用Angr反编译二进制文件获取每个函数的LIR以及CFG。
2)使用本方案提出的单元划分方法,将LIR划分为更小的匹配单元。
3)使用训练好的模型将LIR翻译为HIR。
4)使用本方案提出的变量填充方法将LIR中的变量填充到HIR中。
5)将小单元重排序组成基本块,将基本块按照LIR的CFG重组成HIR的CFG。
6)使用模式匹配的方式将控制结构恢复为高级语言中的IF/WHILE/FOR/SWTICH/GOTO语句。
7)使用定义的模版识别函数的参数和返回值。
8)将翻译出的HIR根据模版翻译成高级语言。
9)将高级语言语句,参数,返回值,以及控制结构组合,构成完成的高级语言函数,完成反编译。
10)使用本方案提出的方法恢复语义信息,并对代码进行简单的优化。
基于同一发明构思,本发明的另一实施例提供一种采用本发明方法的基于深度学习的优化代码反编译系统,其包括:
数据集构建模块,用于利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;
深度模型翻译模块,用于利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;
HPL代码生成模块,用于对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;
语义信息恢复模块,用于利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
Claims (10)
1.一种基于深度学习的优化代码反编译方法,其特征在于,包括以下步骤:
利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;
利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;
对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;
利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
2.根据权利要求1所述的方法,其特征在于,所述利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集,包括:
从LPL和HPL中获取函数级别的LIR和HIR;
对函数级别的LIR和HIR进行数据依赖分析,得到LIR的数据依赖图DDGl和HIR的数据依赖图DDGh;
对DDGl和DDGh先进行CFG的基本块的匹配,再在基本块内进行数据依赖图的子区域的匹配,得到更细粒度的LIR和HIR代码片段对;
使用随机生成高级语言的程序,按照一定的比例生成各种类型的语句,并在各个编译优化等级O0-O3下编译生成LIR和HIR,将大量的LIR和HIR代码片段对经过去重之后形成训练数据集。
3.根据权利要求1所述的方法,其特征在于,所述深度学习模型为GGS-NN模型,使用LIR的数据依赖图作为模型的输入,HIR的序列作为模型的输出。
4.根据权利要求1所述的方法,其特征在于,所述数据流恢复包括:对于每一对LIR和HIR,根据指令的类型,指令的顺序以及指令的源操作数和目标操作数的数量进行操作数的匹配,并对特殊情况进行基于规则的处理。
5.根据权利要求4所述的方法,其特征在于,所述进行操作数的匹配包括:首先按照操作数的个数对指令进行分类,当遇到普通的三操作数类型指令时,按照顺序将LIR中的操作数分配到HIR中。
6.根据权利要求5所述的方法,其特征在于,所述对特殊情况进行基于规则的处理,包括:
对于多操作数类型指令,根据指令的语法规则,利用中间变量,构建模版将LIR中的操作数填充到HIR中;
对于函数调用类型的指令,同样构建模版将LIR中的参数列表和返回值填充到HIR中;
对于涉及到优化的指令,通过优化规则构建模版,根据LIR中的操作数计算HIR中的操作数并进行填充。
7.根据权利要求1所述的方法,其特征在于,所述利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中,包括:
利用相似性匹配算法在开源项目中找到与生成的HPL代码相似的函数Psrc,将待恢复的函数Pdes编码为一个向量;
对于函数Pdes和函数Psrc分别构建抽象语法树,然后提取其上下文特征,对于Pdes中的变量,在Psrc中寻找与其具有相似特征的变量,将其语义信息迁移到Pdes的对应变量中,最终得到恢复语义信息的Pdes。
8.一种采用权利要求1~7中任一权利要求所述方法的基于深度学习的优化代码反编译系统,其特征在于,包括:
数据集构建模块,用于利用低级编程语言LPL和高级编程语言HPL获取低级中间语言LIR和高级中间语言HIR,作为训练数据集;
深度模型翻译模块,用于利用训练数据集训练深度学习模型,学习LIR和HIR之间的映射规则,利用训练完成的深度学习模型,将待进行反编译的LPL的LIR翻译为HIR;
HPL代码生成模块,用于对深度学习模型得到的HIR进行数据流恢复和控制结构恢复,生成HPL代码;
语义信息恢复模块,用于利用相似性匹配算法寻找与生成的HPL代码相似的有源码代码,将有源码代码中的语义信息迁移到生成的HPL代码中。
9.一种电子装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~7中任一权利要求所述方法的指令。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~7中任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210271791.6A CN114691151A (zh) | 2022-03-18 | 2022-03-18 | 一种基于深度学习的优化代码反编译方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210271791.6A CN114691151A (zh) | 2022-03-18 | 2022-03-18 | 一种基于深度学习的优化代码反编译方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691151A true CN114691151A (zh) | 2022-07-01 |
Family
ID=82138289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210271791.6A Pending CN114691151A (zh) | 2022-03-18 | 2022-03-18 | 一种基于深度学习的优化代码反编译方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691151A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501378A (zh) * | 2023-06-27 | 2023-07-28 | 武汉大数据产业发展有限公司 | 一种逆向工程还原源代码的实现方法、装置和电子设备 |
-
2022
- 2022-03-18 CN CN202210271791.6A patent/CN114691151A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501378A (zh) * | 2023-06-27 | 2023-07-28 | 武汉大数据产业发展有限公司 | 一种逆向工程还原源代码的实现方法、装置和电子设备 |
CN116501378B (zh) * | 2023-06-27 | 2023-09-12 | 武汉大数据产业发展有限公司 | 一种逆向工程还原源代码的实现方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112733137B (zh) | 一种面向漏洞检测的二进制代码相似性分析方法 | |
CN110018820B (zh) | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 | |
CN110870249A (zh) | 用于将高级语言代码编译为区块链平台上可执行的脚本的系统和方法 | |
CN112597063B (zh) | 缺陷代码定位的方法、装置以及存储介质 | |
CN113722218B (zh) | 一种基于编译器中间表示的软件缺陷预测模型构建方法 | |
JP6418696B2 (ja) | 命令セットシミュレータおよびそのシミュレータ生成方法 | |
CN114625844B (zh) | 一种代码搜索方法、装置及设备 | |
CN110990058B (zh) | 软件相似性度量方法及装置 | |
Vazou et al. | Theorem proving for all: equational reasoning in liquid Haskell (functional pearl) | |
CN112764738A (zh) | 基于多视图程序特征的代码自动生成方法及系统 | |
CN112379917A (zh) | 浏览器兼容性提升方法、装置、设备及存储介质 | |
Banerjee et al. | Variable name recovery in decompiled binary code using constrained masked language modeling | |
US11847436B2 (en) | Machine learning (ML) model-based compiler | |
Liang et al. | Neutron: an attention-based neural decompiler | |
US8935512B2 (en) | Instruction operation code generation system | |
Mendis et al. | Revec: program rejuvenation through revectorization | |
CN114691151A (zh) | 一种基于深度学习的优化代码反编译方法和系统 | |
US11487522B1 (en) | Training and/or using neural network model to generate target source code from lower-level representation | |
JP6651974B2 (ja) | 情報処理装置、コンパイル方法及びコンパイラプログラム | |
CN112527304A (zh) | 基于异构平台的自适应节点融合编译优化方法 | |
CN113282301B (zh) | 基于高级语言与汇编语言相关性的汇编指令转换方法 | |
CN114816435A (zh) | 一种基于逆向技术的软件开发方法 | |
CN115033884A (zh) | 基于危险函数参数依赖的二进制代码漏洞检测方法 | |
Liang et al. | Semantics-recovering decompilation through neural machine translation | |
Piñeiro et al. | Perldoop2: A big data-oriented source-to-source Perl-Java compiler |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |