Radare2 с самого начала. Учимся использовать опенсорсный фреймворк для анализа приложений в Linux

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Если ты никогда не пользовался Radare2, то наверняка о нем слышал: это опенсорсный набор инструментов для исследования программ. В него входит мощный дизассемблер и отладчик, позволяющий погрузиться в систему глубже, чем стандартный GDB. В этой статье мы подробно поговорим о философии Radare2 и начнем работать с ним.

Radare2​

Как известно, Radare2 представляет собой глобально измененный форк первого Radare. В соответствии с законами мира Unix это набор узкоспециализированных утилит командной строки. Их можно применять как порознь, так и вместе: одна утилита использует результаты работы другой.

В набор входит более десятка утилит. Вот некоторые из них:
  • Radare2 — собственно главная тулза, она способна открывать большое количество разных источников ввода‑вывода подобно обычным файлам: диски, сетевые соединения, драйверы, процессы под отладкой. Позволяет при помощи командной строки перемещаться по файлу и заниматься дизассемблированием, поиском, анализом, изменением и сравнением данных с возможностью визуализации. Любой процесс поддается скриптингу на многих языках, среди которых JavaScript, Ruby, Python и Lua.
  • Rax2 — анализатор выражений. Умеет делать базовые преобразования между разными форматами: строками, значениями с плавающей запятой, шестнадцатеричными числами и прочими. Также поддерживает изменение порядка следования байтов.
  • Rafind2 — позволяет воспользоваться библиотекой r_search для поиска строк или байтов по маске.
  • Rabin2 — показывает всю информацию о двоичном файле: сведения о секциях, заголовках, импортированных данных и прочее. Понимает много форматов исполняемых файлов: PE, ELF, Mach-O, Java и другие. С помощью плагинов этот список можно расширить, после чего Rabin2 будет отображать символы импорта и экспорта, библиотечные зависимости, строки, адреса точек входа и тип архитектуры.
  • Rarun2 — позволяет настроить среду для выполнения или отладки приложений. Позволяет менять настройки окружения, не затрагивая работу ОС. Особенно часто используется для переопределения потока вывода отлаживаемой с помощью Radare2 программы.
  • Rasm2 — встроенный ассемблер/дизассемблер. Первоначально инструмент был разработан для внесения изменений в бинарные файлы. Его основная функция — получить байты, соответствующие заданному опкоду машинной инструкции. Rasm2 поддерживает плагины, что позволяет ему работать с файлами для разных архитектур.
  • Radiff2 — тулза для сравнения двоичных файлов, подобно тому, как это делает diff с текстовыми файлами. Radiff2 использует разные алгоритмы для поиска и сравнения содержимого файлов.
  • Ragg2 — компилирует программы, написанные на собственном языке высокого уровня, в крошечные бинарники для архитектур x86, x86-64 и ARM. Позволяет организовать базовый блок для создания перемещаемых фрагментов кода, которые будут использоваться для внедрения в целевые процессы при эксплуатации. Хотя по умолчанию Ragg2 компилирует свой собственный язык Ragg2, также можно скомпилировать код на языке C, используя шелл‑коды GCC или Clang.
  • Rahash2 — c помощью большого числа алгоритмов подсчитывает контрольную сумму любых файлов, дисков или строк. Тулза также способна кодировать и декодировать данные, используя простые операции, такие как Base64, XOR и прочие.
  • Rodeco — написанный на Rust декомпилятор с ассемблера, получаемого от Rasm2, на псевдо-C. К сожалению, до сих пор нежизнеспособен: результаты его работы крайне скромные. Поэтому утилита не включена в стандартную поставку фреймворка.
Так как Radare2 — Unix-ориентированный фреймворк, все утилиты в базовом варианте исполняются в командной строке. Однако с Radare2 можно работать не только в консольной среде: к услугам хакера есть несколько графических оболочек, объединяющих все инструменты фреймворка в мощную интерактивную среду. Среди них особую популярность завоевали iaito и Сutter. Они очень похожи, поскольку второй — форк первого.

Инструменты, входящие в Radare2, можно использовать в самых разных ОС и исследовать код для разных процессорных архитектур. Поддерживаются x86-64, ARM, MIPS, PowerPC, SPARC, Z80, MOS 6502 и байт‑код разных виртуальных машин. Анализировать можно PE32, PE32+, ELF, ROM-файлы игровых приставок и многое другое.

Хотя сами утилиты Radare2 где только не работают, интерактивные среды поддерживаются лишь в основных десктопных ОС. Однако даже консольные утилиты Radare2 удобны в работе, если ты умеешь с ними обращаться. Также управлять Radare2 можно из веб‑оболочки.

Изучив основные сведения, переходим к практике, а точнее — к установке.

Установка​

В отличие от прошлой статьи, где я использовал Ubuntu, организовывать эксперименты сегодня я буду в Debian Linux.
Перед установкой Radare2 в Debian мне потребовалось установить gnu make, по умолчанию его в дистрибутиве не было. Лучше сразу установить build-essential:
Код: Скопировать в буфер обмена
sudo apt-get install build-essential
Хотя многие дистрибутивы Linux содержат готовые к инсталляции пакеты Radare2, версия из менеджера пакетов может быть не самой новой, поэтому можешь Скачать
View hidden content is available for registered users!
 
Сверху Снизу