LIEF is a cross-platform library for parsing, modifying, and abstracting executable file formats.
The tool addresses the need to work with binary executables across different platforms and architectures. It provides a unified interface for handling ELF, PE, MachO, COFF, OAT, DEX, VDEX, and ART formats, allowing developers to parse their internal structures, modify components like sections and symbols, and access common features through abstracted APIs. This eliminates the need to write separate code for each format's quirks and structures.
Developers working on reverse engineering, malware analysis, binary instrumentation, or security research should consider this tool. It suits projects that need to inspect or modify executables across Windows, Linux, and macOS without reimplementing format-specific logic. The library is particularly valuable for those building tools that must handle multiple executable types uniformly. Beyond basic parsing and modification, the tool offers extended capabilities including DWARF and PDB debug information support, Objective-C metadata extraction, Dyld Shared Cache handling, and built-in disassembly and assembly for multiple architectures including AArch64, x86/x86-64, ARM, RISC-V, MIPS, PowerPC, and eBPF. Plugins for Ghidra and Binary Ninja integrate the tool into existing reverse-engineering workflows.
The project maintains active development with regular updates to its documentation and tutorials covering practical use cases from basic format manipulation to advanced scenarios like transforming ELF executables into libraries and analyzing Android formats. The codebase supports multiple language bindings including C++, Python, and Rust, enabling integration into diverse development environments. The tool is backed by institutional sponsorship and provides comprehensive reference documentation alongside hands-on tutorials demonstrating real-world applications.