RAdare In Rust
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ci
r_config
r_cons
r_core
r_crypto
r_hash
r_io
r_search
r_util
src
test
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md
appveyor.yml
build.rs

README.md

RAIR License: GPL v3

Travis CI: Build Status

AppVeyor: Build status

RAIR is a work in progress rewrite of radare2 in rust with these goals:

  • native speed.
  • simpler building system.
  • zero cost memory safety.
  • smooth translation to multithreading.
  • extremely stable and well documented API.

It was hard to decide how to start this project and there was mainly two approaches

A) start rair completely from scratch.

B) replacing parts from radare till it all becomes written in rust.

I prefered the later approach because it will make rair usable right from the begining and it will be testable with radare2-regressions.

Get started

Currently rair depends almost completely on libr so the simplest way to have libr installed is to install radare2 fully first then installing rair.

$ git clone https://github.com/radare/radare2.git
$ git clone https://github.com/oddcoder/rair.git
$ cd radare2
$ sys/install.sh
$ cd ../rair
$ cargo install

Current status

Module Rust Porting Documentation Testing
R2agent NA NA NA
R2pm NA NA NA
Rabin NA NA NA
Ragg NA NA NA
Rahash Done -h Done
Rarun NA NA NA
Rair NA NA NA
Ragg-cc NA NA NA
Rasm NA NA NA
Rax NA NA NA
Radiff NA NA NA
Rafind Partial -h Done
r_anal NA NA NA
r_asm NA NA NA
r_bin NA NA NA
r_bp NA NA NA
r_config Partial NA Done
r_cons Partial FFI NA NA
r_core NA NA NA
r_crypto Partial FFI NA NA
r_debug NA NA NA
r_egg NA NA NA
r_flag NA NA NA
r_fs NA NA NA
r_hash Partial FFI NA NA
r_io Partial FFI NA NA
r_lang NA NA NA
r_magic NA NA NA
r_parse NA NA NA
r_reg NA NA NA
r_search Partial NA Done
r_socket NA NA NA
r_syscall NA NA NA
r_util Partial FFI NA NA

Get involved

Regardless to how skilled you are, there will always be something for you to do! I always try to keep the code base clean. This is list of what you can do from easy to the more challenging:

  • Improve this readme.
  • Add support for code coverage / travis / and other CI systems
  • Document already exisiting functions.
  • fix one of cargo clippy warnings.
  • Refactor the current codebase, there are many long functions and breaking them down is really usefull.
  • Write unit tests/ fuzz rair
  • imlement one or more of these:
    • rabin2
    • radiff2
    • ragg2
    • rasm2
    • radare2
    • ragg2-cc
    • rarun2
    • rax2