Skip to content

A colorful, user-friendly alternative to readelf for analyzing ELF binaries. Displays headers, segments, sections, and symbols with beautiful colored output and human-readable descriptions. Supports 32/64-bit and both endiannesses.

License

Notifications You must be signed in to change notification settings

kunalsinghdadhwal/binparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

binparse

A colorful, user-friendly alternative to readelf for analyzing ELF binaries.

binparse provides beautiful colored terminal output with human-readable descriptions of all ELF structures including headers, segments, sections, and symbols. It supports both 32-bit and 64-bit ELF files with little and big endian byte ordering.

Installation

From Cargo

cargo install binparse

From source

git clone https://github.com/kunalsinghdadhwal/binparse.git
cd binparse
cargo build --release

The binary will be available at target/release/binparse.

Install globally

cargo install --path .

Usage

binparse [OPTIONS] <FILE>

Options

Flag Long Description
-H --header Display ELF header
-p --segments Display program headers (segments)
-s --sections Display section headers
--symbols Display symbol tables
-a --all Display all information
-h --help Print help
-V --version Print version

Examples

Display ELF header (default behavior):

binparse /usr/bin/ls

Display program headers:

binparse -p /usr/bin/ls

Display section headers:

binparse -s /usr/bin/ls

Display symbol tables:

binparse --symbols /usr/bin/ls

Display all information:

binparse -a /usr/bin/ls

Combine multiple options:

binparse -H -p -s /usr/bin/ls

Sample Output

File: /usr/bin/ls
Size: 142312 bytes
Format: 64-bit, little endian, System V

ELF Header
  e_ident
    Magic: (ELF) (7F 45 4C 46)
    Class (EI_CLASS): 64-bit (2)
    Data (EI_DATA): little endian (1)
    Version (EI_VERSION): current (1)
    OS/ABI (EI_OSABI): System V (0)
    ABI Version (EI_ABIVERSION): 0
  Core
    Type (e_type): Shared object file - ET_DYN (0x0003)
    Machine (e_machine): AMD x86-64 (0x003E)
    Version (e_version): 1 (current) (0x00000001)
    Flags (e_flags): none (0x00000000)
    ELF Header Size (e_ehsize): 64 bytes
  Addresses / Offsets
    Entry Point (e_entry): 0x0000000000006D30
    Program Headers Offset (e_phoff): 0x0000000000000040
    Section Headers Offset (e_shoff): 0x0000000000022428
    Program Header Size (e_phentsize): 56 bytes
    Program Header Count (e_phnum): 13
    Section Header Size (e_shentsize): 64 bytes
    Section Header Count (e_shnum): 31
    Section Name String Table Index (e_shstrndx): 30

Features

  • Full ELF header analysis with e_ident, core fields, and address/offset information
  • Program header (segment) display with human-readable type descriptions
  • Section header display with names resolved from .shstrtab
  • Symbol table display for both .symtab and .dynsym
  • Human-readable decoding of:
    • Machine architectures (x86, x86-64, ARM, AArch64, RISC-V, and 50+ others)
    • OS/ABI identifiers (System V, Linux, FreeBSD, etc.)
    • Segment types (PT_LOAD, PT_DYNAMIC, PT_GNU_STACK, etc.)
    • Section types and flags
    • Symbol types, bindings, and visibility
  • Colored output for improved readability
  • Graceful error handling for invalid or unsupported files

Dependencies

Comparison with readelf

Feature binparse readelf
Colored output Yes No
Human-readable descriptions Yes Limited
ELF header Yes Yes
Program headers Yes Yes
Section headers Yes Yes
Symbol tables Yes Yes
Relocations No Yes
Dynamic section No Yes
Notes No Yes
Version info No Yes

About

A colorful, user-friendly alternative to readelf for analyzing ELF binaries. Displays headers, segments, sections, and symbols with beautiful colored output and human-readable descriptions. Supports 32/64-bit and both endiannesses.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages