有没有尝试在反编译中使用人工神经网络?如果可以将源的修剪语义与代码一起提供给神经网络,那将是很好的,因此它可以学习两者之间的连接。我认为,当有优化并且可能对高级语言更好的工作时,这可能会失去它的有效性,但我有兴趣听到任何人在这方面的任何尝试。
答案 0 :(得分:0)
我认为你的意思是反编译为人类可读的C / C ++,而不是装配,
考虑到输入大小(优化/编译代码)和简洁代码的输出大小,以及解压缩过程的多行有状态性质,我认为这是ANN可以处理的更大问题。
答案 1 :(得分:0)
我将此添加为评论,但我想我也将其发布并作为答案。看起来在发出此问题的11年中,已经朝着这个方向完成了工作。这里是一个链接: https://www.groundai.com/project/a-neural-based-program-decompiler/1
这是摘要
二进制可执行文件的逆向工程是计算机安全领域中的一个关键问题。一方面,恶意方可能会从软件产品中恢复可解释的源代码,以获得商业利益。另一方面,二进制反编译可用于代码漏洞分析和恶意软件检测。但是,有效的二进制反编译具有挑战性。传统的反编译器具有以下主要限制:(i)它们仅适用于特定的源-目标语言对,因此会为新的语言任务带来不希望的开发成本; (ii)它们的输出高级代码不能有效地保留输入二进制文件的正确功能; (iii)它们的输出程序没有捕获输入的语义,并且反向程序很难解释。为了解决上述问题,我们建议Coda111Coda是CodeAttack。的缩写,CodeAttack是第一个端到端基于神经的代码反编译框架。 Coda将反编译任务分解为两个关键阶段:首先,Coda采用了一种指令类型感知编码器和一个树解码器,以在代码草图生成阶段集中注意力来生成抽象语法树(AST)。其次,Coda然后使用由集成的神经错误预测器引导的迭代错误校正机更新代码草图。与基线方法相比,Coda通过找到一个好的近似候选对象并将其固定为完美,从而获得了卓越的性能。我们通过在各种基准上进行广泛的实验来评估Coda的效果。评估结果表明,Coda在看不见的二进制样本上平均达到82%的程序恢复准确度,而最新的反编译器的准确度为0%。此外,Coda特别注意序列到序列模型,其程序精度为70%。我们的工作揭示了二进制可执行文件的漏洞,并对软件开发的知识产权(IP)构成了新的威胁。