Radare2
Radare2 (часто сокращается как r2) — это мощный, кроссплатформенный набор инструментов с открытым исходным кодом для анализа, дизассемблирования, отладки и реверс-инжиниринга исполняемых файлов. В отличие от IDA или x64dbg, Radare2 изначально проектировался как CLI-инструмент, что делает его особенно гибким, скриптуемым и пригодным для автоматизации задач.
Основные возможности
- Поддержка множества архитектур и форматов (ELF, PE, Mach-O, raw, firmware)
- Дизассемблирование и ассемблирование (через встроенные движки)
- Отладка в режиме реального времени (локально и удалённо)
- Поддержка анализа бинарных файлов, секций, функций, строк, сигнатур
- Гибкая система меток, комментариев, типов и символов
- Графический режим (`Visual Mode`) и граф вызовов (CFG)
- Расширенные возможности автоматизации: скрипты на r2pipe (Python, JS, Go и др.)
- Возможность редактирования, патчинга и сохранения изменений
- Совместим с Cutter — GUI-интерфейсом на основе Radare2
- Поддержка консольного UI, curses-графики и даже веб-интерфейса
Поддерживаемые форматы и архитектуры
- Форматы файлов: ELF, PE, Mach-O, raw, BIOS, firmware, .dex, .apk и др.
- Архитектуры:
- x86 / x64
- ARM / ARM64
- MIPS / PowerPC
- RISC-V
- MSP430, AVR, SPARC и многие другие
Платформы
- Windows
- Linux
- macOS
- Android (через Termux)
- BSD, Solaris, и др.
Компоненты и интерфейсы
- CLI-интерфейс (основной)
- Visual Mode (графический TUI)
- Cutter — графическая оболочка с декомпилятором
- WebUI — веб-интерфейс на базе r2web
- r2pipe — взаимодействие с r2 через скриптовые языки (Python, Node.js, Go, Ruby, Rust)
Расширение и автоматизация
- Сотни команд с префиксами (`af`, `pdf`, `aa`, `s`, `VV`, `V!`, и др.)
- Скрипты на r2pipe (интерфейс к API radare2 из внешних языков)
- Плагины: дизассемблеры, отладчики, анализаторы
- Возможность написания своих плагинов (C, Python, V)
Применение
- Реверс-инжиниринг программ и прошивок
- Анализ вредоносного ПО
- Изучение неизвестных форматов и бинарей
- Отладка локальных и удалённых процессов
- Патчинг и модификация кода
- Исследовательские и CTF-задачи
Cutter — графическая оболочка
- Современный интерфейс (Qt)
- Построен поверх Radare2, полностью совместим
- Поддерживает дизассемблирование, CFG-графы, редактирование памяти, псевдокод
- Интеграция с Decompiler RetDec и другими средствами
Сравнение с аналогами
| Инструмент | Архитектуры | Декомпиляция | Отладка | Интерфейс | Расширяемость | Цена |
|---|---|---|---|---|---|---|
| Radare2 | Многоархитектурный | Да (ограничено) | Да | CLI / TUI / Web | Да (r2pipe) | Бесплатно |
| Ghidra | Многоархитектурный | Да | Да | GUI | Да | Бесплатно |
| x64dbg | x86 / x64 | Частично | Да | GUI | Да | Бесплатно |
| IDA Free | x86 / x64 | Нет | Да | GUI | Да | Бесплатно |
| IDA Pro | Многоархитектурный | Да | Да | GUI | Да | $$$ |
Установка
- Windows: через MSYS2, Chocolatey, Winget или официальный архив
- Linux: пакетный менеджер (`apt`, `pacman`, `dnf`) или компиляция из исходников
- macOS: `brew install radare2`
- Docker: `docker pull radareorg/radare2`
Полезные команды (CLI)
- `aa` — анализ всех функций
- `pdf @ main` — показать дизассемблированную функцию
- `VV` — граф вызовов
- `s <addr>` — перейти к адресу
- `wx <hex>` — записать байты
- `db <addr>` — установить breakpoint
- `dc` — продолжить исполнение
- `?` — помощь и поиск по командам
Лицензия и распространение
- Лицензия: GNU LGPL
- Открытый исходный код
- Поддержка и разработка: [https://rada.re/](https://rada.re/)
Заключение
Radare2 — мощная система для реверс-инжиниринга, гибкая и удобная для автоматизации, но требующая времени на освоение. В сочетании с Cutter предоставляет как CLI-, так и GUI-интерфейс, охватывая весь спектр задач анализа бинарных файлов. Отлично подходит для CTF, прошивок, исследования неизвестных архитектур и продвинутого использования в терминале.
Рекомендуется для опытных пользователей, специалистов по безопасности и энтузиастов низкоуровневого анализа.