UNIX-like reverse engineering framework and command-line toolset
Go to file
2022-04-17 01:01:49 +02:00
.github Github messed up the CI 2022-04-13 00:41:37 +02:00
binr Increase commit log from 3 to 10 in ##r2pm 2022-04-13 01:25:05 +02:00
dist Update r2pipe for use with docker (#19960) 2022-04-14 20:44:33 +02:00
doc Add math meme fortune 2022-04-01 12:51:41 +02:00
libr Fix aeabj output which returned different information than aeab ##json 2022-04-17 01:01:49 +02:00
man Remove last vestiges of newshell 2022-03-29 08:07:18 +02:00
mk Lots of cleanups to reduce the regressions in TCC ##refactor 2022-03-17 18:40:58 +01:00
pkgcfg Remove trailing spaces (#19460) 2021-12-02 17:39:59 +01:00
shlr Update capstone to the latest commit in the next branch 2022-04-09 11:12:24 +02:00
sys Add missing export cflags in sys/user 2022-03-22 09:44:10 +01:00
test Refactor and rename __core_cmp_bits to cmp_bits 2022-04-16 17:19:12 +02:00
.clang-format Some clang-format improvements ##indent 2021-01-25 00:34:58 +01:00
.gitattributes Compile new shell parser by default (#16660) 2020-04-21 13:44:30 +02:00
.gitignore Move download artifacts as script 2022-02-18 12:45:11 +01:00
.lgtm.yml Fix LGTM builds 2019-05-10 16:21:29 +08:00
autogen.sh Take care of package.json when running autogen 2022-02-26 01:45:20 +01:00
COMMUNITY.md Add COMMUNITY.md in hope to improve the community experience ##doc 2020-12-20 17:48:03 +01:00
config-user.mk.acr Support building with system-provided lz4 library ##build 2022-02-15 11:43:50 +01:00
configure After release version bump 2022-03-23 11:52:05 +01:00
configure-plugins Remove trailing spaces (#19460) 2021-12-02 17:39:59 +01:00
configure.acr After release version bump 2022-03-23 11:52:05 +01:00
configure.bat Add 'configure.bat static' argument to build r2blob.static.exe ##windows 2022-03-16 00:48:50 +01:00
configure.hook Create dist/ to hold all the distribution build files ##build (#18131) 2020-12-31 18:57:05 +01:00
CONTRIBUTING.md Rewrite user-facing documentation (#19543) 2022-01-01 06:11:46 -06:00
COPYING Honor FSF filename license rules (LICENSE->COPYING) 2013-03-30 00:54:05 +01:00
COPYING.LESSER Honor FSF filename license rules (LICENSE->COPYING) 2013-03-30 00:54:05 +01:00
DEVELOPERS.md Rewrite user-facing documentation (#19543) 2022-01-01 06:11:46 -06:00
env.sh Add more R2_ prefix for some var 2018-08-07 22:14:54 +02:00
global.mk Improve output for make -s and fix magic install with symlinks issue (#18781) 2021-05-30 23:46:58 +02:00
INSTALL.md Minor updates to README.md (#19546) 2022-01-06 18:05:42 +01:00
make.bat Simplify meson logic and use ole's PR to fix Windows ##build 2022-01-31 23:54:00 +01:00
Makefile Move meson rules from Makefile to mk/meson.mk 2022-02-01 20:03:01 +01:00
meson_options.txt Simplify meson logic and use ole's PR to fix Windows ##build 2022-01-31 23:54:00 +01:00
meson.build After release version bump 2022-03-23 11:52:05 +01:00
preconfigure Add missing 'OK' in the preconfigure script 2022-03-22 12:21:39 +01:00
preconfigure.bat Add support for Visual Studio 2022 (community+enterprise) ##build 2022-03-26 00:56:54 +01:00
README.md ci.tolower() 2022-04-13 11:22:12 +02:00
SECURITY.md Rewrite user-facing documentation (#19543) 2022-01-01 06:11:46 -06:00
USAGE.md Rewrite user-facing documentation (#19543) 2022-01-01 06:11:46 -06:00
vsfix.bat r2pipe fixes for windows, fix some vs warnings 2021-09-13 00:45:17 +02:00

screenshot

Radare2: Unix-Like Reverse Engineering Framework

Latest packaged version Tests Status build tcc CII Best Practices Build Status Total alerts TODO counter

See the Releases page for downloads. The current git master branch is 5.6.7, next release will be 5.6.8.

We ensure ABI stability for all the patch releases, you can mix/swap libraries and plugins without the need to recompile them if major and minor numbers are the same (X.Y.?).

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 -U 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 in r2 by default. But you can extend its capabilities by using the r2pm package manager.

r2pm -s <word> # search package by word
r2pm -ci <pkg> # install a package

Most popular 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, KVX, 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