Skip to content
gitoleg edited this page Apr 17, 2017 · 1 revision

Description

The graphs show the current quality of BAP lifting and disassembling facilities. Each architecture is represented with five kinds of graphs:

  • summary
  • error structure
  • instructions
  • binary/library ratio
  • stats

A summary graph shows a percentage of successfully disassembled and lifted instructions over all tests. A structure of the error is shown in the next chart. We distinguish between three kinds of errors. A semantic soundness error occurs when an instruction was lifted incorrectly. A semantic completeness error designates that our lifters do not support this instruction. Finally, a disassembler error happens when the backend is unable to decode the provided chunk of code. The latter error shows a quality of the disassembler backend (LLVM in our case). An instructions graph shows total numbers and is helpful to get a grasp of how much data were processed during the experiment. A binary/library ratio graph shows how much time we spent in a library vs a binary in each experiment. And the last graph shows some descriptive statistics computed for each tested binary. Other than soundness and completeness error probabilities, that are described above, it also shows a likelihood of false negative error, that describes how much code our disassembler misses during the control flow graph reconstruction.


Results for arm, obtained from binaries passed to qemu tracer


Results for x86-64, obtained from binaries built with gcc and passed to pin tracer


Results for x86-64, obtained from binaries built with clang and passed to pin tracer


Results for x86-64, obtained from binaries built with gcc and passed to qemu tracer


Results for x86-64, obtained from binaries built with clang and passed to qemu tracer


Results for x86, obtained from binaries built with gcc and passed to qemu tracer