Благодаря тому, что не было необходимости следовать правилам Google, мы смогли изменить двух «официальных» участников «на лету».
В прошлом году мы выбрали двух официальных участников и 6 «неофициальных» (без денежного вознаграждения). Однако, в процессе продвижения кодинга осталось лишь трое неофициальных участников. Но, так как им успешно удалось завершить свои задания, мы поделили собранные деньги поровну между ними (порядка $700 на человека). Рассмотрим задания поподробнее:
Два задания не были выполнены/завершены — это полный перевод всего фреймворка на использование базы данных sdb и доводка до ума webui.
С другой стороны, три задания были завершены успешно, и на данный момент весь код находится в основной ветке.
Во-первых, это поддержка парсинга сложных структур и отображение их в необходимом формате, с помощью команды pf и парсера описания данных на языке Си (struct/union, etc).
Во-вторых, это поддержка загрузки и использования сигнатур формата FLIRT (из IDA Pro), а также интеграция с Yara. Благодаря тому, что это задание было успешно выполнено, radare2 может быть использован для анализа malware с использованием существующих баз сигнатур, накопленных за годы работы с IDA Pro и Yara. Код интеграции с Yara вынесен в отдельный репозиторий.
Ну и последнее успешно выполненное задание — это поддержка PDB. Основное отличие от многих отладчиков и дизассемблеров (кроме IDA Pro) — это парсинг формата самостоятельно, без использования вызовов системных библиотек Windows.
Кроме того, с прошлого года значительно улучшилась ситуация с документацией: radare.today/radare2-is-documented/
В этом году radare2 не прошел отбор в Google Summer of Code как самостоятельная организация, что не остановило нас, и мы решили повторить опыт прошлого года и снова запустить собственную кампанию. Более того, огромное спасибо небезысвестному solardiz и его проекту Openwall, под чьим патронажем мы будем участвовать в GSoC'15 в рамках одного задания. Для проведения же собственного RSoC'15 нам потребуется 3000 EUR для привлечения трех участников.
Итак, суммирую информацию по обоим Summer of Code:
Google Summer of Code:
- Есть место для одного участника
- Заявки можно подавать с 16 до 27 марта
- Оплата в размере $5000
- Стандартные ограничения программы (только студенты и строго соответствие регламентам мероприятия)
Radare Summer of Code:
- Заявления принимаются с 11 марта до 3 мая
- Оглашение принятых участников 8 мая
- Программирование с 17 июня по 16 сентября
- Оплата в размере 1000 EUR (предположительно, зависит от количества собранных средств)
- Никаких ограничений накладываемых на участников
В этом году мы представили следующие задания для студентов GSoC и участников RSoC:
Создание виджетов для:
- Hex-редактор с настраиваемым форматом столбцов
- Граф: интерактивные графы для блоков, функций и возможностью сравнения
- Секции
- Поиск строк, опкодов и паттернов
- Структуры: просмотр, создание и изменение
Кроме того, требуется обеспечить «резиновый» интерфейс, применимый для десктопа и планшета, а также минимизировать количество запросов к сети, для ускорения работы через интернет
Улучшение возможностей ESIL
Поддержка эмуляции на основе ESIL
Во-первых, необходимо добавить (и улучшить) поддержку ESIL для большего количества архитектур (см libr/anal/p/*).
Во-вторых, потребуется добавить следующие возможности для самого ESIL-движка:
- Упростить команды для работы с ESIL
- Возможность эмуляции выбранной функции (через ESIL)
- Вычисление значения выбранного регистра в выбранной точке программы по запросу
- Встроенная эмуляция стандартных библиотечных функций
- Поддержка трассировки
- «Обратная» отладка
Динамический анализ на основе эмуляции через ESIL
Тут, я думаю, следует уточнить, что же имеется ввиду. Это задание тесно пересекается с предыдущим, так как позволяет на его основе реализовать автоматический анализ кода по ходу его исполнения.
- Автообнаружение switch ()
- Обнаружение значений динамических прыжков (ссылок)
- Автоанализ параметров функций
- Улучшение распознавания кросс-ссылок (xrefs)
Автоматическое преобразование кода ESIL в SSA (Single Static Assignment form)
Как многие знают, это является первым шагом к полноценной декомпиляции. В данном задании студенту потребуется создать трехторонний обмен информацией между тремя уровнями — бинарным кодом (и дизасмом), представлением ESIL и представлением SSA.
Данное задание потребуется выполнять на основе сравнения возможностей существующих отладкиков: gdb, lldb, voltron, mona.py, peda, immunity. Список того, что необходимо будет сделать:
- UI с панелями код/стек/регистры (как в peda/voltron)
- Отображение прошлой и будущей точек останова
- Горячие клавиши
- Настройка работы с ASLR
- Показ значений параметров функции, если точка останова стоит на вызове этой функции (как в OllyDbg)
- Показ значений (типизированных) на стеке и в регистрах
Это потребуется для выделения её в отдельный проект, как capstone или sdb, для унификации синтаксиса между ассемблерами и для поддержки макрокоманд. Мы полагаем, что идеальным вариантом будет поддержка синтаксиса и макроязыка fasm.
Здесь участнику потребуется улучшить алгоритмы отрисовки перекрывающихся блоков, добавить полную поддержку юникода и красивых нод, поддержу цветов и подсветки синтаксиса, группировку нод и их комментирование.
Я не стал описывать все задания, лишь подчеркнул самые «системообразующие», более полную информацию можно получить на соответсвующей странице.
План на лето с подробным описанием заданий находится тут: rada.re/rsoc
Официальный сайт проекта: rada.re/
Стать спонсором кампании RSoC или просто отправить пожертвование.
P.S. В этом году (в отрыве от GSoC/RSoC) мы собираемся: улучшить поддержку Windows (в том числе лучше интегрировать поддержку WinDbg и PDB), закончить полный переезд на SDB, закончить ревизию лицензий (для удобства линковки с коммерческими продуктами без лишних раздумий, что можно включать в сборку, а что нет; улучшить поддержку мобильных платформ (ARM, MIPS), упростить написание плагинов и сделать сборку и использование байндингов более очевидными, увеличить количество регрессионных тестов и привлечь новых разработчиков.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий