Symbolic Execution and Debugging Synchronization
Andrea Fioraldi

TL;DR
This thesis presents a novel approach combining symbolic execution with dynamic debugging to enhance reverse engineering, enabling seamless transfer of execution states between a debugger and symbolic executor.
Contribution
It introduces a synchronization mechanism between debuggers and symbolic executors, implemented on angr, supporting IDA Pro and GDB for improved reverse engineering workflows.
Findings
Enables transfer of execution state between debugger and symbolic executor
Supports multiple debugger frontends including IDA Pro and GDB
Enhances manual analysis by automating input discovery for code paths
Abstract
In this thesis, we introduce the idea of combining symbolic execution with dynamic analysis for reverse engineering. Differently from DSE, we devise an approach where the reverse engineer can use a debugger to drive and inspect a concrete execution engine of the application code and then, when needed, transfer the execution into a symbolic executor in order to automatically identify the input values required to reach a target point in the code. After that, the user can also transfer back the correct input values found with symbolic execution in order to continue the debugging. The synchronization between a debugger and a symbolic executor can enhance manual dynamic analysis and allow a reverser to easily solve small portions of code without leaving the debugger. We implemented a synchronization mechanism on top of the binary analysis framework angr, allowing for transferring the state…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Embedded Systems Design Techniques · Logic, programming, and type systems
