You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Dennis Goodlett 7db2a30b56
Update r_file_mkstemp to work with sandbox (#19601)
6 hours ago
.github Bring back the 32bit builds for Cydia ##build 5 days ago
binr Fix R2PM_DEPS handling in r2pm -ci ##tools 2 weeks ago
dist Move asm/wasm into anal, and add new opasm() callback ##abi 1 week ago
doc Fix typo in capstone.md 2 weeks ago
libr Update r_file_mkstemp to work with sandbox (#19601) 6 hours ago
man Implement rarun2 time=true attribute ##shell 2 weeks ago
mk Refactor, improve and move chip8 support out of libr/asm ##asm 1 month ago
pkgcfg Remove trailing spaces (#19460) 2 months ago
shlr Update to the latest thread-friendly sdb 1 day ago
sys Fix static/R_API function definition formatting 4 weeks ago
test Add EVM test 11 hours ago
.clang-format Some clang-format improvements ##indent 1 year ago
.gitattributes Compile new shell parser by default (#16660) 2 years ago
.gitignore Add new r2pm binary to .gitignore (#19531) 4 weeks ago
.lgtm.yml Fix LGTM builds 3 years ago
COMMUNITY.md Add COMMUNITY.md in hope to improve the community experience ##doc 1 year ago
CONTRIBUTING.md Rewrite user-facing documentation (#19543) 3 weeks ago
COPYING Honor FSF filename license rules (LICENSE->COPYING) 9 years ago
COPYING.LESSER Honor FSF filename license rules (LICENSE->COPYING) 9 years ago
DEVELOPERS.md Rewrite user-facing documentation (#19543) 3 weeks ago
Doxyfile Exclude dependencies and tests from documentation (#16821) ##doc 2 years ago
INSTALL.md Minor updates to README.md (#19546) 2 weeks ago
Makefile Initial implementation of r2pm.c ##r2pm 1 month ago
README.md Add 'first session' example in the README ##doc 1 week ago
SECURITY.md Rewrite user-facing documentation (#19543) 3 weeks ago
USAGE.md Rewrite user-facing documentation (#19543) 3 weeks ago
autogen.sh Post-release version bump 4 months ago
config-user.mk.acr Use COMPILER0 to derive the mk basename 1 month ago
configure After release version bump 1 month ago
configure-plugins Remove trailing spaces (#19460) 2 months ago
configure.acr After release version bump 1 month ago
configure.bat Properly check for %ERRORLEVEL% in batch scripts 2 months ago
configure.hook Create dist/ to hold all the distribution build files ##build (#18131) 1 year ago
env.sh Add more R2_ prefix for some var 4 years ago
global.mk Improve output for make -s and fix magic install with symlinks issue (#18781) 8 months ago
make.bat Fix #19448 - Fix atoi on non-null terminated string in PE section headers ##crash 2 months ago
meson.build After release version bump 1 month ago
meson_options.txt Generate bin/d the same way as other sdb paths with meson ##build 2 months ago
package.json Fix #19448 - Fix atoi on non-null terminated string in PE section headers ##crash 2 months ago
preconfigure Dont sync capstone all the time 3 months ago
preconfigure.bat Remove specific meson version in preconfigure 2 months ago
vsfix.bat r2pipe fixes for windows, fix some vs warnings 4 months ago

README.md

screenshot

Radare2: Unix-Like Reverse Engineering Framework

Latest packaged version Tests Status CII Best Practices Build Status Total alerts

See the Releases page for binary downloads. The current git master branch is 5.5.5, and the next release will be 5.6.0.

r2 is a complete rewrite of radare. It provides a set of libraries, tools and plugins to ease reverse engineering tasks.

The radare project started as a simple command-line hexadecimal editor focused on forensics. Today, r2 is a featureful low-level command-line tool with support for scripting. r2 can edit files on local hard drives, view kernel memory, and debug programs locally or via a remote gdb server. r2's wide architecture support allows you to analyze, emulate, debug, modify, and disassemble any binary.

screenshot

Installation

r2 can be installed via git or pip.

git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
pip install r2env
r2env init
r2env add radare2@git

Usage

These are the first steps to use r2, read the book or find tutorials for more details

$ r2 /bin/ls   # open the binary in read-only mode
> aaa          # same as r2 -A, analyse the binary
> afl          # list all functions (try aflt, aflm)
> px 32        # print 32 byte hexdump current block
> s sym.main   # seek to the given offset (by flag name, number, ..)
> f~foo        # filter flags with ~grep (same as |grep)
> iS;is        # list sections and symbols (same as rabin2 -Ss)
> pdf; agf     # print function and show control-flow-graph in ascii-art
> oo+;w hello  # reopen in rw mode and write a string in the current offset
> ?*~...       # interactive filter all command help messages
> q            # quit

Resources

Plugins

Many plugins are included with r2 by default. You can find more plugins using the r2pm package manager.

r2pm -ci <pkg> # install a package

Some of the most installed packages are:

  • esilsolve: The symbolic execution plugin, based on esil and z3.
  • iaito: The official Qt graphical interface.
  • radius: A fast symbolic execution engine based on boolector and r2.
  • r2dec: A decompiler based on r2 written in JS, accessed with the pdd command.
  • r2ghidra: The native ghidra decompiler plugin, accessed with the pdg command.
  • r2frida: The frida io plugin. Start r2 with r2 frida://0 to use it.

Contributing

There are many ways to contribute to the project. Contact the community, check out the github issues, or grep for TODO/FIXME/XXX comments in the source.

To contribute code, push your changes to a branch on your fork of the repository. Please ensure that you follow the coding and style guidelines and that your changes pass the testing suite, which you can run with the r2r tool. If you are adding significant code, it may be necessary to modify or add additional tests in the test/ directory.

For more details, see CONTRIBUTING.md and DEVELOPERS.md.

Documentation

To learn more about r2 we encourage you to watch youtube talks from r2con. In addition to reading blogposts, slides or the official radare2 book, here are some methods to contact us:

Community

Supported Platforms

Operating Systems

Windows (since XP), Linux, Darwin, GNU/Hurd, Apple's {Mac,i,iPad,watch}OS, Android [Dragonfly, Net, Free, Open] BSD, Z/OS, QNX, SerenityOS, Solaris, Haiku, Vinix, FirefoxOS.

Architectures

i386, x86-64, ARM, MIPS, PowerPC, SPARC, RISC-V, SH, m68k, m680x, AVR, XAP, S390, XCore, CR16, HPPA, ARC, Blackfin, Z80, H8/300, V810, V850, CRIS, XAP, PIC, LM32, 8051, 6502, i4004, i8080, Propeller, Tricore, CHIP-8, LH5801, T8200, GameBoy, SNES, SPC700, MSP430, Xtensa, NIOS II, Java, Dalvik, WebAssembly, MSIL, EBC, TMS320 (c54x, c55x, c55+, c66), Hexagon, Brainfuck, Malbolge, whitespace, DCPU16, LANAI, MCORE, mcs96, RSP, SuperH-4, VAX, AMD Am29000, LOONGARCH.

File Formats

ELF, Mach-O, Fatmach-O, PE, PE+, MZ, COFF, OMF, TE, XBE, BIOS/UEFI, Dyldcache, DEX, ART, CGC, Java class, Android boot image, Plan9 executable, ZIMG, MBN/SBL bootloader, ELF coredump, MDMP (Windows minidump), WASM (WebAssembly binary), Commodore VICE emulator, QNX, WAD, OFF, TIC-80 Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems.

Packaging Status

  • Termux package
  • Alpine Linux Edge package Alpine Linux 3.13 package Alpine Linux 3.12 package
  • Arch package AUR package
  • Fedora 34 package Fedora 32 package
  • FreeBSD port OpenBSD port pkgsrc current package
  • Homebrew package MacPorts package
  • HaikuPorts master package
  • Ubuntu 20.04 package Ubuntu 18.04 package
  • Debian Unstable package Raspbian Stable package Kali Linux Rolling package