A cross-platform library to parse, modify, and abstract executable formats like ELF, PE, and Mach-O.
LIEF is a library to instrument executable formats, providing tools to parse, modify, and abstract binary files like ELF, PE, and Mach-O. It solves the problem of working with low-level executable formats by offering a high-level, cross-platform API that simplifies binary analysis and manipulation.
Security researchers, reverse engineers, and developers working on binary analysis, malware research, or tooling that requires deep interaction with executable file formats.
Developers choose LIEF for its comprehensive support of multiple executable formats, language bindings (C++, Python, Rust), and extended features like disassembler integration and plugin support for popular reverse engineering platforms.
LIEF - Library to Instrument Executable Formats (C++, Python, Rust)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a unified API for ELF, PE, Mach-O, and Android formats like DEX, factoring common features like sections and symbols, as detailed in the main features section.
Offers official APIs in C++, Python, Rust, and C with installation guides for each, making it accessible across different development environments, including unofficial Node.js support.
Includes extended capabilities such as DWARF/PDB support, disassembler for multiple architectures, and plugins for Ghidra and BinaryNinja, enhancing reverse engineering workflows.
Designed for cross-platform use with installation via Homebrew, pip, and CMake, facilitating integration into diverse projects, as shown in the download instructions.
The Node.js API is marked as unofficial and AI-generated, which may lead to instability, incomplete features, or lack of support compared to core bindings like Python or C++.
The README lists multiple installation methods and versions (e.g., nightly vs. stable), which can complicate deployment and updates, especially in production environments.
The library's aim to abstract multiple formats might result in slower parsing and modification times compared to lightweight, format-specific tools, particularly for large binaries.