2012-10-23 07:03:26 +08:00
|
|
|
<pre>
|
|
|
|
____ ___ ___ ___ ____ ___ ____
|
|
|
|
| _ \/ \| \/ \ _ \/ _ \ |__ \
|
2012-10-23 07:06:38 +08:00
|
|
|
| ( V | | ) V | ( _/ / __/
|
2012-10-23 07:03:26 +08:00
|
|
|
|__\__|_|__|___/__|__|_\__|___| |____|
|
|
|
|
|
|
|
|
www.radare.org
|
|
|
|
|
|
|
|
--pancake
|
|
|
|
</pre>
|
|
|
|
|
2015-07-28 06:38:43 +08:00
|
|
|
| | |
|
2015-07-26 18:38:59 +08:00
|
|
|
|----------|---------------------------------------------------------------------|
|
2015-07-28 06:38:43 +08:00
|
|
|
| **Jenkins** | [![Build Status](http://ci.rada.re/buildStatus/icon?job=radare2)](http://ci.rada.re/job/radare2)|
|
|
|
|
| **TravisCI** | [![Build Status](https://travis-ci.org/radare/radare2.svg?branch=master)](https://travis-ci.org/radare/radare2)|
|
|
|
|
| **AppVeyor** | [![Build Status](https://ci.appveyor.com/api/projects/status/github/radare/radare2?branch=master&svg=true)](https://ci.appveyor.com/project/radare/radare2)|
|
|
|
|
| **Coverity** | [![Build Status](https://scan.coverity.com/projects/416/badge.svg)](https://scan.coverity.com/projects/416) |
|
2012-10-23 07:03:26 +08:00
|
|
|
# Introduction
|
|
|
|
|
|
|
|
r2 is a rewrite from scratch of radare in order to provide
|
2015-07-28 06:38:43 +08:00
|
|
|
a set of libraries and tools to work with binary files.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
Radare project started as a forensics tool, an scriptable
|
|
|
|
commandline hexadecimal editor able to open disk files,
|
|
|
|
but later support for analyzing binaries, disassembling
|
2013-03-21 20:52:29 +08:00
|
|
|
code, debugging programs, attaching to remote gdb servers, ..
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-26 18:38:59 +08:00
|
|
|
radare2 is portable.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-26 18:38:59 +08:00
|
|
|
* **Architectures:**
|
|
|
|
* 6502, 8051, CRIS, H8/300, LH5801, T8200, arc, arm, avr, bf, blackfin, csr,
|
|
|
|
dalvik, dcpu16, gameboy, i386, i4004, i8080, m68k, malbolge, mips, mips, msil,
|
2015-08-05 08:47:25 +08:00
|
|
|
msp430, nios II, powerpc, rar, sh, snes, sparc, tms320 (c54x c55x c55+), V810,
|
|
|
|
x86-64, zimg.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-26 18:38:59 +08:00
|
|
|
* **File Formats:**
|
|
|
|
* bios, dex, elf, elf64, filesystem, java, fatmach0, mach0,
|
2015-08-07 11:44:48 +08:00
|
|
|
mach0-64, MZ, PE, PE+, TE, COFF, plan9, dyldcache,
|
2015-07-26 18:38:59 +08:00
|
|
|
Gameboy and Nintendo DS ROMs
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-26 18:38:59 +08:00
|
|
|
* **Operating Systems:**
|
|
|
|
* Android, GNU/Linux, [Net|Free|Open]BSD, iOS, OSX, QNX, w32,
|
|
|
|
w64, Solaris, Haiku, FirefoxOS
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-26 18:38:59 +08:00
|
|
|
* **Bindings:**
|
|
|
|
* Vala/Genie, Python (2, 3), NodeJS, LUA, Go, Perl,
|
|
|
|
Guile, php5, newlisp, Ruby, Java, OCAML, ...
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
# Dependencies
|
|
|
|
|
|
|
|
radare2 can be built without any special dependency, just
|
2013-06-14 08:51:33 +08:00
|
|
|
use make and get a working toolchain (gcc, clang, tcc, ..)
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
Optionally you can use libewf for loading EnCase disk images.
|
|
|
|
|
2013-06-14 08:51:33 +08:00
|
|
|
To build the bindings you need latest valabind, g++ and swig2.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
# Install
|
|
|
|
|
2014-11-23 03:13:02 +08:00
|
|
|
The easiest way to install radare2 from git is by running
|
2012-10-23 07:03:26 +08:00
|
|
|
the following command:
|
|
|
|
|
|
|
|
$ sys/install.sh
|
|
|
|
|
2012-10-24 00:44:32 +08:00
|
|
|
# Uninstall
|
|
|
|
|
2014-11-23 03:13:02 +08:00
|
|
|
In case of a polluted filesystem you can uninstall the current
|
2013-06-14 08:51:33 +08:00
|
|
|
version or remove all previous installations:
|
2012-10-24 00:44:32 +08:00
|
|
|
|
|
|
|
$ make uninstall
|
|
|
|
$ make purge
|
|
|
|
|
2012-10-23 07:03:26 +08:00
|
|
|
# Bindings
|
|
|
|
|
|
|
|
All language bindings are under the r2-bindings directory.
|
2015-07-27 00:05:39 +08:00
|
|
|
You will need to install swig and valabind in order to
|
2012-10-23 07:03:26 +08:00
|
|
|
build the bindings for Python, LUA, etc..
|
|
|
|
|
|
|
|
APIs are defined in vapi files which are then translated
|
|
|
|
to swig interfaces, nodejs-ffi or other and then compiled.
|
|
|
|
|
2014-11-23 03:13:02 +08:00
|
|
|
The easiest way to install the python bindings is to run:
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
$ sys/python.sh
|
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
In addition there are `r2pipe` bindings, which are an API
|
|
|
|
interface to interact with the prompt, passing commands
|
|
|
|
and receivent the output as a string, many commands support
|
|
|
|
JSON output, so it's integrated easily with many languages
|
|
|
|
in order to deserialize it into native objects.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
$ npm install r2pipe # NodeJS
|
|
|
|
$ gem install r2pipe # Ruby
|
|
|
|
$ pip install r2pipe # Python
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-28 06:38:43 +08:00
|
|
|
And also for Go, Rust, Swift, D, .NET, Java, NewLisp, Perl, Haskell,
|
2015-07-27 00:05:39 +08:00
|
|
|
Vala, Ocaml, and many more to come!
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
# Regression Testsuite
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
Running `make tests` it will fetch the radare2-regressions
|
|
|
|
repository and run all the tests in order to verify that no
|
|
|
|
changes break a functionality.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
2015-07-27 00:05:39 +08: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'.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
# Documentation
|
|
|
|
|
|
|
|
There is no formal documentation of r2 yet. Not all commands
|
|
|
|
are compatible with radare1, so the best way to learn how to
|
|
|
|
do stuff in r2 is by reading the examples from the web and
|
2014-11-23 03:13:02 +08:00
|
|
|
appending '?' to every command you are interested in.
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
Commands are small mnemonics of few characters and there is
|
|
|
|
some extra syntax sugar that makes the shell much more pleasant
|
|
|
|
for scripting and interacting with the apis.
|
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
You could also checkout the [radare2 book](http://maijin.gitbooks.io/radare2book/content/).
|
2015-07-26 18:38:59 +08:00
|
|
|
|
2015-08-05 06:03:54 +08:00
|
|
|
# Coding Style
|
|
|
|
|
|
|
|
Look at [doc/syntax.md](https://github.com/radare/radare2/blob/master/doc/syntax.md).
|
|
|
|
|
2012-10-23 07:03:26 +08:00
|
|
|
# Webserver
|
|
|
|
|
|
|
|
radare2 comes with an embedded webserver that serves a pure
|
|
|
|
html/js interface that sends ajax queries to the core and
|
|
|
|
aims to implement an usable UI for phones, tablets and desktops.
|
|
|
|
|
|
|
|
$ r2 -c=H /bin/ls
|
2015-04-27 16:39:36 +08:00
|
|
|
|
|
|
|
To use the webserver on Windows, you require a cmd instance
|
|
|
|
with administrator rights. To start the webserver use command
|
|
|
|
in the project root.
|
|
|
|
|
2015-07-27 00:05:39 +08:00
|
|
|
> radare2.exe -c=H rax2.exe
|
2012-10-23 07:03:26 +08:00
|
|
|
|
|
|
|
# Pointers
|
|
|
|
|
|
|
|
Website: http://www.radare.org/
|
|
|
|
|
|
|
|
IRC: irc.freenode.net #radare
|
|
|
|
|
|
|
|
Twitter: @radareorg
|