有没有尝试在反编译中使用人工神经网络?如果可以将经过修剪的源语义连同代码一起提供给神经网络,这样它就可以学习两者之间的联系,那就太好了。我认为当有优化时这可能会失去它的有效性,并且可能对高级语言也更好,但我有兴趣听到任何人对此进行的任何尝试。
2 回答
我将此添加为评论,但我想我也会继续将其发布为答案。看起来在 11 年的意义上这个问题已经发布,在这个方向上已经做了一些工作。这是一个链接: https ://www.groundai.com/project/a-neural-based-program-decompiler/1
这是摘要
基于神经的程序反编译器
二进制可执行文件的逆向工程是计算机安全领域的一个关键问题。一方面,恶意方可以从软件产品中恢复可解释的源代码以获得商业优势。另一方面,二进制反编译可用于代码漏洞分析和恶意软件检测。然而,有效的二进制反编译具有挑战性。传统的反编译器具有以下主要限制:(i)它们仅适用于特定的源-目标语言对,因此会导致新语言任务的开发成本不高;(ii) 它们的输出高级代码不能有效地保留输入二进制文件的正确功能;(iii) 他们的输出程序没有捕捉到输入的语义,而且逆向的程序很难解释。针对以上问题,我们建议 Coda111Coda 是 CodeAttack 的缩写,这是第一个基于神经的端到端代码反编译框架。Coda 将反编译任务分解为两个关键阶段:首先,Coda 使用指令类型感知编码器和树解码器在代码草图生成阶段生成带有注意力馈送的抽象语法树 (AST)。其次,Coda 然后使用由集成神经错误预测器引导的迭代纠错机更新代码草图。通过找到一个好的近似候选,然后将其修复为完美,与基线方法相比,Coda 实现了卓越的性能。我们通过对各种基准的广泛实验来评估 Coda 的性能。评估结果表明,Coda 在未见过的二进制样本上实现了平均 82% 的程序恢复精度,最先进的反编译器产生 0% 的准确度。此外,Coda 在注意力方面优于序列到序列模型,程序准确度高出 70%。我们的工作揭示了二进制可执行文件的脆弱性,并对软件开发的知识产权 (IP) 保护构成了新的威胁。
I'm assuming you mean decompilation to human readable C/C++ as compared to Assembly then,
Given the input size (optimized/compiled code) and the output size of succinct code, and the multi-line stateful nature of decomplilation process, I would have though this is a larger problem that a ANN could ever handle.