Reverse Engineering of ARM Binaries Using Formal Transformations

Tobias F. Pfeffer, Paula Herber, Jörg Schneider · 2014

Understanding the behavior of a program when no source code is available tends to be a complicated and time-expensive task. In particular, only very limited information can be gained without analyzing the binary's assembler representation. In this paper, we present a novel approach for reverse engineering of ARM binaries. The main idea is to translate the original assembler representation into a formal intermediate representation language, namely WSL, and then to apply rephrasing transformations to the code. To achieve a highly modular translation, we define a rule set to translate each assembler instruction individually. Furthermore, new rephrasing rules were developed to recover high level control flow aspects and to eliminate assembler specific program fragments in the intermediate code. Our translation engine was coupled with the FermaT program transformation system to apply the rephrasing rules. We demonstrate the applicability of our approach through the successful recovery of high level control flow statements in the Debian coreutils binaries. Using these example binaries, we studied the performance and the quality of our transformation.

Read the paper · More papers on PaperTik