Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dexcalibur — [Официальный] Инструмент обратной разработки Android, ориентированный на автоматизацию динамической инструментации с использованием Frida. Он дизассемблирует dex, статически анализирует его, генерирует хуки, обнаруживает отражённые методы, сохраняет перехваченные данные и создаёт на их основе новые возможности. Его цель — быть единой платформой для обратной разработки Android. | Kitploit
Инструменты/GitHubGitHub/reversenseorg/dexcalibur
Безопасность AndroidСтатический анализДинамический анализ (песочница)Обратная инженерияОтладчикиФаззингМобильная безопасностьАнализ Бинарных Файлов

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

GitHub
reversenseorg/dexcalibur

dexcalibur

Репозиторий
1.2k1302423 дней назадПроверено Kitploit

[Официальный] Инструмент обратной разработки Android, ориентированный на автоматизацию динамической инструментации с использованием Frida. Он дизассемблирует dex, статически анализирует его, генерирует хуки, обнаруживает отражённые методы, сохраняет перехваченные данные и создаёт на их основе новые возможности. Его цель — быть единой платформой для обратной разработки Android.

Поделиться

WiP : Переход на dexcalibur 2.0 | кодовое имя : Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Баннер Dexcalibur

Dexcalibur

Dexcalibur — это платформа для обратной разработки Android, ориентированная на автоматизацию инструментирования. Её особенность заключается в использовании динамического анализа для улучшения эвристик статического анализа. Она нацелена на автоматизацию рутинных задач, связанных с динамическим инструментированием, таких как:

  • Декомпиляция/дизассемблирование перехваченного байт-кода во время выполнения
  • Написание кода хуков и управление большим количеством сообщений от хуков
  • Поиск интересных шаблонов/вещей для хуков
  • Обработка данных, собранных хуками (dex файлы, вызванные методы, загрузчики классов, ...)
  • и так далее… Но не только это, потому что Dexcalibur имеет собственный движок статического анализа и способен выполнять частичные фрагменты smali.

Хотите чем-то поделиться или вам нужна помощь? Присоединяйтесь к нашим официальным чатам:

Telegram — самый быстрый способ получить ответ

https://discord.gg/Pfw7Kc3dS

Официальная документация доступна здесь (веб-сайт — в разработке).

Последние новости смотрите здесь: http://docs.dexcalibur.org/News.html

Видеодемонстрации Dexcalibur: Демо: Меньше минуты, чтобы захукать 61 метод? Не проблема. (youtube)

Как поддержать Dexcalibur?

Вносите вклад!

Не стесняйтесь! Есть несколько способов внести вклад:

  • Сделать pull request, связанный с исправлением или новой функцией
  • Создать issue, чтобы помочь мне исправить/улучшить инструмент
  • Помочь мне разработать UI
  • Отправить мне письмо с отзывом
  • и т.д.

A. Установка

A.1 Новая установка

Перейдите к документации по установке

Альтернатива: использовать Docker

  • на вашем хосте установите adb (и эмулятор Android, если необходимо)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 Запуск dexcalibur

Для Linux и MacOS

Установка через NPM: Если Dexcalibur был установлен глобально с помощью NPM (опция -g), то Dexcalibur можно запустить из терминала командой $ dexcalibur, иначе его можно запустить командой $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.

Установка из исходного кода: из папки dexcalibur выполните $ dexcalibur или $ node dexcalibur.js.

Для Windows

Установка через NPM: Даже если Dexcalibur установлен глобально с помощью NPM (опция -g), Dexcalibur необходимо запускать из терминала следующей командой: node <NPM_ROOT>/dexcalibur/dexcalibur.js.

Установка из исходного кода: из папки dexcalibur в терминале выполните команду node dexcalibur.js.

A.3 Обновление

С версии <= 0.6.x

Вы используете предыдущую версию Dexcalibur?

Выполните те же шаги, что и для новой установки, и когда потребуется ввести путь к рабочей области, укажите ваше текущее расположение рабочей области.

С версии >= 0.7

Просто выполните:

$  npm install -g dexcalibur

Существующая конфигурация и рабочая область будут обнаружены автоматически.

C. Скриншоты

Следующие скриншоты иллюстрируют автоматическое обновление xrefs во время выполнения.

Автоматическое обновление перекрёстных ссылок

Функции

D. Функции и ограничения

На данный момент самое большое ограничение — Dexcalibur не может генерировать исходный код хуков, нацеленных на нативные функции (в библиотеках JNI). Однако вы можете вручную объявить Interceptor Frida, отредактировав хук.

Учитывая, что Dexcalibur (пока) не предоставляет функций для анализа нативной части, такой как библиотеки JNI или JNA, описаны только функции и ограничения, связанные с Java-частью.

Точность анализа зависит от полноты образа Android API, используемого на ранних этапах анализа. Это означает, что если вы используете DEX-файл, сгенерированный из файла Android.jar из Android SDK, некоторые ссылки на внутренние методы, поля или классы из Java API Android могут отсутствовать. Лучшие результаты достигаются, когда анализ начинается с файла "boot.oat", извлечённого непосредственно с реального устройства, работающего под ожидаемой версией Android.

D.1 Функции

D.1.A Статический анализатор

TODO : написать текст

D.1.B Менеджер хуков

TODO : написать текст

D.1.C Smali-виртуальная машина Dexcalibur

Отслеживаемое поведение

Статический анализатор, задействованный в действии "Выполнить smali (VM)", способен обнаруживать и принимать, но отслеживает следующее поведение:

  • Выход за границы регистра назначения (регистр вне v0 - v255)
  • Выход за границы регистра источника (регистр вне v0 - v65535)
  • Обнаружение недопустимой инструкции, неявно вызывающей внутреннее исключение
  • Обнаружение некоторых фрагментов валидного байт-кода, не соответствующих спецификации Android
  • Вычисление длины неопределённого массива
  • Заполнение неопределённого массива
  • и другое…

На данный момент обработчики/прослушиватели для таких недопустимых инструкций не поддерживаются, но события отслеживаются и отображаются.

Dexcalibur IR

ВМ создаёт кастомное упрощённое промежуточное представление (IR), которое отображается только для помощи аналитику в проведении анализа.

В зависимости от глубины стека вызовов и конфигурации, IR может включать или не включать инструкции, выполненные внутри вызванной функции. Если выполнение входит в try-блок и продолжается до возврата, но никогда не выполняет catch, то catch-блок не будет отображён. Фактически цель Dexcalibur IR — отображать только то, "что выполняется" или "что может быть выполнено в зависимости от значения некоторых символов" в контексте ВМ.

Dexcalibur IR помогает читать очищенную версию байт-кода, удаляя бесполезные goto и непрозрачные предикаты. Dexcalibur IR может быть сгенерирован ВМ с двумя уровнями упрощения:

1-й уровень IR, может использоваться, если вы не доверяете 2-му уровню IR:

  • Без упрощения CFG: отображаются условные и безусловные переходы.
  • Отображаются все перемещения в регистры.

2-й уровень:

  • Скрывать присваивание, если регистр не изменён неизвестным значением до его использования.
  • Удаляются предикаты, всегда TRUE/FALSE.
  • Безусловные переходы, такие как goto, удаляются при определённых условиях: один предшественник для целевого базового блока и т.д.
  • По возможности разрешать и заменять вызов Method.invoke() на вызываемый метод.
  • Инструкции внутри try-блока не отображаются, если до этого было выброшено исключение.
  • ...
Скачать инструмент