Symbolic execution with SYMCC: don't interpret, compile!

Sebastian Poeplau, Aurélien Francillon

  • Read: 26 Apr 2025
  • Published: 12 Aug 2020

SEC’20: Proceedings of the 29th USENIX Conference on Security Symposium, Article No.: 11, Pages 181 - 198

https://dl.acm.org/doi/10.5555/3489212.3489223


Q&A (link)

What are the motivations for this work?

  • See Abstract, Introduction.
  • Want faster speed with practical symbolic execution.
  • Observation of the fact that symolic execution is implemented as essentially an interpreter.
  • Want to replace innterpretation with compilation to acheive better performance.

What is the proposed solution?

  • See Introduction, Section 3.
  • A compilation-based approach to symbolic execution that performs better than state-of-the-art implementations by orders of magnitude.
  • Embed the symbolic processing into the target program.
  • At each branch point in the program, the “symbolized” binary will generate an input that deviates from the current execution path.

What is the work’s evaluation of the proposed solution?

  • See Section 5.

What is your analysis of the identified problem, idea and evaluation? To be added.

What are the contributions?

  • See Abstract.
  • SymCC, an LLVM-based C and C++ compiler that builds concolic execuition right into the binary.

What are future directions for this research?

NONE

What questions are you left with?

NONE

What is your take-away message from this paper?

NONE

Written on