The radare project started in February of 2006 aiming to provide a free and simple command line interface for an hexadecimal editor supporting 64 bit offsets to make searches and recovering data from hard-disks. Since then, the project has grown with the aim changed to provide a complete framework for analyzing binaries with some basic *NIX concepts in mind like everything is a file, small programs that interact together using stdin/out, and keep it simple. Radare2 is a complete LGPL rewrite of the original project, to remove design issues of the first iteration, and to make it more modular and easier to script and maintain. It features a testsuite that aims to cover as much cases as possible in order to catch regressions.
Radare2 is composed of an hexadecimal editor as central point, with several assemblers/disassemblers, code analysis capabilities, scripting features, visualization of code and data through graphs and other means, a visual mode, easy unix integration, a diff engine, a shellcode compiler, and much more.
In Summer of 2014, 2015 and 2016, we hosted our own version of Radare Summer of Code (RSoC). These were some of the successful projects:
We were also accepted for Google Summer of Code (GSoC) 2015 under the umbrella of Openwall project and later in 2016 and 2017 as an independent organisation too. Previosly our students finished developing a major part of decompiler (radeco) with radare2 integration (except pseudo-C code emitter). More information is available in the project repository and GSoC’15 pages: project1, project2. This year GSoC students working on improving Windows platform support, implementing timeless debugging capabilities and GDB server, along with improving current GDB client feature.
If you have questions or comments, visit our IRC channel #radare on Freenode.
Members of radare2 core team have volunteered to guide students for RSoC’16. They were already guiding the students for GSoC’15 (under Openwall umbrella), RSoC’15 and RSoC’14 and continuing to guide during the GSoC'16 as well. Please feel free to reach out to any of them in case you need any help in selecting a project.
Currently, all repositories are hosted on github and bugs are tracked on github issues. We are mostly using HackMD, IRC and Telegram for communication. We have a testsuite (that is running on Travis CI, AppVeyor and our Jenkins instance) to test and verify that all the features are still working and that a merge or a commit don't break anything, and to find regressions. We encourage contributors to write test cases and documentation in order to verify the implementation and ensure that everything fits well together. There is also a Coverity instance to catch obvious defects. For the complex bugs and examples we're using our own asciinema installation
Radare2 is modular: this means that it aims to make all the elements and features easily reusable from other projects. The choice of LGPL3 as a license is the minimum requirement to get code merged in r2. Contributors can choose Apache, BSD, MIT, Public Domain, or other similar licenses. The reason to exclude GPL as a valid license for the project is because we aim to support proprietary software that uses r2, while protecting our free codebase.
It is almost a requirement that students who want to apply to the radare2 project for the Radare Summer of Code 2017 should submit a small pull request accomplishing one of the microtasks as part of their application. Though you can also choose any of the Github issues for radare2 if they are big enough to be a qualification task, still small enough to be finished no more than in a couple of weeks.^
Most of radare2 is written in C and hence we expect students to be familiar with C programming language. For the radeco-related tasks, student should know Rust or be willing to learn the same.^