UNIX-like reverse engineering framework and command-line toolset
Go to file
2023-04-12 11:24:58 +02:00
.github Add crosscompiled arm64 debian builds ##ci 2023-04-05 12:48:11 +02:00
binr Use r2 -NN from r2r and extend the env for rasm2/rabin2 ##shell 2023-03-27 15:21:13 +02:00
dist Migrate the hppa.gnu ##arch 2023-04-09 23:20:32 +02:00
doc Migrate the brainfuck ##arch 2023-04-01 11:38:31 +02:00
libr Fix REG_SP redefinition on rv64 builds 2023-04-12 11:24:58 +02:00
man Add rasm2 -N to mimmic the r2 -N flag ##shell 2023-03-27 15:21:13 +02:00
mk Update to the latest tinycc in the CI ##build 2023-01-11 00:18:13 +01:00
pkgcfg Use acr-2.1.0 new PKGCFG_DO to speedup pkg-config file generation ##build 2023-03-01 10:46:07 +01:00
shlr Migrate the sparc.gnu plugin ##arch 2023-04-09 01:48:18 +02:00
sys Add crosscompiled arm64 debian builds ##ci 2023-04-05 12:48:11 +02:00
test Fix #21576 - Function stack frame size in case of FP register in a Thumb's PUSH ##anal 2023-04-11 23:29:31 +02:00
.clang-format Some clang-format improvements ##indent 2021-01-25 00:34:58 +01:00
.gitignore Ignore meson/ninja build artifacts 2023-03-30 15:54:30 +02:00
autogen.sh Take care of package.json when running autogen 2022-02-26 01:45:20 +01:00
COMMUNITY.md Improve wording of COMMUNITY.md 2022-05-30 19:35:37 +02:00
config-user.mk.acr Use Smallz4 instead of liblz4 which is optional ##build 2023-03-15 15:29:54 +01:00
configure After release version bump 2023-03-15 15:32:44 +01:00
configure-plugins Initial implementation of the arch.any.as plugin ##arch 2022-11-30 15:43:54 +01:00
configure.acr After release version bump 2023-03-15 15:32:44 +01:00
configure.bat Windows builds include debug information by default ##build 2022-06-22 00:56:29 +02:00
configure.hook
CONTRIBUTING.md Update merging style in CONTRIBUTING.md (#21467) 2023-03-12 18:40:28 +01:00
COPYING Referenced https:// instead of http:// everywhere as per requirement 2023-03-22 06:58:25 +01:00
COPYING.LESSER Referenced https:// instead of http:// everywhere as per requirement 2023-03-22 06:58:25 +01:00
DEVELOPERS.md Referenced https:// instead of http:// everywhere as per requirement 2023-03-22 06:58:25 +01:00
env.sh
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 Add a line for fixing directory permissions in INSTALL.md 2023-03-21 12:37:08 +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 Implement wao recj for arm64 ##write 2023-03-23 10:19:07 +01:00
meson_options.txt meson support for smallz4, relates to #19849 ##build 2023-03-18 19:06:34 +01:00
meson.build meson support for smallz4, relates to #19849 ##build 2023-03-18 19:06:34 +01:00
preconfigure Remove references to the old v35arm64 dir and fix commit reference 2023-01-21 02:34:12 +01:00
preconfigure.bat Migrate arm.v35 ##arch 2023-03-17 08:23:37 +01:00
README.md Link the website from the icon in the README 2023-04-01 00:25:22 +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 Update sdb to remove double include paths ##build 2022-11-19 01:05:18 +01:00

screenshot

Radare2: Libre Reversing Framework for Unix Geeks

Latest packaged version Tests Status build tcc CII Best Practices Build Status Discord

See the Releases page for downloads. The current git master branch is 5.8.5, next will be 5.8.6.

  • Since r2-5.6.0 all the patch releases are abi stable
  • Odd patch versions are used in git builds only, releases use even numbers
  • No need to recompile the plugins, bindings or tools if the major and minor version are the same

Description

r2 is a complete rewrite of radare. It provides a set of libraries, tools and plugins to ease reverse engineering tasks. Distributed mostly under LGPLv3, each plugin can have different licenses (see r2 -L, rasm2 -L, ...).

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 from git or via pip using r2env.
  • Run sys/install.sh for the default acr+make+symlink installation
  • meson/ninja (muon/samu also works) and make builds are supported.
  • Windows builds require meson and msvc or mingw as compilers
  • To uninstall the current build of r2 run make uninstall
  • To uninstall ALL the system installations of r2 do: sudo make purge
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh

Default Windows builds use MSVC, so run those .bat:

preconfigure.bat       REM setup python, meson, ninja
configure.bat          REM run meson b + vs project
make.bat               REM run ninja -C b
prefix\bin\radare2.exe

Alternatively you can use r2env to switch between different versions.

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 file in read-only
> aaa          # analyse the program (r2 -A)
> afl          # list all functions (try aflt, aflm)
> px 32        # print 32 byte hexdump current block
> s sym.main   # seek to main (using flag name)
> f~foo        # filter flags matching 'foo' (internal |grep)
> iS;is        # list sections and symbols (rabin2 -Ss)
> pdf; agf     # disassembly and ascii-art function graph
> oo+;w hello  # reopen in read-write and write a string
> ?*~...       # interactive filter in all command help
> 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
r2pm -u <pkg>  # uninstall
r2pm -l <pkg>  # list installed packages

Most popular packages are:

  • esilsolve: The symbolic execution plugin, based on esil and z3
  • iaito: The official Qt graphical interface
  • radius2: A fast symbolic execution engine based on boolector and esil
  • 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
  • r2poke Integration with GNU/Poke for extended binary parsing capabilities
  • r2pipe Script radare2 from any programming language
  • r2papi High level api on top of r2pipe

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, BPF, 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, EVM, Tricore, CHIP-8, LH5801, T8200, GameBoy, SNES, SPC700, MSP430, Xtensa, NIOS II, Java, Dalvik, Pickle, WebAssembly, MSIL, EBC, TMS320 (c54x, c55x, c55+, c64x), Hexagon, Brainfuck, Malbolge, whitespace, DCPU16, LANAI, MCORE, mcs96, RSP, SuperH-4, VAX, KVX, Am29000, LOONGARCH, JDH8.

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

  • Snap package
  • Termux package
  • Alpine Linux Edge package Alpine Linux 3.13 package Alpine Linux 3.12 package
  • Arch package AUR package
  • EPEL 7 package
  • EPEL 8 package
  • EPEL 9 package
  • Fedora Dev Fedora 36 Fedora 34
  • FreeBSD port OpenBSD port pkgsrc current package
  • Homebrew package MacPorts package
  • Haiku Ports Void Linux
  • Ubuntu 20.04 package Ubuntu 18.04 package
  • Debian Unstable package Raspbian Stable package Kali Linux Rolling package