中文

高效的二进制级覆盖率分析

软件工程 2020-09-11 v3

摘要

代码覆盖率分析在软件测试过程中起着重要作用。近来,覆盖率反馈的显著有效性引发了人们对反馈引导模糊测试的广泛兴趣。在本工作中,我们介绍 bcov,一种用于二进制级覆盖率分析的工具。我们的工具在无需编译器支持的情况下对 ELF 格式的 x86-64 二进制文件进行静态插桩。我们实现了若干技术以提高效率并扩展到大型现实软件。首先,我们将 Agrawal 的探针剪枝技术引入二进制级插桩,并有效利用其超级块来降低开销。其次,我们引入切片微执行,一种用于跳转表分析的鲁棒技术,它提高了 CFG 精度并使我们能够对跳转表项进行插桩。此外,x86-64 中较小的指令给插入绕行带来了挑战。为应对该挑战,我们积极利用填充字节,并系统地将绕行托管在相邻基本块中。我们在由 FFmpeg 和 LLVM 等八个流行且经过充分测试的软件包编译而成的 95 个二进制文件语料库上评估 bcov。采用两种具有不同边级精度的插桩策略对该语料库中所有函数(超过 160 万个函数)进行补丁。我们的精确策略平均性能和内存开销分别为 14% 和 22%。插桩后的二进制文件不引入任何测试回归。报告的覆盖率高度准确,平均 F 值为 99.86%。最后,我们的跳转表分析在 gcc 二进制文件上与 IDA Pro 相当,并在 clang 二进制文件上优于它。

关键词

引用

@article{arxiv.2004.14191,
  title  = {Efficient Binary-Level Coverage Analysis},
  author = {M. Ammar Ben Khadra and Dominik Stoffel and Wolfgang Kunz},
  journal= {arXiv preprint arXiv:2004.14191},
  year   = {2020}
}

备注

Accepted to the ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering - ESEC/FSE 2020