Skip to content

CODENAME "SANDYCREAM"

Compare
Choose a tag to compare
@XVilka XVilka released this 11 Nov 19:22
· 29596 commits to master since this release

http://www.radare.org/

date: 2013-11-11

r2 screenshot

In numbers!

  • 1 man
  • 8 months
  • 18 contributors
  • 215 tests
  • 603 commits
  • 33272 more lines of code

Looks better!

  • r2 now supports UTF-8, RGB and TrueColor ansi codes
  • Color palettes and themes
  • Use ^x^e to edit the current prompt line using $EDITOR
  • Configuration files follow XDG Freedesktop paths
  • Tweaked disasm to make it more readable

See e??scr. for more information about the screen options.

More platforms!

  • ARM aarch64
  • TI c55x+
  • 8051
  • Javascript (emscripten)
  • ARCcompact

Several enhacements to ARM, ARC, X86, Dalvik, Java (including v7) and Brainfuck assembler/disassemblers. Also, the embedded udis86/GNU based disassemblers have been updated from git.

You can now compile r2 for Haiku and Emscripten!

Binaries

ASLR is now supported by using the -B flag which specifies the hardcoded base address when loading a PIE binary.

  • MACH0 XNU kernels are now properly loaded
  • Added support for TE binaries
  • Identify some PC BIOS and UEFI ROMs
  • Java Class file parser has been rewritten to support Java7
  • Reloc information is now fully parsed and import addresses are stored in symbol listing to keep coherence.

Import PLT addresses are no longer listed with rabin2 -i. For consistence: imports are ordinals and PLT entries are listed as symbols.

Define structs and enums using plain C

A reduced fork of libtcc is now included to parse C include files. At the moment only structs and enums are handled, but it is planned to support function signatures and conditional struct definitions in the future. Nested structures are supported.

[0x8048000]> "td struct Foo { int a; int b; }"

See 't?' for more help. But in short, you will be able to load .h files into sdb databases to define metadata for the disassembler.

Bindings

Following the release of Valabind 0.7.4, we are now able to provide the following changelog:

  • Python ctypes support
  • Test and install Java JNI bindings
  • Untested D language bindings

I have added more scripting examples like a simple debugger.

UNIX shell right there

Commands like 'clear', 'ls', 'cat', cd', 'pwd' are now supported. No need to escape to the shell with '!' for them. Bear in mind that cfg.sandbox can be enabled to restrict access to filesystem, execution or sockets.

Those commands can be piped to system programs using the '|' like in a posix shell. The command line prompt is now better by supporting utf8 and handled new keybindings.

If in visual mode you place the cursor on top of a 'call' instruction that refers to an import and press '?' key you will read the associated manpage. Like 'K' key in vim.

Debugger

You don't need to specify the path to the debugged program any more. It walks the $PATH or takes ./ if found. This is a way to make windows and unix process launching consistent.

You can run the visual debugger by using the following flags:

$ r2 -cVpp -d ls

Signals can now be captured, and passed to the target process.

Now you can properly debug 32bit binaries on Linux x86-64.

SDB Everywhere

SDB is a simple key-value database that supports on-disk hashtable, arrays, json, CAS and easy string serialization for data structures.

From now on we are going to use SDB more and more inside r2 in order to speed up queries, simplify code maintainance and unify data as text with easy serialization methods.

This is the first release that comes with sdb.

Web UI

An embedded webserver have been included, and you can invoke it using the =h' or '=H' commands. To make it public just-e http.public=true`.

$ r2 -c=H /bin/ls

Improved JSON output for many commands. Just append 'j' to the command and it will use that format. From bindings you can call r_core_cmd_str() to retrieve the resulting string and parse it.

AJAX.get ("/cmd/isj", function (data) {
   var symbols = JSON.parse (data);
   ...
}

The r2agent is a new program that acts as a remote web interface for launching r2 sessions and interact with them using the webui.

Test everything!

This is the first release of r2 that makes an extensive use of the test suite in order to ensure no regressions appear while developing new features or fixing bugs. This is an important point from now on, so we will be able to cover r2 features, supported instruction set, etc. as much as possible.

We encourage all users to write test cases for every bug they report. Type 'make tests' to retrieve the testsuite from git, but this is only suposed to be used when developing. Stable versions are only for packagers. If you want to report a bug, first test it against the code in git.

The build farm runs the whole testsuite after every commit on the r2 or r2-regressions repos, this allows us to identify when and how every check was broken.

Thanks to a0rtega for his fuzzed binaries.

Annotated hexdumps

A new command 'pxa' have been added in order to provide support for annotated hexdumps.

Those hexdumps allows visual interaction and permits you to select range of bytes using the cursor mode, colorizing zones, adding comments, defining structs, etc.

This is still under development and we are open to new ideas and proposals to enhace this new interactive print mode.

More stable

Lot of bugs has been fixed, overflows, memory leaks, and many handcrafted binaries can now be loaded without the butthurt of segfaults, crashes or lack of info.

The farm allows us to get automatic builds for several platforms on every commit. And identify development issues earlier.

New contributors

I'm pretty impressed by the raise of interest on contributing to radare2 lately, This release would not be possible without the help of the following people:

  • a0rtega
  • capi_x
  • chous
  • cosarara
  • dx
  • earada
  • eddyb
  • jvoisin
  • jjdredd
  • Sirmy
  • xtraeme
  • xvilka

Author

  • pancake