基于神经网络的可执行代码追溯性研究
1. 背景与相关工作
在软件验证中,可执行代码(对象代码)的追溯性至关重要,因为软件评估常基于源代码分析,需确保编译过程未引入安全漏洞、后门或不良行为。此前一些研究尝试探寻源代码与对象代码的关系,如有人用源代码大小和每千行缺陷数来研究与对象代码的联系,但未解决对象代码追溯性问题。
Buttle利用对象代码的程序逻辑结构(控制流图)与源代码匹配,而我们在使用程序流特征的基础上,还考虑源代码和对象代码间可能共存的其他关系以实现更好匹配。
在二进制差异分析方面,已有大量工作用于审查同一软件的不同版本、分析同一高级语言的恶意软件变体以及安全更新。多数工作采用图匹配比较二进制文件,不过尚未有针对追溯性问题的研究,但这些二进制差异分析的结果可借鉴用于追溯性问题。
在安全领域,部分研究使用神经网络进行密码学相关工作,如提出基于超混沌细胞神经网络的数字图像加密算法。在软件验证、验证和可靠性方面,也有基于人工智能的方法,如用神经网络进行软件可靠性预测、预测Web应用中的易出错模块等。
2. 提出的方法
我们的软件追溯方法包含两个步骤:
- 步骤一 :使用软件分析工具提取源代码和二进制代码的一些特征,这些特征可以是简单的,如大小,也可以是复杂的,如从控制流图或调用图导出的特征。
- 步骤二 :使用非线性非确定性仲裁器确定源代码和二进制代码之间的对应关系。这里使用四个特征(大小、调用图的过程数、控制流图的顶点数和边数)和人工神经网络作为仲裁器。
2.1 提取过程
编
超级会员免费看
订阅专栏 解锁全文
3721

被折叠的 条评论
为什么被折叠?



