Files
lifting-bits-remill/docs

Remill documentation

This document provides an index for topics relating to the design, implementation, and workings of Remill. Remill is an open-source, permissively licensed program. Persons interested in helping with the development of Remill should consult the "How to contribute" document.

Remill is a static binary translator. It consumes machine code instructions, and produces LLVM bitcode modules that accurately represents the semantics and operations performed by those instructions. These modules can be compiled back to machine code or analysed statically.

The operations, or semantics, of instructions are implemented using C++ functions. The "How to add and test an instruction"" document describes the formatting and structure of these C++ functions.

Remill does not consume binary programs directly. It depends on third-party tools like Binary Ninja or IDA Pro to disassemble binaries and produce "control-flow graph" (CFG) messages that tell Remill about basic blocks of machine code. The "How to represent and format machine code" document describes the structure and contents of the CFG file format.

Remill is designed with a narrow purpose: it only lifts machine code to LLVM bitcode.