基于图嵌入的二进制代码模块划分方法
Binary Code Modularization Method Based on Graph Embedding作者机构:中国人民解放军战略支援部队信息工程大学郑州450001
出 版 物:《计算机研究与发展》 (Journal of Computer Research and Development)
年 卷 期:2024年第61卷第9期
页 面:2275-2289页
核心收录:
学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)]
摘 要:软件逆向分析作为网络空间安全领域研究的核心支撑技术,在软件漏洞分析、恶意代码行为分析等方面有着广泛应用.二进制代码的模块划分是该领域研究中的关键问题,通过将复杂或者大体量软件合理划分为若干模块,对于帮助分析者快速、准确理解软件结构与功能,提高分析效率起着重要作用.对此,常见方法是将代码中的函数及其调用关系看作复杂网络,通过社区发现算法来进行函数聚类,实现模块划分,该类方法通常只考虑节点之间的连接关系,忽略了节点的属性、节点之间的相似度等信息,且对噪声和异常值比较敏感.为了解决这些问题,提出了一种基于图嵌入的二进制代码模块划分(graph embedding based binary code modularization,GEBCM)方法.该方法首先将软件系统抽象为属性图,然后通过带有注意力机制和排名机制的图嵌入聚类方法对函数节点进行嵌入表示并聚类.通过聚类将二进制文件分组为更具有完整功能的独立部分,揭示了复杂程序结构中分离的模块语义信息.在2个数据集上进行的实验评估,验证了所提出的GEBCM方法的有效性.评估结果表明,相比其他二进制模块化工作,GEBCM的F1值平均提高10.2个百分点.此外,在针对恶意样本的评估实验中,GEBCM能有效地划分出恶意代码的模块,表现出优秀的可扩展性.