1对1还是1对n?探究函数内联对二进制相似分析的影响
软件工程
2022-05-06 v2
摘要
二进制相似分析对许多代码复用相关问题至关重要,且“1对1”机制被广泛应用,即一个二进制文件中的函数与源文件或二进制文件中的一个函数进行匹配。然而,我们发现由于函数内联的存在,函数映射是一个更为复杂的“1对n”甚至“n对n”问题。本文中,我们探究函数内联对二进制相似分析的影响。我们首先为四项相似分析任务构建 4 个面向内联的数据集,包括代码搜索、开源软件复用检测、漏洞检测和补丁存在性测试。随后,我们进一步研究函数内联的程度、现有工作在函数内联下的性能,以及现有内联模拟策略的有效性。结果表明,函数内联比例可接近 70%,而大多数现有工作忽略该现象并使用“1对1”机制。错配导致代码搜索中 30% 的性能损失,以及漏洞检测中 40% 的性能损失。此外,两种现有内联模拟策略仅能恢复 60% 的内联函数。我们发现,随着优化程度提高,内联通常具有累积性。建议设计低成本、高覆盖的内联模拟策略,采用条件内联与增量内联。
引用
@article{arxiv.2112.12928,
title = {1-to-1 or 1-to-n? Investigating the effect of function inlining on binary similarity analysis},
author = {Ang Jia and Ming Fan and Wuxia Jin and Xi Xu and Zhaohui Zhou and Qiyi Tang and Sen Nie and Shi Wu and Ting Liu},
journal= {arXiv preprint arXiv:2112.12928},
year = {2022}
}