В этом году мы решили возобновить публикации результатов предыдущего и анонсировать новый GSoC для проекта с открытым исходным кодом radare2 на ресурсе Habrahabr.


Текущие результаты


Как уже писали ранее, в 2015 radare2 ещё не был принят как отдельный проект, но благодаря solardiz и его проекту Openwall, одна из задач для radare2 была взята под его крыло. После этого, начиная с 2016 года, фреймворк участвует уже как отдельная компания. За прошедшие годы с момента последней публикации в рамках GSoC были выполнены следующие важные задачи:


  • radeco decompiler (до сих пор в разработке)
  • улучшенная поддержка ОС Windows
  • реверсивная отладка (reversible debugging)
  • поддержка удаленной отладки GDB и LLDB
  • определение аргументов функций
  • улучшение WebUI

Дополнительно, проект проводил собственный аналог GSoC — RSoC (Radare Summer of Code). Одно из отличий в том, что заявки могли отправлять не только студенты. В рамках уже этого проекта были выполнены следующие задачи:


  • поддержка FLIRT и YARA сигнатур
  • загрузка отладочной информации PDB
  • поддержка структур(схожая с 010 Editor)
  • парсинг метаданных ObjC из Mach-0 для определения классов и символьной информации

Возможно в этом году RSoC проводиться не будет, но пока решение не принято окончательно.


Методология разработки проекта


Все репозитории располагаются на github и в качестве баг-трэкера используется github issues. Тесты выделены в отдельный репозиторий и выполняются на Travis CI, AppVeyor и нашем Jenkins. Мы также используем Coverity для поиска ошибок, а для различных демонстраций — asciinema сервер.


Помимо этого, были составлены несколько документов для тех, кто хочет стать одним из разработчиков проекта:



Для начала, чтобы ознакомиться с кодовой базой проекта, мы рекомендуем желающим исправить одну из issue с пометкой good first issue.


Необходимые умения


Большая часть проекта radare2 написана на языке C, поэтому мы ожидаем, что кандидаты будут знакомы с этим ЯП. Но при этом некоторые задания потребуют Go для создания платформы по взаимодействию, Rust для radeco и Qt с C++ для Cutter. Если про Radeco уже было сказано ранее, то Cutter (до "недавних" пор он назывался Iaito) был представлен относительно недавно и представляет из себя GUI для radare2.


Участие в GSoC


Что нужно сделать для участия:


  1. Ознакомиться с правилами участия от Google.
  2. Взять одну из задач или предложить свою.
  3. Написать черновик заявки, используя Google Docs и наш шаблон, и попросить одного из наставников проверить его.
  4. Отправить заявку, используя интерфейс Google.

Для участия, помимо заявки, потребуется отправить небольшой Pull Request для решения одной из микрозадач:



Или можно исправить одну из github issues, подходящей по сложности с микротасками.



Рекомендации по написанию заявки:


  • Заявка не должна быть большой, достаточно пары страниц.
  • Попробуйте разбить период участия в GSoC по задачам, а каждую задачу на подзадачи. Это поможет не только нам понять на сколько вы заинтересованы в выполнении задачи, но и вам — оценить задачу более глубже перед началом выполнения и расставить приоритеты.
  • Запишите сколько времени в день / неделю вы планируете тратить на проект.
  • Укажите свой часовой пояс, чтобы мы смогли подобрать наставника с похожим для упрощения общения.
  • Пожалуйста, отправьте свою заявку заранее, а не в последнюю минуту.
  • Вы также можете выбрать "запасную" задачу, чтобы в случае конфликта интересов (два студента выбрали одну задачу) нам было проще решить это.

Список задач


В рамках проекта Radare2 существуют ещё несколько подпроектов: Radeco, Rune и Cutter. Поэтому для каждого было выделено по одной задачи.



Задачи, связанные непосредственно с фреймворком:



  • Консольный интерфейс — улучшить текущие возможности CLI-интерфейса (к примеру, один из подтасков добавить split-режим для сравнения файлов через radiff2)
  • Типы — улучшить поддержку типов и структур (struct/union)
  • Разбор EXE/DLL как FAT файл — улучшить поддержку macho-формата и разделение PE (dos, win, .net)
  • Поддержка Windows платформы — включает в себе как исправление багов при отладке через различные протоколы (нативно, gdb:// и windbg://), так и улучшение текущих возможностей
  • Платформа для взаимодействия в реальном времени — по аналогии с проектами collabREate, YaCo и solIDArity добавить возможность для совместного реверсинга файлов, что поможет как для анализа больших файлов, так и решения CTF-задач в команде
  • ROPchain генератор с помощью ragg2 — улучшить составление ROP-гаджетов и добавить автоматическое создание ROP-цепочек (рекомендуется использование SMT-решателей, к примеру Z3), как это сделано в ROPgadget

Более подробный план на лето представлен на нашей странице GSoC: rada.re/gsoc
Официальный сайт проекта: rada.re


Вопросы по задачам или использованию фреймворка также можно задавать на IRC-канале #radare в сети Freenode или telegram-канале https://t.me/radare (между ними настроен транспорт).

Комментарии (7)


  1. Jeditobe
    28.02.2018 01:36

    Поздравляю разработчиков radare2 с попаданием на Google Summer of Code 2018!

    А если вдруг кто-то захочет попробовать себя в другом проекте, то сообщу, что ReactOS тоже получил слоты в GSoC.

    moikrug.ru/vacancies/1000040251 — описание вакансии.


    1. perfect_genius
      28.02.2018 10:18

      Вам реверсеры нужны?


      1. Jeditobe
        28.02.2018 11:12

        Нам пригодились бы люди с такими навыками, но не для реверса Windows. Скорее для отлова и исправления багов связанных со сторониими проприетарными программами и драйверами.


        1. perfect_genius
          28.02.2018 12:54

          Windows давно весь отреверсен?


          1. Jeditobe
            28.02.2018 13:02

            Мы не занимаемся прямым реверсом Windows, и прямой реверс не подходит под условия GSoC 2018


            1. perfect_genius
              28.02.2018 13:24

              Я знаю, что у вас чистая комната. Но информация от них или код есть ведь на все компоненты этой ОС?


              1. Jeditobe
                28.02.2018 17:56

                Пока что мы располагаем достадочным объемом информации из открытых легальных источников, просто в первую очередь не хватает рабочих рук.

                А вот реверсеры BIOS нам бы пригодились.