Symbolic Execution and Debugging Synchronization release_mj4bfsbrmja3dc6dryoqhd4kpu

by Andrea Fioraldi

Released as a article .



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 of the debugged process to the angr environment and back. The backend library is debugger agnostic and can be extended to work with various frontends. We implemented a frontend for the IDA Pro debugger and one for the GNU Debugger, which are both widely popular among reverse engineers.
In text/plain format

Archived Files and Locations

application/pdf  938.8 kB
file_jcki4uusezh4xgstxjvuvhjrgm (webarchive) (repository)
Read Archived PDF
Type  article
Stage   submitted
Date   2020-06-30
Version   v1
Language   en ?
arXiv  2006.16601v1
Work Entity
access all versions, variants, and formats of this works (eg, pre-prints)
Catalog Record
Revision: 91b56ba4-46ed-49c4-add2-c244e18559a9