Sound C Code Decompilation for a subset of x86-64 Binaries

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

We present FoxDec: an approach to C code decompilation that aims at producing sound and recompilable code. Formal methods are used during three phases of the decompilation process: control flow recovery, symbolic execution, and variable analysis. The use of formal methods minimizes the trusted code base and ensures soundness: the extracted C code behaves the same as the original binary. Soundness and recompilablity enable C code decompilation to be used in the contexts of binary patching, binary porting, binary analysis and binary improvement, with confidence that the recompiled code’s behavior is consistent with the original program. We demonstrate that FoxDec can be used to improve execution speed by recompiling a binary with different compiler options, to patch a memory leak with a code transformation tool, and to port a binary to a different architecture. FoxDec can also be leveraged to port a binary to run as a unikernel, a minimal and secure virtual machine usually requiring source access for porting.

Bibliographical metadata

Original languageEnglish
Title of host publicationProceedings of The 18th edition of the International Conference on Software Engineering and Formal Methods (SEFM)
Publication statusAccepted/In press - 7 Jul 2020