A cross-platform, zero-copy binary parsing crate for ELF, Mach-O, PE, and archive formats, written in Rust.
libgoblin is a Rust crate for parsing binary file formats like ELF, Mach-O, PE, and Unix/BSD archives. It provides zero-copy, endian-aware struct definitions and parsers, enabling efficient analysis and manipulation of executable files without unnecessary data copying. The crate supports both 32-bit and 64-bit variants and can operate in `no_std` environments.
Systems programmers, compiler developers, and security researchers working on binary analysis, kernel development, cross-platform tooling, or low-level systems where efficient parsing of executable formats is required.
Developers choose libgoblin for its zero-copy efficiency, comprehensive format support, and configurability. It eliminates the need for manual parsing or platform-specific code, offering a robust, fuzzed foundation for binary-related projects in Rust.
An impish, cross-platform binary parsing crate, written in 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.
Uses zero-copy parsing for ELF, Mach-O, PE, and archives, reducing memory overhead and improving performance, as emphasized in the README's feature list.
Handles 32-bit and 64-bit variants of major binary formats with automatic endianness adjustment, crucial for cross-architecture tooling and analysis.
Offers fine-grained control via feature flags like elf64 and mach32, allowing users to include only necessary components, which minimizes binary size and complexity.
Compatible with no_std environments, enabling use in kernel development or embedded systems without standard library dependencies, as highlighted in the use cases.
The README admits that the many cfg options can make the source hard to read and configure, potentially leading to confusion and setup difficulties for developers.
Focuses only on ELF, Mach-O, PE, and archives, missing support for other binary formats like COFF or proprietary ones, which may require integrating additional crates.
While efficient at parsing, it lacks built-in tools for extensive binary manipulation or editing, requiring extra development effort for modification tasks beyond analysis.