Radare2

Radare2
Логотип программы Radare2
Скриншот программы Radare2
Веб-интерфейс Radare2
Тип Дизассемблер и фреймворк для реверс-инжиниринга
Автор pancake
Разработчик pancake
Написана на Си
Интерфейс командная строка, графический, веб-интерфейс
Операционные системы Linux, BSD, OS X, Windows, Solaris, Android, iOS, Firefox OS, MeeGo, QNX, Haiku
Языки интерфейса английский
Первый выпуск февраль 2006
Аппаратная платформа Cross-platform
Последняя версия
Репозиторий github.com/radare/radare2
Состояние Активное
Лицензия LGPL
Сайт radare.org

Radare2 (также известный как r2) — свободный кроссплатформенный фреймворк для реверс-инжиниринга, написанный на Си, который включает дизассемблер, шестнадцатеричный редактор, анализатор кода и т. д[2]. Используется при реверсе, отладке вредоносного ПО и прошивок[3][4].

История и разработка

Проект radare[5] начал разрабатывать хакер с ником pancake в 2006 году, и долгое время, по сути, он был единственным разработчиком. Изначально проект задумывался как шестнадцатеричный редактор с простым консольным интерфейсом, позволявший находить и восстанавливать данные с жестких дисков. Поэтому его называли «инструментом для компьютерной криминалистической экспертизы». В дальнейшем, по сообщению авторов, произошло изменение концепции проекта, и целью разработчиков стало создание полноценной платформы, предназначенной для анализа бинарных файлов, в частности — исполняемых[6].

В 2010 году произошел «редизайн» фреймворка, после чего проект стал разрастаться и пополняться новыми функциями, что позволило его использовать не только как редактор, но и как дизассемблер и анализатор как кода, так и шелл-кодов.

Состав radare2

Фреймфорк radare2 доступен в виде библиотек и утилит:

  • Rasm2 — ассемблер/дизассемблер фреймворка, выполнен как отдельное приложение и позволяет дизассемблировать как файлы, так и отдельные строки.
  • Rabin2 — утилита для работы с различными исполняемыми файлами (ELF, PE, Java class, Mach-O). Используется для получения различной информации о файле: импортируемых функций, экспортируемых символов, секций, подключаемых библиотек и прочего.
  • Rahash2 — утилита для получения хеш-значений во многих форматах как от файлов, так и от определённых частей данных.
  • Radiff2 — утилита для сравнения двоичных файлов.
  • Rafind2 — утилита для поиска как строк с помощью и без регулярных выражений, так и данных в шестнадцатеричном формате или по двоичному шаблону.
  • Ragg2 — экспериментальная утилита для компиляции небольших программ для архитектур x86/x64 и ARM.
  • Rax2 — утилита для конвертации данных в различных форматах.
  • Rarun2 — позволяет запускать программу с различными параметрами среды, аргументами, правами и каталогами.
  • Radeco[7] — декомпилятор.

Cutter

Cutter[8] — интерактивный дизассемблер основанный на radare2.

Поддерживаемые архитектуры/форматы файлов

Поддерживаемые микроархитектуры Поддерживаемые форматы файлов

История версий

Цвет Значение
Красный Старая версия
Зелёный Текущая версия
Версия radare2 Дата выпуска Особенности
0.9.2 2 октября 2012
  • Поддержка новых CPU: Z80, dcpu16, m68k и arc.
  • Добавлена поддержка следующих платформ: dalvik, mips, arm.
  • Добавлена обработка zip:// и apk://.
  • Улучшен анализатор 16-битного x86-кода.
  • Добавлено множество команд, таких как ?i, ?I, ?k, b+, b- и т. д.
  • Теперь требуется valabind 0.7.2.
  • Исправлена ошибка при декодировании опкода FF25 в архитектуре x86_64.
  • Начата реализация поддержки DWARF.
  • Добавлена поддержка jmp [(rip+)0xoffset] и call [(rip+)0xoffset].
0.9.6 11 ноября 2013
  • Поддержка цветовых схем и вывода стрелок/рамок символами юникода.
  • Расположение конфигурационных файлов приведено в соответствии со спецификациями XDG.
  • Поддержка платформ AArch64, Texas Instruments C55x+, 8051, ARCompact.
  • Автоматическое распознавание и загрузка исполняемых файлов TE (Terse Executable), образов BIOS/UEFI.
  • Поддержка классов Java 7.
  • Поддержка объявления типов структур и множеств, например командой 'td'.
  • Python-биндинги переписаны с использованием ctypes, вместо swig.
  • Поддержка биндингов на Java JNI и D.
  • Для упрощения работы в r2 добавлена базовая поддержка команд 'clear', 'ls', 'cat', 'cd', 'pwd'.
  • Все команды могут быть соединены через пайпы '|' как и в обычном POSIX shell.
  • Начат рефакторинг и переход ядра на SDB (простая база данных «ключ-значение») для хранения метаинформации (функции, метки, комментарии и многое другое).
0.9.9 5 июня 2015
1.0[9] 6 ноября 2016 Добавлено автодополнение команд, цветовые темы, форматы menuetOS, KolibriOS, DOS4GW, улучшены парсеры PE, MACH0, ELF, COFF символов, улучшена поддержка Android
1.0.2[9] 8 ноября 2016

См. также

Примечания

  1. Release 5.9.2 — 2024.
  2. Joshua J. Drake, Zach Lanier, Collin Mulliner, Pau Oliva Fora, Stephen A. Ridley. Android Hacker's Handbook. — John Wiley & Sons, 2014. — С. 495. — 576 с. — ISBN 9781118922255.
  3. Workshop «Реверсинг и отладка вредоносного ПО и прошивок с помощью фреймворка radare2»  (неопр.). Дата обращения: 4 августа 2015. Архивировано 21 июля 2015 года.
  4. Ken Dunham, Shane Hartman, Manu Quintans, Jose Andre Morales, Tim Strazzere. Android Malware and Analysis. — CRC Press, 2014-10-24. — С. 146. — 246 с. — ISBN 9781482252194.
  5. Репозиторий Git radare Архивная копия от 11 июня 2018 на Wayback Machine (англ.)
  6. Radare documentation, Chapter 1: Introduction, 1.1 History Архивная копия от 27 ноября 2015 на Wayback Machine (англ.)
  7. Репозиторий Git radeco Архивная копия от 18 марта 2017 на Wayback Machine (англ.).
  8. Домашняя страница Cutter Архивная копия от 4 марта 2022 на Wayback Machine (англ.)
  9. 1 2 Releases · radare/radare2 · GitHub  (неопр.). Дата обращения: 3 декабря 2016. Архивировано 12 апреля 2017 года.

Литература

  • Борис Рютин. На radare как на ладони. Основы работы с фреймворком radare2 // Хакер. — 2014. — № 9 (188).
На английском языке
  • The radare book (англ.). — pancake, 2008. — P. 152. Архивная копия от 23 июля 2015 на Wayback Machine
  • Radare2 Book Архивная копия от 28 мая 2016 на Wayback Machine
  • pancake. Binary Mangling with Radare // Phrack Magazine. — 2009. — № 66.

Ссылки

  • Официальный сайт Архивная копия от 2 августа 2015 на Wayback Machine (англ.)
  • Официальный блог Архивная копия от 10 июля 2015 на Wayback Machine (англ.)
  • Официальный твиттер Архивная копия от 8 марта 2016 на Wayback Machine (англ.)
  • Репозиторий Git Архивная копия от 28 сентября 2015 на Wayback Machine (англ.)
  • Форум русскоязычных пользователей radare2 Архивная копия от 21 октября 2016 на Wayback Machine