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

История и разработка Проект radareРепозиторий Git radare начал разрабатывать хакер с ником pancake в 2006 году, и долгое время, по сути, он был единственным разработчиком. Изначально проект задумывался как шестнадцатеричный редактор с простым консольным интерфейсом, позволявший находить и восстанавливать данные с жестких дисков. Поэтому его называли «инструментом для компьютерной криминалистической экспертизы». В дальнейшем, по сообщению авторов, произошло изменение концепции проекта, и целью разработчиков стало создание полноценной платформы, предназначенной для анализа бинарных файлов, в частности — исполняемыхRadare documentation, Chapter 1: Introduction, 1.1 History .

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

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

Cutter CutterДомашняя страница Cutter  — интерактивный дизассемблер основанный на radare2.

Поддерживаемые архитектуры/форматы файлов Поддерживаемые микроархитектуры Поддерживаемые форматы файлов i4004 Семейство Intel x86/x86-64 ARM Серия Atmel AVR Brainfuck Motorola 68k Hitachi/Renesas H8/300 Ricoh 5A22 MOS 6502 Smartcard PSOS Virtual Machine виртуальная машина Java Семейство MIPS: mipsb/mipsl/mipsr/mipsrl/r5900b/r5900l PowerPC Семейство SPARC TMS320Cxxx Argonaut RISC Core Серия Intel 51: 8051/80251b/80251s/80930b/80930s Zilog Z80 LH5801 CR16 Cambridge Silicon Radio (CSR) Android/VM Dalvik DCPU-16 байт-код EFI Gameboy байт-код Java Malbolge MSIL/CIL Nios II SuperH SPC700 System z TMS320 V850 Whitespace XCore Pebble COFF и производные, в том числе Win32/64 PE ELF и производные Mach-O (Mach) и производные картриджи Game Boy и Game Boy Advance MZ (MS-DOS) классы Java dyld дампы кэша Dex (Dalvik EXecutable) Xbox (формат xbe) исполняемые файлы Plan9 виртуальная машина фильтров Winrar файловые системы (семейство ext, ReiserFS, HFS+, NTFS, FAT и др.) форматы отладочной информации DWARF и PDB бинарные файлы без формата (Raw binary)

История версий Цвет Значение Красный Старая версия Зелёный Текущая версия

Версия 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 6 ноября 2016 Добавлено автодополнение команд, цветовые темы, форматы menuetOS, KolibriOS, DOS4GW, улучшены парсеры PE, MACH0, ELF, COFF символов, улучшена поддержка Android 1.0.2 8 ноября 2016

См. также Обратная инженерия IDA Pro Disassembler (Interactive DisAssembler)

Примечания

Литература

На английском языке

Radare2 Book

Ссылки Официальный сайт Официальный блог Официальный твиттер Репозиторий Git Форум русскоязычных пользователей radare2

Категория:Свободное кроссплатформенное программное обеспечение Категория:Свободное программное обеспечение, написанное на Си Категория:Дизассемблеры Категория:Отладчики