Pull to refresh

Анонс Google Summer of Code 2018 для проекта radare2

Reading time 4 min
Views 7.1K


В этом году мы решили возобновить публикации результатов предыдущего и анонсировать новый 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 (между ними настроен транспорт).

Tags:
Hubs:
+31
Comments 7
Comments Comments 7

Articles