2023-03-31 22:25:22 +00:00
< a href = "https://radare.org/" > < img border = 0 src = "doc/images/r2emoji.png" alt = "screenshot" align = "left" width = "128px" > < / a >
2012-10-22 23:03:26 +00:00
2022-09-13 06:30:52 +00:00
## Radare2: Libre Reversing Framework for Unix Geeks
2012-10-22 23:03:26 +00:00
2022-07-05 11:38:22 +00:00
[![Latest packaged version ](https://repology.org/badge/latest-versions/radare2.svg )](https://repology.org/project/radare2/versions) [![Tests Status ](https://github.com/radareorg/radare2/actions/workflows/ci.yml/badge.svg?branch=master )](https://github.com/radareorg/radare2/actions/workflows/ci.yml?query=branch%3Amaster) [![build ](https://github.com/radareorg/radare2/actions/workflows/build.yml/badge.svg?branch=master )](https://github.com/radareorg/radare2/actions/workflows/build.yml?query=branch%3Amaster) [![tcc ](https://github.com/radareorg/radare2/actions/workflows/tcc.yml/badge.svg?branch=master )](https://github.com/radareorg/radare2/actions/workflows/tcc.yml)
2023-02-20 21:14:56 +00:00
[![CII Best Practices ](https://bestpractices.coreinfrastructure.org/projects/741/badge )](https://bestpractices.coreinfrastructure.org/projects/741) [![Build Status ](https://scan.coverity.com/projects/416/badge.svg )](https://scan.coverity.com/projects/416) [![Discord ](https://badgen.net/discord/members/YBey7CR9jf )](https://discord.gg/YBey7CR9jf)
2022-05-03 13:51:39 +00:00
2022-01-06 17:05:42 +00:00
See the [Releases ](https://github.com/radareorg/radare2/releases ) page for
2023-03-14 21:27:09 +00:00
downloads. The current git `master` branch is `5.8.5` , next will be `5.8.6` .
2021-05-24 22:05:25 +00:00
2022-08-18 18:51:06 +00:00
* Since r2-5.6.0 all the patch releases are [abi stable ](doc/abi.md )
* 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
2022-03-15 18:41:11 +00:00
2022-05-17 22:25:00 +00:00
### Description
2022-01-01 12:11:46 +00:00
r2 is a complete rewrite of radare. It provides a set of libraries, tools and
2022-05-17 22:25:00 +00:00
plugins to ease reverse engineering tasks. Distributed mostly under LGPLv3,
each plugin can have different licenses (see r2 -L, rasm2 -L, ...).
2021-03-01 23:49:30 +00:00
2022-01-01 12:11:46 +00:00
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.
2018-06-23 17:38:05 +00:00
2021-05-24 21:25:11 +00:00
< p align = "center" >
< a href = "https://www.radare.org/" > < img src = "doc/images/shot.png" alt = "screenshot" align = "center" border = 0 width = "600px" > < / a >
< / p >
2019-09-08 17:19:03 +00:00
2022-01-01 12:11:46 +00:00
## Installation
2021-03-01 23:49:30 +00:00
2022-05-22 22:22:02 +00:00
* r2 can be installed from `git` or via `pip` using `r2env` .
2022-06-09 17:22:40 +00:00
* 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
2022-05-22 22:22:02 +00:00
* To uninstall the current build of r2 run `make uninstall`
* To uninstall ALL the system installations of r2 do: `sudo make purge`
2022-01-01 12:11:46 +00:00
```sh
2021-05-24 21:25:11 +00:00
git clone https://github.com/radareorg/radare2
radare2/sys/install.sh
```
2020-12-17 10:37:42 +00:00
2022-05-22 22:22:02 +00:00
Default Windows builds use MSVC, so run those `.bat` :
```sh
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.
2022-01-01 12:11:46 +00:00
```sh
2022-03-22 10:12:43 +00:00
pip install -U r2env
2022-01-06 17:05:42 +00:00
r2env init
r2env add radare2@git
2022-01-01 12:11:46 +00:00
```
2021-05-24 22:05:25 +00:00
2022-01-12 14:46:49 +00:00
## Usage
These are the first steps to use r2, read the book or find tutorials for more details
```sh
2023-02-17 00:34:34 +00:00
$ r2 /bin/ls # open file in read-only
> aaa # analyse the program (r2 -A)
2022-01-12 14:46:49 +00:00
> afl # list all functions (try aflt, aflm)
> px 32 # print 32 byte hexdump current block
2023-02-17 00:34:34 +00:00
> 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
2022-01-12 14:46:49 +00:00
> q # quit
```
2022-01-01 12:11:46 +00:00
## Resources
2021-05-24 22:05:25 +00:00
2022-08-18 18:51:06 +00:00
* [Official radare2 book ](https://book.rada.re ): Read about r2 usage
* [COMMUNITY.md ](COMMUNITY.md ): Community engagement and loose guidelines
2022-01-01 12:11:46 +00:00
* [CONTRIBUTING.md ](CONTRIBUTING.md ): Information about reporting issues and
2023-03-15 14:06:31 +00:00
contributing. See also [Contributing ](#contributing )
2022-08-18 18:51:06 +00:00
* [DEVELOPERS.md ](DEVELOPERS.md ): Development guidelines for r2
* [SECURITY.md ](SECURITY.md ): Instructions for reporting vulnerabilities
* [USAGE.md ](USAGE.md ): Some example commands
* [INSTALL.md ](INSTALL.md ): Installation instructions using make or meson
2022-01-01 12:11:46 +00:00
## Plugins
2022-03-15 18:41:11 +00:00
Many plugins are included in r2 by default. But you can extend its capabilities
by using the [r2pm ](https://github.com/radareorg/radare2-pm ) package manager.
2022-01-01 12:11:46 +00:00
```sh
2022-03-15 18:41:11 +00:00
r2pm -s < word > # search package by word
2022-01-06 17:05:42 +00:00
r2pm -ci < pkg > # install a package
2023-02-17 00:34:34 +00:00
r2pm -u < pkg > # uninstall
r2pm -l < pkg > # list installed packages
2021-05-24 22:05:25 +00:00
```
2022-03-15 18:41:11 +00:00
Most popular packages are:
2021-05-24 22:05:25 +00:00
2022-08-18 18:51:06 +00:00
* [esilsolve ](https://github.com/radareorg/esilsolve ): The symbolic execution plugin, based on esil and z3
* [iaito ](https://github.com/radareorg/iaito ): The official Qt graphical interface
* [radius2 ](https://github.com/nowsecure/radius2 ): A fast symbolic execution engine based on boolector and esil
* [r2dec ](https://github.com/wargio/r2dec-js ): A decompiler based on r2 written in JS, accessed with the `pdd` command
* [r2ghidra ](https://github.com/radareorg/r2ghidra ): The native ghidra decompiler plugin, accessed with the `pdg` command
* [r2frida ](https://github.com/nowsecure/r2frida ): The frida io plugin. Start r2 with `r2 frida://0` to use it
2023-02-17 00:34:34 +00:00
* [r2poke ](https://github.com/radareorg/radare2-extras/tree/master/r2poke ) Integration with GNU/Poke for extended binary parsing capabilities
* [r2pipe ](https://github.com/radareorg/radare2-r2pipe ) Script radare2 from any programming language
* [r2papi ](https://github.com/radareorg/radare2-r2papi ) High level api on top of r2pipe
2022-01-01 12:11:46 +00:00
# Contributing
There are many ways to contribute to the project. Contact the
2023-03-15 14:06:31 +00:00
[community ](#community ), check out the github issues, or grep for
2022-01-01 12:11:46 +00:00
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 ](CONTRIBUTING.md ) and
[DEVELOPERS.md ](DEVELOPERS.md ).
## Documentation
To learn more about r2 we encourage you to watch [youtube
talks](https://www.youtube.com/c/r2con) from [r2con ](https://rada.re/con ). In
addition to reading blogposts, slides or the [official radare2
book](https://book.rada.re), here are some methods to contact us:
## Community
* [irc.libera.chat ](https://libera.chat ): `#radare` , `#radare_side`
* [Matrix ](https://matrix.to/#/#radare:matrix.org ): `#radare:matrix.org`
* Telegram: [Main Channel ](https://t.me/radare ) and [Side Channel ](https://t.me/radare_side )
2022-11-17 16:00:12 +00:00
* [Discord server ](https://discord.gg/YBey7CR9jf )
2023-02-17 00:34:34 +00:00
* Mastodon: [@radareorg ](https://infosec.exchange/@radareorg )
2022-01-01 12:11:46 +00:00
* Twitter: [@radareorg ](https://twitter.com/radareorg )
* Website: [https://www.radare.org/ ](https://www.radare.org/ )
# Supported Platforms
2019-05-16 11:44:00 +00:00
2021-05-24 22:05:25 +00:00
## Operating Systems
2021-05-24 21:25:11 +00:00
2022-07-25 13:16:20 +00:00
Windows (since XP), Linux, Darwin, GNU/Hurd, Apple's {Mac,i,iPad,watch}OS, Android,
2021-09-14 22:23:21 +00:00
[Dragonfly, Net, Free, Open] BSD, Z/OS, QNX, SerenityOS, Solaris, Haiku, Vinix, FirefoxOS.
2019-05-16 11:44:00 +00:00
2018-06-23 17:38:05 +00:00
## Architectures
2022-06-09 17:22:40 +00:00
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,
2019-03-03 20:24:09 +00:00
Tricore, CHIP-8, LH5801, T8200, GameBoy, SNES, SPC700, MSP430, Xtensa,
2023-02-17 00:34:34 +00:00
NIOS II, Java, Dalvik, Pickle, WebAssembly, MSIL, EBC, TMS320 (c54x, c55x,
2022-05-02 11:17:59 +00:00
c55+, c64x), Hexagon, Brainfuck, Malbolge, whitespace, DCPU16, LANAI,
2022-05-06 08:17:45 +00:00
MCORE, mcs96, RSP, SuperH-4, VAX, KVX, Am29000, LOONGARCH, JDH8.
2018-06-23 17:38:05 +00:00
## 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),
2021-09-14 22:23:21 +00:00
WASM (WebAssembly binary), Commodore VICE emulator, QNX, WAD, OFF, TIC-80
2018-06-23 17:38:05 +00:00
Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems.
2021-05-24 22:05:25 +00:00
## Packaging Status
2023-03-14 19:17:05 +00:00
* [![Snap package ](https://snapcraft.io/radare2/badge.svg )](https://snapcraft.io/radare2)
2021-05-24 22:05:25 +00:00
* [![Termux package ](https://repology.org/badge/version-for-repo/termux/radare2.svg )](https://repology.org/project/radare2/versions)
* [![Alpine Linux Edge package ](https://repology.org/badge/version-for-repo/alpine_edge/radare2.svg )](https://repology.org/project/radare2/versions) [![Alpine Linux 3.13 package ](https://repology.org/badge/version-for-repo/alpine_3_13/radare2.svg )](https://repology.org/project/radare2/versions) [![Alpine Linux 3.12 package ](https://repology.org/badge/version-for-repo/alpine_3_12/radare2.svg )](https://repology.org/project/radare2/versions)
* [![Arch package ](https://repology.org/badge/version-for-repo/arch/radare2.svg )](https://repology.org/project/radare2/versions) [![AUR package ](https://repology.org/badge/version-for-repo/aur/radare2.svg )](https://repology.org/project/radare2/versions)
2023-01-18 15:00:15 +00:00
* [![EPEL 7 package ](https://repology.org/badge/version-for-repo/epel_7/radare2.svg )](https://repology.org/project/radare2/versions)
* [![EPEL 8 package ](https://repology.org/badge/version-for-repo/epel_8/radare2.svg )](https://repology.org/project/radare2/versions)
* [![EPEL 9 package ](https://repology.org/badge/version-for-repo/epel_9/radare2.svg )](https://repology.org/project/radare2/versions)
2022-05-27 08:42:45 +00:00
* [![Fedora Dev ](https://repology.org/badge/version-for-repo/fedora_rawhide/radare2.svg )](https://repology.org/project/radare2/versions) [![Fedora 36 ](https://repology.org/badge/version-for-repo/fedora_36/radare2.svg )](https://repology.org/project/radare2/versions) [![Fedora 34 ](https://repology.org/badge/version-for-repo/fedora_34/radare2.svg )](https://repology.org/project/radare2/versions)
2021-05-24 22:05:25 +00:00
* [![FreeBSD port ](https://repology.org/badge/version-for-repo/freebsd/radare2.svg )](https://repology.org/project/radare2/versions) [![OpenBSD port ](https://repology.org/badge/version-for-repo/openbsd/radare2.svg )](https://repology.org/project/radare2/versions) [![pkgsrc current package ](https://repology.org/badge/version-for-repo/pkgsrc_current/radare2.svg )](https://repology.org/project/radare2/versions)
* [![Homebrew package ](https://repology.org/badge/version-for-repo/homebrew/radare2.svg )](https://repology.org/project/radare2/versions) [![MacPorts package ](https://repology.org/badge/version-for-repo/macports/radare2.svg )](https://repology.org/project/radare2/versions)
2022-05-27 08:02:11 +00:00
* [![Haiku Ports ](https://repology.org/badge/version-for-repo/haikuports_master/radare2.svg )](https://repology.org/project/radare2/versions) [![Void Linux ](https://repology.org/badge/version-for-repo/void_x86_64/radare2.svg )](https://repology.org/project/radare2/versions)
2023-01-17 10:32:42 +00:00
* [![Ubuntu 20.04 package ](https://repology.org/badge/version-for-repo/ubuntu_20_04/radare2.svg )](https://repology.org/project/radare2/versions) [![Ubuntu 18.04 package ](https://repology.org/badge/version-for-repo/ubuntu_18_04/radare2.svg )](https://repology.org/project/radare2/versions)
2021-05-24 22:05:25 +00:00
* [![Debian Unstable package ](https://repology.org/badge/version-for-repo/debian_unstable/radare2.svg )](https://repology.org/project/radare2/versions) [![Raspbian Stable package ](https://repology.org/badge/version-for-repo/raspbian_stable/radare2.svg )](https://repology.org/project/radare2/versions) [![Kali Linux Rolling package ](https://repology.org/badge/version-for-repo/kali_rolling/radare2.svg )](https://repology.org/project/radare2/versions)