kirancodes.me
To Proof Maintenance & Beyond!

Efficient binary-level coverage analysis

M. Ammar Ben Khadra, Dominik Stoffel, Wolfgang Kunz

Abstract

Code coverage analysis plays an important role in the software testing process. More recently, the remarkable effectiveness of coverage feedback has triggered a broad interest in feedback-guided fuzzing. In this work, we introduce bcov, a tool for binary-level coverage analysis. Our tool statically instruments x86-64 binaries in the ELF format without compiler support. We implement several techniques to improve efficiency and scale to large real-world software. First, we bring Agrawal’s probe pruning technique to binary-level instrumentation and effectively leverage its superblocks to reduce overhead. Second, we introduce sliced microexecution, a robust technique for jump table analysis which improves CFG precision and enables us to instrument jump table entries. Additionally, smaller instructions in x86-64 pose a challenge for inserting detours. To address this challenge, we aggressively exploit padding bytes and systematically host detours in neighboring basic blocks.

BibTeX
@inproceedings{Khadra-al:FSE20,
  author    = {M. Ammar Ben Khadra and
               Dominik Stoffel and
               Wolfgang Kunz},
  title     = {Efficient binary-level coverage analysis},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {1153--1164},
  publisher = {{ACM}},
  year      = {2020},
}

Related papers