Lifting Assembly to Intermediate Representation

Abstract

Translating low-level machine instructions into higher-level intermediate language (IL) is one of the central steps in many binary analysis and instrumentation systems. Existing systems build such translators manually. As a result, it takes a great deal of effort to support new architectures. Even for widely deployed architectures, full instruction sets may not be modeled, e.g., mature systems such as Valgrind still lack support for AVX, FMA4 and SSE4.1 for x86 processors. To overcome these difficulties, we propose a novel approach that leverages knowledge about instruction set semantics that is already embedded into modern compilers such as GCC. In particular, we present a learning-based approach for automating the translation of assembly instructions to a compiler's architecture-neutral IL. We present an experimental evaluation that demonstrates the ability of our approach to easily support many architectures (x86, ARM and AVR), including their advanced instruction sets. Our implementation is available as open-source software.

Document Details

Document Type
Pub Defense Publication
Publication Date
Mar 25, 2016
Source ID
10.1145/2980024.2872380

Entities

People

  • Niranjan Hasabnis
  • R. Sekar

Organizations

  • Air Force Office of Scientific Research
  • Intel Corporation
  • National Science Foundation
  • Stony Brook University

Tags

Fields of Study

  • Computer science

Readers

  • Computer Science.
  • Parallel and Distributed Computing.
  • Systems Analysis and Design