2015-10-13 17:21:27 +02:00
|
|
|
```
|
2019-02-02 12:20:13 +00:00
|
|
|
____ ___ ___ ___ ____ ___ ____
|
|
|
|
| _ \/ \| \/ \ _ \/ _ \ (__ \
|
|
|
|
| ( - | | ) - | ( _/ / __/
|
|
|
|
|__\__|_|__|___/__|__|_\__|___| |____|
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-02-02 12:20:13 +00:00
|
|
|
https://www.radare.org
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-02-02 12:20:13 +00:00
|
|
|
--pancake
|
2015-10-13 17:21:27 +02:00
|
|
|
```
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-09-17 15:31:23 +02:00
|
|
|
| Service | Badge |
|
2015-07-26 16:08:59 +05:30
|
|
|
|----------|---------------------------------------------------------------------|
|
2020-04-14 01:59:48 +02:00
|
|
|
| **GithubCI** | [](https://github.com/radareorg/radare2/actions?query=workflow%3A%22Radare2+CI%22)|
|
2019-10-10 20:04:02 +02:00
|
|
|
| **TravisCI** | [](https://travis-ci.com/radareorg/radare2)|
|
2019-09-28 00:30:09 +02:00
|
|
|
| **AppVeyor** | [](https://ci.appveyor.com/project/radareorg/radare2/branch/master)|
|
2020-06-29 22:46:05 -04:00
|
|
|
| **FreeBSD (sr.ht)** | [](https://builds.sr.ht/~xvilka/radare2/commits/freebsd.yml?)|
|
|
|
|
| **OpenBSD (sr.ht)** | [](https://builds.sr.ht/~xvilka/radare2/commits/openbsd.yml?)|
|
2015-07-28 00:38:43 +02:00
|
|
|
| **Coverity** | [](https://scan.coverity.com/projects/416) |
|
2019-09-28 00:30:09 +02:00
|
|
|
| **LGTM** | [](https://lgtm.com/projects/g/radareorg/radare2/alerts/)
|
2018-08-24 10:09:46 +08:00
|
|
|
| **Infrastructure** | [](https://bestpractices.coreinfrastructure.org/projects/741) |
|
2019-09-28 00:30:09 +02:00
|
|
|
| **Codecov** | [](https://codecov.io/gh/radareorg/radare2)
|
2019-06-08 23:26:19 +03:00
|
|
|
| **Fuzzit** | [](https://app.fuzzit.dev/admin/2zv5qI33roZkRm0oO2Mi/target)
|
2018-05-19 19:25:36 +08:00
|
|
|
<a href="https://repology.org/metapackage/radare2">
|
2018-09-18 22:56:50 +02:00
|
|
|
<img src="https://repology.org/badge/vertical-allrepos/radare2.svg" alt="Packaging status" align="right" width="150px">
|
2018-05-19 19:25:36 +08:00
|
|
|
</a>
|
|
|
|
|
2012-10-23 01:03:26 +02:00
|
|
|
# Introduction
|
|
|
|
|
|
|
|
r2 is a rewrite from scratch of radare in order to provide
|
2015-07-28 00:38:43 +02:00
|
|
|
a set of libraries and tools to work with binary files.
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2016-04-06 15:33:51 +01:00
|
|
|
Radare project started as a forensics tool, a scriptable
|
2018-10-30 16:50:09 +00:00
|
|
|
command-line hexadecimal editor able to open disk files,
|
|
|
|
but later added support for analyzing binaries, disassembling
|
|
|
|
code, debugging programs, attaching to remote gdb servers...
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2018-06-24 01:38:05 +08:00
|
|
|
radare2 is portable.
|
|
|
|
|
2020-10-07 20:52:17 +02:00
|
|
|
To learn more you may read the [official radare2 book](https://book.rada.re),
|
|
|
|
the source code, or browse the web for blog posts or presentations from
|
|
|
|
[r2con](https://www.youtube.com/c/r2con).
|
2019-09-08 20:19:03 +03:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Operating Systems
|
|
|
|
|
2020-07-01 19:07:06 +02:00
|
|
|
Windows (since XP), GNU/Linux, GNU/Darwin, GNU/Hurd, Apple's {Mac,i,iPad,watch}OS,
|
|
|
|
[Dragonfly|Net|Free|Open]BSD, Android, QNX, Solaris, Haiku, FirefoxOS.
|
2019-05-16 13:44:00 +02:00
|
|
|
|
2018-06-24 01:38:05 +08:00
|
|
|
## Architectures
|
|
|
|
|
2019-03-03 21:24:09 +01:00
|
|
|
i386, x86-64, ARM, MIPS, PowerPC, SPARC, RISC-V, SH, m68k, m680x, AVR,
|
|
|
|
XAP, System Z, 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,
|
2020-11-16 10:19:33 +05:30
|
|
|
MCORE, mcs96, RSP, SuperH-4, VAX, AMD Am29000.
|
2018-06-24 01:38:05 +08: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),
|
2019-03-06 00:57:44 +05:30
|
|
|
WASM (WebAssembly binary), Commodore VICE emulator, QNX,
|
2018-06-24 01:38:05 +08:00
|
|
|
Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems.
|
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Scripting
|
2018-06-24 01:38:05 +08:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Native bindings are supported but the recommended way to interact with r2
|
2019-09-28 00:30:09 +02:00
|
|
|
from other languages is by using [r2pipe](https://github.com/radareorg/radare2-r2pipe)
|
2018-06-24 01:38:05 +08:00
|
|
|
|
2019-05-16 20:12:21 +08:00
|
|
|
Python, Ruby, JavaScript, Lua, Perl, PHP, Go, Rust, Swift, C#, Java,
|
2020-03-23 19:54:21 +08:00
|
|
|
Shell, OCaml, Haskell, Scheme (Guile), Common Lisp, Clojure, Erlang, D,
|
2019-05-16 20:12:21 +08:00
|
|
|
Vala/Genie, Prolog, Nim, Newlisp...
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
# Install / Update
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
The recommended way to install or update radare2 from git for single-user systems:
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ sys/install.sh
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
If you don't have root, or just want to install it in your home use:
|
2015-08-31 00:26:35 +03:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ sys/user.sh
|
2015-08-31 00:26:35 +03:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Note that those scripts will install using configure+make using symlinks, so you
|
2019-06-18 13:13:08 +08:00
|
|
|
don't need to reinstall every time you change something in the builddir.
|
2017-05-15 02:53:10 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
* If you don't like symlinks use `sys/install.sh --install`
|
|
|
|
* To use capstone5 use the `--with-capstone5` flag.
|
2018-02-24 14:41:22 +01:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Alternatively you can also build with meson + ninja:
|
2018-02-24 14:41:22 +01:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
$ ./sys/meson.py --prefix=/usr --shared --install
|
2017-09-28 16:06:58 -04:00
|
|
|
|
2020-11-27 01:11:38 -05:00
|
|
|
Or install in your home with meson + ninja:
|
|
|
|
|
|
|
|
$ ./sys/meson.py --prefix=/home/$USER/r2meson --local --shared --install
|
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Uninstall
|
2012-10-23 18:44:32 +02:00
|
|
|
|
2018-10-02 06:23:59 -07:00
|
|
|
In case of a polluted filesystem, you can uninstall the current
|
2013-06-14 02:51:33 +02:00
|
|
|
version or remove all previous installations:
|
2012-10-23 18:44:32 +02:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ make uninstall
|
|
|
|
$ make purge
|
2019-05-16 20:12:21 +08:00
|
|
|
|
2018-08-10 17:06:41 +03:00
|
|
|
To remove all stuff including libraries, use
|
|
|
|
|
|
|
|
$ make system-purge
|
2012-10-23 18:44:32 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Package Manager
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2018-10-02 06:23:59 -07:00
|
|
|
Radare2 has its own package manager - r2pm. Its packages
|
2019-09-28 00:30:09 +02:00
|
|
|
repository is on [GitHub too](https://github.com/radareorg/radare2-pm).
|
2018-10-02 06:23:59 -07:00
|
|
|
To start to using it for the first time, you need to initialize packages:
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ r2pm init
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2017-05-15 03:22:04 +02:00
|
|
|
Refresh the packages database before installing any package:
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ r2pm update
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2018-10-02 06:23:59 -07:00
|
|
|
To install a package, use the following command:
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2017-05-15 01:17:29 +02:00
|
|
|
$ r2pm install [package name]
|
2016-06-09 11:45:47 +03:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
# Development
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Coding Style
|
2015-08-05 00:03:54 +02:00
|
|
|
|
2019-09-28 00:30:09 +02:00
|
|
|
Look at [CONTRIBUTING.md](https://github.com/radareorg/radare2/blob/master/CONTRIBUTING.md).
|
2015-08-05 00:03:54 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
## Tests
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2020-04-08 05:46:55 +08:00
|
|
|
Running `make tests` will fetch the test binaries
|
2019-05-16 13:44:00 +02:00
|
|
|
repository and run all the tests in order to verify that no changes break any functionality.
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
We run those tests on every commit, and they are also executed with ASAN
|
|
|
|
and valgrind on different platforms to catch other unwanted 'features'.
|
2015-09-21 14:22:08 +02:00
|
|
|
|
2015-04-27 10:39:36 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
# Community
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Website: [https://www.radare.org/](https://www.radare.org/)
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Telegram: [https://t.me/radare](https://t.me/radare)
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
Twitter: [@radareorg](https://twitter.com/radareorg)
|
2012-10-23 01:03:26 +02:00
|
|
|
|
2019-05-16 13:44:00 +02:00
|
|
|
IRC: irc.freenode.net #radare
|