Radare2 RSoC 2017 Introduction Project Ideas Micro Tasks

Project Ideas

^

Completing decompiler (Radeco)

radeco, a radare2 based decompiler, was a project that was started in GSoC'15, and continued in GSoC'16. Currently, radeco features a ESIL to SSA IL converter, skeleton of C emitter and a few optimisations to the IR. The task for this year is to complete the full process of the decompiler (from binary to C pseudo-code). This involves several tasks which are listed below. Note that some of these tasks are large and are listed to give students a complete view of the requirements of this project. A potential student is required to discuss these with the mentors and pick some tasks to write their proposals for GSoC'17. Being a relatively new project under the radare banner, this project also gives student an opportunity to learn, design and discuss the architectural aspects of the project.

Tasks

Additionally, the students are also expected to detail their architecture (in the wikis) and write tests and documentation for any features that they contribute.

Skills

Knowledge of working of compilers and program analysis (or an interest to learn these quickly) Some knowledge of rust is an added bonus. A potential student must be willing to learn rust in order to contribute to this project. Some knowledge of common ISA such as x86, x86_64, ARM.

Difficulty

Advanced

Benefits for the student

Benefits for the project

Finally, radare2 will have its own retargetable decompiler, which will cover a wide range of architectures.

Assess requirements for midterm/final evaluation

For the midterm evaluations, the student is expected to have completed the C/pseudo code emitter and obtain the first set of results. The final evaluation requires students to have improved the quality of the generated code and have a working type inference system.

Mentors

Links/Resources

^

Implementing Symbolic Execution (Rune)

To properly decompile or performing another kind of program analysis it's vital to understand some possible paths, which radare2 unable to resolve statically. This is where the rescue of symbolic executions comes to help. There is an existing project - rune, which provides a basic sceleton for this task, so it should be relatively easy to add the missing parts to it.

Tasks

Skills

Knowledge of SMT basics and program analysis (or an interest to learn these quickly). Basic knowledge of Rust (And willingness to learn to more during the RSoC) Some knowledge of intermediate languages and existing SMT solvers and symbolic execution frameworks

Difficulty

Advanced

Benefits for the student

Benefits for the project

Finally, radare2 will have its own symbolic execution, which can later be used for improving analysis in radare2 and radeco, and implementing concolic execution (dynamic symbolic execution) capabilities.

Assess requirements for midterm/final evaluation

For the midterm evaluations, the student is expected to have completed the C/pseudo code emitter and obtain the first set of results. The final evaluation requires students to have improved the quality of the generated code and have a working type inference system.

Mentors

Links/Resources



--radare2 @ 2017