The purpose of this project is to provide a cross platform library which can parse, modify and abstract
MachO and Android formats.
Parser: LIEF can parse
VDEX. Moreover it provides an user-friendly API to access format internals.
Modify: LIEF enables to modify some parts of these formats.
Abstract: Usually formats have common features like sections, symbols, entry point… LIEF tries to provide an abstraction over these characteristics.
API: LIEF can be used in C++, Python and, to a lesser extent, in C
The global architecture looks like this:
In the architecture, each format has its own namespace, parser and builder. The parser takes a binary, library… as input and decomposes in LIEF object. For instance, the
ELF format has segments, so
ELF::Parser will parse segments to create
ELF::Segment. In the
ELF::Binary class we will have a list of
ELF::Segment which can be modified (change type, size, content…). Then the
ELF::Builder will transform
ELF::Binary into a valid executable.