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

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

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

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

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

Категории

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

Популярное

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

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

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

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

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

Описание

GitHub
reversenseorg/dexcalibur

dexcalibur

Репозиторий
1.2k13062 дней назадПроверено 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

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

root@kitploit:~
$  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-блока не отображаются, если до этого было выброшено исключение.
  • ...

Android API mock

TODO

Детали

Smali-ВМ выполняет следующие шаги:

  1. Инициализация ВМ: стековая память, куча, загрузчики классов, область методов, ...
  2. ВМ загружает класс, объявляющий метод.
  3. (Опционально) Если у класса есть статические блоки, выполняется clinit(). Это помогает решить конкретные значения, хранящиеся в статических свойствах.
  4. Загрузка метаданных метода
  5. Выполнение инструкций метода. Если PseudoCodeMaker включён, генерируется Dexcalibur IR.

Как ВМ обрабатывает инструкции invoke-*?

  1. Когда происходит invoke-*, таблица локальных символов сохраняется, и вызываемый метод загружается.
  2. Если класс, объявляющий вызываемый метод, ещё не был загружен, класс загружается.
  3. Если метод ещё не был загружен, метод загружается (через MethodArea) и его таблица локальных символов инициализируется импортом символов аргументов из таблицы символов вызывающей стороны.
  4. Вызываемый метод помещается в стек вызовов (StackMemory).
  5. Выполняются инструкции метода.
  6. Возвращаемое значение помещается в память стека.
  7. Вызывающая сторона получает управление.

D.1.D Анализаторы топологии приложения

Анализ манифеста (ОГРАНИЧЕННЫЙ)

Перед первым запуском анализируется Android-манифест приложения. На данный момент аномалии в манифесте, такие как небезопасная конфигурация, действительно обнаруживаются на этом уровне.

Единственная цель парсинга Android-манифеста — заполнение других типов анализаторов.

Анализ разрешений

Все разрешения, извлечённые из манифеста, перечисляются, идентифицируются и сравниваются со спецификацией Android для целевой версии Android API.

Dexcalibur предоставляет (только в некоторых случаях) описание назначения разрешения, минимальную версию Android API и т.д.

Анализ активностей

Анализ провайдеров

Анализ служб

Анализ приёмников

D.1.E Мониторинг во время выполнения (не реализовано)

Мониторинг сети

Мониторинг Intent

Мониторинг доступа к файлам

D.1.F Функции совместной работы

Не видите меню многопользовательского режима? Не проблема, меню нет, но минималистичная совместная работа возможна.

Dexcalibur запускает веб-сервер. Итак, если несколько человек находятся в одной сети с этим веб-сервером и брандмауэр хоста настроен правильно, вы можете работать совместно над одним экземпляром Dexcalibur.

Текущие ограничения:

  • Нет аутентификации: любой в сети может отправлять запросы экземпляру Dexcalibur и выполнять RCE на хосте через поисковый движок.
  • Нет идентификации: изменения не отслеживаются, поэтому если кто-то переименует символ, вы не узнаете, кто это сделал. Аналогичный случай: вы не можете узнать, кто создал конкретный хук.
  • Инструментирование одного устройства: если к хосту Dexcalibur подключено несколько устройств, и даже если вы можете выбрать устройство для инструментирования, инструментирование и сообщения хуков привязаны к последнему выбранному устройству. Поэтому вы не можете одновременно генерировать инструментирование для нескольких устройств.

E. Участники Github

Особая благодарность участникам:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Устранение неполадок

F.1 Dexcalibur продолжает запускаться в "режиме установки"

Прежде чем углубляться:

  • Убедитесь, что у вас есть подключение к Интернету: во время установки загружаются Apktool и целевая платформа.
  • Пробовали ли вы переустановить его, выполнив команду dexcalibur --reinstall? Если нет, попробуйте.

Сначала проверьте, сохранены ли глобальные настройки в <user_directory>/.dexcalibur/

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

Затем проверьте, соответствует ли структура рабочей области Dexcalibur следующей (содержимое папки /api может отличаться).

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. Часто задаваемые вопросы

Моё устройство не отображается в списке устройств

Если вы используете физическое устройство, подключённое через USB, убедитесь, что включены режим разработчика и отладка по USB.

Если вы используете виртуальное устройство, перейдите на /splash.html, выберите Device Manager, нажмите Connect over TCP ... и следуйте инструкциям. Если вы не знаете IP-адрес вашего устройства, позвольте Dexcalibur обнаружить его, установив флажок automatic configuration.

Отладка по USB включена, но моё устройство не отображается в списке устройств

  • Подключите/отключите USB и убедитесь, что ваш компьютер авторизован.
  • Выберите передачу файлов.

Зачем регистрировать новое устройство?

Вам нужно зарегистрировать целевое устройство, прежде чем вы сможете его использовать. Во время регистрации Dexcalibur собирает метаданные устройства и отправляет совместимую версию сервера Frida.

Такие метаданные используются для выбора правильных целей frida-server и frida-gadget.

Моё устройство отображается в Device Manager, но не может быть зарегистрировано

Если в списке устройств на строке отображается красный восклицательный знак !, значит, ваш компьютер не авторизован устройством. Вероятно, вам нужно подтвердить.

Если ваше устройство отображается в DeviceManager и столбец online отмечен, нажмите enroll.

G.1 Моё устройство отображается в Device Manager

Если ваше устройство отображается в DeviceManager и столбец online отмечен, нажмите enroll.

Как использовать эмулятор вместо физического устройства?

Версия Dexcalibur < v0.7 не могла автоматически обнаруживать эмулируемые устройства и использовать их из-за неполного разбора вывода ADB.

Начиная с версии >= v0.7, после запуска виртуального устройства перейдите на /splash.html или нажмите на DEXCALIBUR в панели навигации. Нажмите кнопку Device Manager в левом меню, а затем кнопку Refresh в верхней части таблицы.

У вас должна появиться строка, начинающаяся с ADB ID вашего виртуального устройства.

Как использовать устройство по TCP?

Сначала, как и любое целевое устройство, его необходимо зарегистрировать.

Нажмите Connect over TCP ..., чтобы добавить новое устройство по TCP или подключить зарегистрированное устройство по TCP.

Если устройство никогда не регистрировалось, регистрация будет выполнена по TCP. В некоторых случаях подключение по TCP медленнее, чем по USB. Поэтому регистрация может занять дополнительное время.

Если устройство было зарегистрировано по USB, новым предпочтительным типом транспорта для этого устройства становится TCP.

Как внести вклад в dexcalibur?

Создайте pull request в этом репозитории или создайте issue.

Как внести вклад в документацию?

Создайте pull request в репозитории dexcalibur-doc.

Документация доступна здесь (сайт документации) и здесь (вики)

H. Спонсоры

https://www.jetbrains.com/?from=dexcalibur
Они предоставили лицензию на All Products <3

I. Ресурсы

В настоящее время существует мало документации и учебных ресурсов по Dexcalibur. Если вы успешно использовали Dexcalibur для победы в CTF-задании или для поиска уязвимости, я настоятельно рекомендую вам поделиться своим опытом.

  • THCon 2020
  • SSTIC 2020
  • Слайды Pass the SALT 2019 (PDF)
  • Youtube : демонстрация
  • Руководство пользователя CLI
  • Руководство пользователя
  • Устранение неполадок
  • Скриншоты

J. Кто-то написал о Dexcalibur

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
Скачать инструмент