radare2/README.md

143 lines
5.4 KiB
Markdown
Raw Normal View History

```
2019-02-02 12:20:13 +00:00
____ ___ ___ ___ ____ ___ ____
| _ \/ \| \/ \ _ \/ _ \ (__ \
| ( - | | ) - | ( _/ / __/
|__\__|_|__|___/__|__|_\__|___| |____|
2012-10-22 23:03:26 +00:00
2019-02-02 12:20:13 +00:00
https://www.radare.org
2012-10-22 23:03:26 +00:00
2019-02-02 12:20:13 +00:00
--pancake
```
2012-10-22 23:03:26 +00:00
2021-01-13 00:39:05 +00:00
| **Build&Test** | [![Tests Status](https://github.com/radareorg/radare2/workflows/CI/badge.svg)](https://github.com/radareorg/radare2/actions?query=workflow%3A%22CI%22) | [![Build Status](https://travis-ci.com/radareorg/radare2.svg?branch=master)](https://travis-ci.com/radareorg/radare2)|
|----------|------|--------|
| **CodeQuality** | [![Build Status](https://scan.coverity.com/projects/416/badge.svg)](https://scan.coverity.com/projects/416) | [![Total alerts](https://img.shields.io/lgtm/alerts/g/radareorg/radare2.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/radareorg/radare2/alerts/) |
2021-01-09 18:53:32 +00:00
| **Coverage** | [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/741/badge)](https://bestpractices.coreinfrastructure.org/projects/741) | [![codecov](https://codecov.io/gh/radareorg/radare2/branch/master/graph/badge.svg)](https://codecov.io/gh/radareorg/radare2) |
2018-05-19 11:25:36 +00:00
<a href="https://repology.org/metapackage/radare2">
<img src="https://repology.org/badge/vertical-allrepos/radare2.svg" alt="Packaging status" align="right" width="150px">
2018-05-19 11:25:36 +00:00
</a>
2012-10-22 23:03:26 +00:00
# Introduction
r2 is a rewrite from scratch of radare in order to provide
2015-07-27 22:38:43 +00:00
a set of libraries and tools to work with binary files.
2012-10-22 23:03:26 +00: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-22 23:03:26 +00:00
2021-03-01 23:49:30 +00:00
## Scripting
It is possible to script and extend r2 using native plugins written
in C. Dynamic programming languages can be also used via the
[r2pipe](https://github.com/radareorg/radare2-r2pipe) interface or
using the rlang r2pm packages which make the pythonvm run inside radare2.
2018-06-23 17:38:05 +00:00
2021-03-01 23:49:30 +00:00
Some of the languages supported by r2 are: Python, Ruby, JavaScript,
Lua, Perl, PHP, Go, Rust, Swift, C#, Java, Shell, OCaml, Haskell,
Scheme (Guile), Common Lisp, Clojure, Erlang, D, Vala/Genie, Prolog,
Nim, Newlisp...
2019-09-08 17:19:03 +00:00
2021-03-01 23:49:30 +00:00
## Documentation
To learn more about r2 we encourage you to watch youtube talks from
[r2con](https://www.youtube.com/c/r2con). As well as reading blogposts,
slides or read the [official radare2 book](https://book.rada.re), You can reach us in the following chats:
2020-12-17 10:37:42 +00:00
2020-12-17 10:49:01 +00:00
* irc.freenode.net `#radare` `#radare_side`
2021-03-01 23:49:30 +00:00
* [Matrix](https://matrix.org/) `#radare:matrix.org`
* [Telegram](https://t.me/radare) and the [Side Channel](https://t.me/radare_side)
* [Discord](https://discord.gg/MgEdxrMnqx)
* Twitter: [@radareorg](https://twitter.com/radareorg)
2021-03-01 23:49:30 +00:00
* Website: [https://www.radare.org/](https://www.radare.org/)
2020-12-17 10:37:42 +00:00
2019-05-16 11:44:00 +00:00
## Operating Systems
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 11:44:00 +00:00
2018-06-23 17:38:05 +00:00
## Architectures
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,
MCORE, mcs96, RSP, SuperH-4, VAX, AMD Am29000.
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),
WASM (WebAssembly binary), Commodore VICE emulator, QNX,
2018-06-23 17:38:05 +00:00
Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems.
2019-05-16 11:44:00 +00:00
# Install / Update
2012-10-22 23:03:26 +00:00
2019-05-16 11:44:00 +00:00
The recommended way to install or update radare2 from git for single-user systems:
2012-10-22 23:03:26 +00:00
$ sys/install.sh
2012-10-22 23:03:26 +00:00
2019-05-16 11:44:00 +00:00
If you don't have root, or just want to install it in your home use:
2015-08-30 21:26:35 +00:00
$ sys/user.sh
2015-08-30 21:26:35 +00:00
2019-05-16 11:44:00 +00:00
Note that those scripts will install using configure+make using symlinks, so you
2019-06-18 05:13:08 +00:00
don't need to reinstall every time you change something in the builddir.
2017-05-15 00:53:10 +00:00
2019-05-16 11:44:00 +00:00
* If you don't like symlinks use `sys/install.sh --install`
* To use capstone5 use the `--with-capstone5` flag.
2018-02-24 13:41:22 +00:00
2019-05-16 11:44:00 +00:00
Alternatively you can also build with meson + ninja:
2018-02-24 13:41:22 +00:00
2021-01-03 05:44:05 +00:00
$ sys/meson.py --prefix=/usr --shared --install
2017-09-28 20:06:58 +00:00
2020-11-27 06:11:38 +00:00
Or install in your home with meson + ninja:
2021-01-03 05:44:05 +00:00
$ sys/meson.py --prefix=$HOME/r2meson --local --shared --install
2020-11-27 06:11:38 +00:00
2019-05-16 11:44:00 +00:00
## Uninstall
In case of a polluted filesystem, you can uninstall the current
version or remove all previous installations:
$ make uninstall
$ make purge
2019-05-16 12:12:21 +00:00
To remove all stuff including libraries, use
$ make system-purge
2019-05-16 11:44:00 +00:00
## Package Manager
2016-06-09 08:45:47 +00:00
Radare2 has its own package manager - r2pm. Its packages
2019-09-27 22:30:09 +00:00
repository is on [GitHub too](https://github.com/radareorg/radare2-pm).
To start to using it for the first time, you need to initialize packages:
2016-06-09 08:45:47 +00:00
$ r2pm init
2016-06-09 08:45:47 +00:00
Refresh the packages database before installing any package:
2016-06-09 08:45:47 +00:00
$ r2pm update
2016-06-09 08:45:47 +00:00
To install a package, use the following command:
2016-06-09 08:45:47 +00:00
$ r2pm install [package name]
2016-06-09 08:45:47 +00:00
2019-05-16 11:44:00 +00:00
# Development
2012-10-22 23:03:26 +00:00
2019-05-16 11:44:00 +00:00
## Coding Style
2015-08-04 22:03:54 +00:00
2019-09-27 22:30:09 +00:00
Look at [CONTRIBUTING.md](https://github.com/radareorg/radare2/blob/master/CONTRIBUTING.md).
2015-08-04 22:03:54 +00:00
2019-05-16 11:44:00 +00:00
## Tests
2012-10-22 23:03:26 +00:00
2020-04-07 21:46:55 +00:00
Running `make tests` will fetch the test binaries
2019-05-16 11:44:00 +00:00
repository and run all the tests in order to verify that no changes break any functionality.
2012-10-22 23:03:26 +00:00
2019-05-16 11:44:00 +00: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'.