Dynamic Analysis of ARM ELF Executable Code Using Static Binary Instrumentation

Conference «Tools & Methods of Program Analysis – 2015»

Dynamic program analysis methods are widely used in a broad range of activities related to software development; practical implementations of dynamic analysis rely on various code transformation and monitoring techniques. In this paper we focus on one of these techniques, static binary code instrumentation. We provide an overview of the existing tools implementing this technique and show that there are no tools directly applicable to our platform of choice, i.e., ARM/Linux and ELF binary format. We present an approach to perform static binary instrumentation for the platform in question and describe in detail the following points: user-specified instrumentation code and insertion point mapping; intermediate instruction representation used in instrumentation engine; code insertion process; offset correction process. Finally we describe a set of practical experiments of applying static binary instrumentation to Avalanche, a dynamic program analysis tool performing automatic input generation and bug discovery.