#binary-parser #parser #pe #parse #winapi

no-std bin+lib binper

BINPER is a binary parser library in Rust

6 releases

0.1.4 May 31, 2020
0.1.3 May 31, 2020
0.0.2 May 21, 2020

#19 in #win32

MIT license

115KB
890 lines

Contains (DOS exe, 56KB) samples/pe.exe

BINPER

MIT licensed

Description

BINPER is a binary parser library in Rust.

🔒 Implemented using 100% safe rust and works on all platforms supported by rust

Install

cargo install binper

Binary usage

binper [BIN_FILE_PATH]

⚠️ WARNING ⚠️

Currently, only PE file parsing is implemented

Library usage

use std::fs::File;
use std::io::Read;

use binper::pe::pe::PE;

fn main() -> binper::error::Result<()> {
    let mut f = File::open("samples/pe.exe")?;
    let mut data = Vec::new();
    f.read_to_end(&mut data)?;
    let pe:PE = PE::new(&data)?;
    println!("{}", pe);

    Ok(())
}

Progress

Windows binary PE

  • DOS header
  • PE header
  • Optional header
  • Data Directories
  • Sections
  • Export, Import tables
  • Resources

Linux binary ELF

  • ELF header
  • Program header table
  • Sections

Contribution

If you want to add some features, fix bugs or improve the code as defined in the MIT license, without any additional terms or conditions, I will gladly accept.

⚠️ WARNING ⚠️

This is an alpha version.
I don't recommend you to use in your production applications.
The structure of objects can change.

License

binper is distributed under the terms of the MIT license.

See LICENSE for details.

Acknowledgments

This project has been inspired by goblin project.

Dependencies

~5MB
~89K SLoC