【技术实现步骤摘要】
一种由二进制代码转换源代码的方法
[0001]本专利技术涉及计算机软件逆向分析及网络安全领域,具体涉及一种由二进制代码转换源代码的方法。
技术介绍
[0002]随着社会对软件需求的不断增长,必须确保软件能够保护用户的敏感数据并可靠地执行关键功能。在网络安全领域,为了确保软件的安全性,网络安全专家通常使用逆向工程 (Reverse Engineering, RE)来分析二进制软件,以查找软件漏洞并了解恶意软件。但是对于单个程序,此过程可能需要数天、数周或数月,随着软件使用量的增长,这对二进制分析提出了重大挑战。
[0003]二进制分析,是指从可执行的二进制文件出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。软件的逆向分析有多种应用,它对恶意软件分析及软件漏洞分析起到至关重要的作用。但是,这是一项很难学习的技能,需要研究人员花费大量的时间才能掌握一些软件分析的基本技能,即使是经验丰 ...
【技术保护点】
【技术特征摘要】
1.一种由二进制代码转换源代码的方法,其特征在于,包括如下步骤:(a)收集若干不同编程语言的源代码构成数据集,其中为源代码集合,为源代码集合中第个源代码文本表示,为源代码文本总数,为编程语言集合,为第个源代码文本表示所对应的编程语言;(b)使用编译器将第个源代码文本表示编译成其对应的二进制文件,构建二进制文件集合;(c)提取第个二进制文件的中间表示,将其中间表示记为,得到二进制中间表示集合;(d)构建包含源代码、编程语言和中间表示的数据集;(e)拼接第个源代码文本表示、第个源代码文本表示所对应的编程语言以及第个二进制文件的中间表示,构建序列和序列,其中为插入的固定文本,为分隔标记,为分类标记,为结束标记;(f)构建一个模型;(g)定义预训练任务和预训练任务;(h)预训练任务将序列进行破坏,为序列添加噪声,将破坏后的序列作为模型的输入,模型输出替换的程序指令;(i)预训练任务将序列输入模型中,模型通过第个二进制文件的中间表示和其源代码所对应的编程语言作为提示输出二进制的第个源代码文本表示;(j)计算得到总损失函数;(k)使用梯度下降法最小化预训练任务的总损失函数,通过反向传播更新模型的参数,更新模型的参数直至收敛,得到训练后的模型;(l)将待测试的二进制文件提取出其二进制文件的中间表示,构建模型的输入序列,将序列输入至模型,输出得到二进制文件的对应编程语言编写的源代码。2.根据权利要求1所述的由二进制代码转换源代码的方法,其特征在于:步骤(a)中表示的编程语言为C++或Java或PHP。
3.根据权利要求1所述的由二进制代码转换源代码的方法,其特征在于:步骤(c)使用 LLVM
‑
...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。