Главная » Хабрахабр » Анонс Google Summer of Code 2018 для проекта radare2

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

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


x

Ещё Hi-Tech Интересное!

Внедрение LoRaWAN на сельскохозяйственном предприятии. Часть 2. Учет топлива

Здравствуйте уважаемые читатели! Со времени публикации первой статьи, мы подросли, наши любимые поставщики-разработчики LoThings, проделали не мало кропотливой работы, и наступил день, когда есть что рассказать и показать! Одной из них, был контроль учета топлива на АЗС. Запустив нашу первую ...

Optlib. Реализация генетического алгоритма оптимизации на Rust

В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к конкретному типу входных данных для ...