- PVSM.RU - https://www.pvsm.ru -

Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015

Во-первых, хочу отчитаться по прошлому RSoC'14 [1], поблагодарить аудиторию хабра за ту помощь, позволившую нам организовать это мероприятие.

Благодаря тому, что не было необходимости следовать правилам Google, мы смогли изменить двух «официальных» участников «на лету».
В прошлом году мы выбрали двух официальных участников и 6 «неофициальных» (без денежного вознаграждения) [2]. Однако, в процессе продвижения кодинга осталось лишь трое неофициальных участников. Но, так как им успешно удалось завершить свои задания, мы поделили собранные деньги поровну между ними (порядка $700 на человека). Рассмотрим задания поподробнее [3]:

Два задания не были выполнены/завершены — это полный перевод всего фреймворка на использование базы данных sdb [4] и доводка до ума webui [5].

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

Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 1Во-первых, это поддержка парсинга сложных структур и отображение их в необходимом формате, с помощью команды pf и парсера описания данных на языке Си (struct/union, etc).

Во-вторых, это поддержка загрузки и использования сигнатур формата FLIRT (из IDA Pro) [6], а также интеграция с Yara [7]. Благодаря тому, что это задание было успешно выполнено, radare2 может быть использован для анализа malware с использованием существующих баз сигнатур, накопленных за годы работы с IDA Pro и Yara. Код интеграции с Yara вынесен в отдельный репозиторий [8].

Ну и последнее успешно выполненное задание — это поддержка PDB [9]. Основное отличие от многих отладчиков и дизассемблеров (кроме IDA Pro) — это парсинг формата самостоятельно, без использования вызовов системных библиотек Windows.

Кроме того, с прошлого года значительно улучшилась ситуация с документацией: radare.today/radare2-is-documented/ [10]

В этом году radare2 не прошел отбор в Google Summer of Code как самостоятельная организация, что не остановило нас, и мы решили повторить опыт прошлого года и снова запустить собственную кампанию. Более того, огромное спасибо небезысвестному solardiz [11] и его проекту Openwall [12], под чьим патронажем мы будем участвовать в GSoC'15 в рамках одного задания. Для проведения же собственного RSoC'15 нам потребуется 3000 EUR для привлечения трех участников.

Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 2

Итак, суммирую информацию по обоим Summer of Code:

Google Summer of Code:

  • Есть место для одного участника
  • Заявки можно подавать с 16 до 27 марта
  • Оплата в размере $5000
  • Стандартные ограничения программы (только студенты и строго соответствие регламентам мероприятия)

Radare Summer of Code:

  • Заявления принимаются с 11 марта до 3 мая
  • Оглашение принятых участников 8 мая
  • Программирование с 17 июня по 16 сентября
  • Оплата в размере 1000 EUR (предположительно, зависит от количества собранных средств)
  • Никаких ограничений накладываемых на участников

В этом году мы представили следующие задания для студентов GSoC и участников RSoC:

Посмотреть задания

Веб-интерфейс [13]

Создание виджетов для:

  • Hex-редактор с настраиваемым форматом столбцов
  • Граф: интерактивные графы для блоков, функций и возможностью сравнения
  • Секции
  • Поиск строк, опкодов и паттернов
  • Структуры: просмотр, создание и изменение

Кроме того, требуется обеспечить «резиновый» интерфейс, применимый для десктопа и планшета, а также минимизировать количество запросов к сети, для ускорения работы через интернет
Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 3

Улучшение возможностей ESIL

Поддержка эмуляции на основе ESIL [14]

Во-первых, необходимо добавить (и улучшить) поддержку ESIL для большего количества архитектур (см libr/anal/p/*).
Во-вторых, потребуется добавить следующие возможности для самого ESIL-движка:

  • Упростить команды для работы с ESIL
  • Возможность эмуляции выбранной функции (через ESIL)
  • Вычисление значения выбранного регистра в выбранной точке программы по запросу
  • Встроенная эмуляция стандартных библиотечных функций
  • Поддержка трассировки
  • «Обратная» отладка

Динамический анализ на основе эмуляции через ESIL [15]

Тут, я думаю, следует уточнить, что же имеется ввиду. Это задание тесно пересекается с предыдущим, так как позволяет на его основе реализовать автоматический анализ кода по ходу его исполнения.

  • Автообнаружение switch ()
  • Обнаружение значений динамических прыжков (ссылок)
  • Автоанализ параметров функций
  • Улучшение распознавания кросс-ссылок (xrefs)

Автоматическое преобразование кода ESIL в SSA (Single Static Assignment form) [16]

Как многие знают, это является первым шагом к полноценной декомпиляции. В данном задании студенту потребуется создать трехторонний обмен информацией между тремя уровнями — бинарным кодом (и дизасмом), представлением ESIL и представлением SSA.
Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 4

Работа над интерфейсом и возможностями отладчика [17]

Данное задание потребуется выполнять на основе сравнения возможностей существующих отладкиков: gdb, lldb, voltron, mona.py, peda, immunity. Список того, что необходимо будет сделать:

  • UI с панелями код/стек/регистры (как в peda/voltron)
  • Отображение прошлой и будущей точек останова
  • Горячие клавиши
  • Настройка работы с ASLR
  • Показ значений параметров функции, если точка останова стоит на вызове этой функции (как в OllyDbg)
  • Показ значений (типизированных) на стеке и в регистрах

Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 5

Написание универсальной библиотеки-парсера для ассемблеров (rasm2) [18]

Это потребуется для выделения её в отдельный проект, как capstone или sdb, для унификации синтаксиса между ассемблерами и для поддержки макрокоманд. Мы полагаем, что идеальным вариантом будет поддержка синтаксиса и макроязыка fasm [19].

Улучшение возможностей radare2 по созданию графов и визуализации данных и кода [20]

Здесь участнику потребуется улучшить алгоритмы отрисовки перекрывающихся блоков, добавить полную поддержку юникода и красивых нод, поддержу цветов и подсветки синтаксиса, группировку нод и их комментирование.
Результаты Radare Summer of Code 2014 и организация нового RSoC-GSoC 2015 - 6

Я не стал описывать все задания, лишь подчеркнул самые «системообразующие», более полную информацию можно получить на соответсвующей странице [21].

План на лето с подробным описанием заданий находится тут: rada.re/rsoc [21]

Официальный сайт проекта: rada.re/ [22]

Стать спонсором кампании RSoC или просто отправить пожертвование. [23]

P.S. В этом году (в отрыве от GSoC/RSoC) мы собираемся [24]: улучшить поддержку Windows (в том числе лучше интегрировать поддержку WinDbg [25] и PDB), закончить полный переезд на SDB, закончить ревизию лицензий (для удобства линковки с коммерческими продуктами без лишних раздумий, что можно включать в сборку, а что нет; улучшить поддержку мобильных платформ (ARM, MIPS), упростить написание плагинов и сделать сборку и использование байндингов более очевидными, увеличить количество регрессионных тестов и привлечь новых разработчиков.

Автор: xvilka

Источник [26]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/85810

Ссылки в тексте:

[1] RSoC'14: http://habrahabr.ru/post/218969/

[2] двух официальных участников и 6 «неофициальных» (без денежного вознаграждения): http://radare.today/rsoc-selections-results/

[3] поподробнее: http://radare.today/the-rsoc-is-over/

[4] базы данных sdb: http://radare.today/exploring-the-database/

[5] webui: http://cloud.rada.re/p/

[6] FLIRT (из IDA Pro): https://www.hex-rays.com/products/ida/tech/flirt/in_depth.shtml

[7] Yara: https://plusvic.github.io/yara/

[8] отдельный репозиторий: https://github.com/radare/radare2-extras/tree/master/yara

[9] PDB: https://support.microsoft.com/en-us/kb/121366

[10] radare.today/radare2-is-documented/: http://radare.today/radare2-is-documented/

[11] solardiz: https://twitter.com/solardiz

[12] Openwall: http://openwall.info/wiki/

[13] Веб-интерфейс: http://radare.org/gsoc/#title_5

[14] Поддержка эмуляции на основе ESIL: http://radare.org/gsoc/#title_6

[15] Динамический анализ на основе эмуляции через ESIL: http://radare.org/gsoc/#title_7

[16] Автоматическое преобразование кода ESIL в SSA (Single Static Assignment form): http://radare.org/gsoc/#title_8

[17] Работа над интерфейсом и возможностями отладчика: http://radare.org/gsoc/#title_11

[18] Написание универсальной библиотеки-парсера для ассемблеров (rasm2): http://radare.org/gsoc/#title_13

[19] fasm: http://flatassembler.net

[20] Улучшение возможностей radare2 по созданию графов и визуализации данных и кода: http://radare.org/gsoc/#title_14

[21] на соответсвующей странице: http://rada.re/rsoc

[22] rada.re/: http://rada.re/

[23] Стать спонсором кампании RSoC или просто отправить пожертвование.: http://rada.re/r/rsoc.html

[24] собираемся: http://radare.today/what-is-planned-for-r2-in-2015/

[25] WinDbg: https://github.com/radare/radare2/blob/master/doc/windbg

[26] Источник: http://habrahabr.ru/post/252905/