Radare2


Radare2 is a complete framework for reverse-engineering and analyzing binaries; composed of a set of small utilities that can be used together or independently from the command line. Built around a disassembler for computer software which generates assembly language source code from machine-executable code, it supports a variety of executable formats for different processors and operating systems.

History

Radare2 was created in February 2006, aiming to provide a free and simple command-line interface for a hexadecimal editor supporting 64 bit offsets to make searches and recovering data from hard-disks, for forensic purposes. Since then, the project has grown with the aim changed to provide a complete framework for analyzing binaries while adhering to several principles of the Unix philosophy.
In 2009, the decision was made to completely rewrite it, to get around limitations in the initial design. Since then, the project continued to grow, and attracted several resident developers.
In 2016, the first r2con took place in Barcelona, gathering more than 100 participants, featuring various talks about various features and improvements of the framework.
Radare2 has been the focus of multiple presentations at several high-profile security conferences, like the , hack.lu, 33c3.

Features and usage

Radare2 has a steep learning curve since it does not have a GUI by itself. Originally built around a hexadecimal editor, it has now a multitude of tools and features, and also bindings for several languages. Meanwhile it has a WebUI and there is an external Qt GUI called Cutter.

Static analysis

Radare2 is able to assemble and disassemble a lot of things, but it can also perform binary diffing with graphs, extract information like relocations symbols, and various other types of data. Internally, it uses a NoSQL database named to keep track of analysis information that can be inferred by radare2 or manually added by the user. Since it is able to deal with malformed binaries, it has also been used by software security researchers for analysis purposes.

Dynamic analysis

Radare2 has a built-in debugger, that is lower-level than the classic GDB. However, it can also interface itself with the GNU debugger, or even WineDBG to debug Windows binaries on other systems. It is even possible to use it as a kernel-debugger with VMWare. Also there is a support for the WinDBG protocol.

Software exploitation

Since it features a disassembler and a low-level debugger, radare2 can be useful to developers of exploits. The software has features which assist in exploit development, such as a ROP gadget search engine and mitigation detection. Because of the software's flexibility and support for many file formats, it is often used by capture the flag teams and other security-oriented personnel.
Radare2 can also assist in creating shellcodes with its 'ragg2' tool, similar to metasploit.

Cutter

is the first official graphical user interface for radare2. It is still a young project that is mostly aimed "on those who are not yet radare2 users because of the learning curve, because they don't like CLI applications or because of the difficulty/instability of radare2". It's the successor of the formerly known project that suffered from too little maintenance after it became open source on GitHub. Later on Iaito was forked and heavily rewritten, again with C++ and Qt as its base. These design choices enable it to be a cross platform application targeting Linux, MacOS as well as Windows. At the same time it was renamed to Cutter. Cutter's goal is to export the extensive functionality of radare2 to a modern user friendly GUI that can compete with other major static and dynamic analysis frameworks like Hex-Rays Interactive Disassembler, or Binary Ninja.

Supported architectures/formats