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

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

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

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

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

Категории

Все категории
Loading categories
dex-oracle — Основанный на паттернах деобфускатор Dalvik, использующий ограниченное выполнение для улучшения семантического анализа. | Kitploit
Инструменты/GitHubGitHub/calebfenton/dex-oracle
Безопасность AndroidОбратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubcalebfenton/dex-oracle

dex-oracle

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

Репозиторий
5041107 лет назадПроверено Kitploit

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Oracle

Далвик-деобфускатор на основе шаблонов, использующий ограниченное выполнение для улучшения семантического анализа. Также вдохновение для другого Android-деобфускатора: Simplify.

Gem Version Code Climate Test Coverage

До до

После после

sha1: a68d5d2da7550d35f7dbefc21b7deebe3f4005f3

md5: 2dd2eeeda08ac8c15be8a9f2d01adbe8

Установка

Шаг 1. Установка Smali / Baksmali

Поскольку вы элитный реверс-инженер Android, я уверен, что у вас уже есть Smali и Baksmali в PATH. Если по какой-то странной причине они еще не установлены, это должно помочь вам начать, но перед запуском внимательно изучите инструкцию:

root@kitploit:~
mkdir ~/bin || cd ~/bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali-*.jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali-*.jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH=$PATH:$PWD

Шаг 2. Установка Android SDK / ADB

Убедитесь, что adb находится в PATH.

Шаг 3. Установка Gem

root@kitploit:~
gem install dex-oracle

Или, если вы предпочитаете собрать из исходников:

root@kitploit:~
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle install

Шаг 4. Подключение устройства или эмулятора

Для работы Oracle должен быть запущен эмулятор или подключено устройство. Минимальная требуемая версия Android — 5.0!

Oracle должен выполнять методы на работающей системе Android. Это может быть как устройство, так и эмулятор (предпочтительно). Если это устройство, убедитесь, что вы не против запуска на нём потенциально вредоносного кода.

Если вы хотите использовать эмулятор и уже установили Android SDK, вы можете создать и запустить образы эмулятора с помощью:

root@kitploit:~
android avd

Использование

root@kitploit:~
Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
    -h, --help                       Display this screen
    -s ANDROID_SERIAL,               Device ID for driver execution, default=""
        --specific-device
    -t, --timeout N                  ADB command execution timeout in seconds, default="120"
    -i, --include PATTERN            Only optimize methods and classes matching the pattern, e.g. Ldune;->melange\(\)V
    -e, --exclude PATTERN            Exclude these types from optimization; including overrides
        --disable-plugins STRING[,STRING]*
                                     Disable plugins, e.g. stringdecryptor,unreflector
        --list-plugins               List available plugins
    -v, --verbose                    Be verbose
    -V, --vverbose                   Be very verbose

Например, чтобы деобфусцировать только методы в классе с именем Lcom/android/system/admin/CCOIoll; внутри APK-файла с именем obad.apk:

root@kitploit:~
dex-oracle -i com/android/system/admin/CCOIoll obad.apk

Как это работает

Oracle принимает на вход приложения Android (APK), исполняемые файлы Dalvik (DEX) и файлы Smali. Сначала, если на вход подаётся APK или DEX, он дизассемблируется в файлы Smali. Затем файлы Smali передаются различным плагинам, которые выполняют анализ и модификации. Плагины ищут шаблоны, которые можно преобразовать в более читаемый вид. Чтобы понять, что делает код, некоторые методы Dalvik фактически выполняются, и их результат собирается. Таким образом, некоторые вызовы методов можно заменить константами. После этого все файлы Smali обновляются. Наконец, если на входе был APK или DEX-файл, изменённые файлы Smali перекомпилируются, и создаётся обновлённый APK или DEX.

Выполнение методов осуществляется с помощью Driver. Входной APK, DEX или Smali объединяется с Driver в единый DEX с помощью dexmerge и отправляется на устройство или эмулятор. Затем плагины могут использовать Driver, который использует Java-рефлексию для выполнения методов из входного DEX. Возвращаемые значения можно использовать для улучшения семантического анализа, выходящего за рамки простого распознавания шаблонов. Это особенно полезно для многих методов дешифрования строк, которые обычно принимают зашифрованную строку или массив байтов. Одно ограничение: выполнение ограничено статическими методами.

Хакинг

Создание собственного плагина

Есть три плагина, которые поставляются с Oracle:

  1. Undexguard — удаляет некоторые типы обфускаций Dexguard
  2. Unreflector — удаляет некоторые отражения Java
  3. String Decryptor — простой плагин, удаляющий распространённый тип шифрования строк

Если вы столкнулись с новым типом обфускации, возможно, её можно деобфусцировать с помощью Oracle. Посмотрите на Smali и определите, можно ли код:

  1. перестроить
  2. понять, выполнив некоторые статические методы

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

  1. определить шаблоны Smali
  2. выяснить, как упростить шаблоны
  3. разобраться, как взаимодействовать с driver и вызывать методы
  4. выяснить, как применять изменения напрямую

Включённые плагины должны послужить хорошим руководством для понимания шагов #3 и #4. Driver разработан, чтобы помочь с шагом #2.

Конечно, вы всегда можете поделиться обфускациями, с которыми столкнулись, и кто-нибудь, возможно, в итоге займётся ими.

Обновление Driver

Сначала убедитесь, что dx находится в PATH. Это часть Android SDK, но, вероятно, его нет в PATH, если вы не хардкорщик.

Папка driver — это Java-проект, управляемый Gradle. Импортируйте его в Eclipse, IntelliJ и т.д. и вносите любые нужные изменения. Чтобы завершить обновление driver, выполните ./update_driver. Это пересоберёт driver и преобразует выходной JAR в DEX.

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

Если при выполнении кода driver на эмуляторе или устройстве возникла проблема, обязательно откройте monitor (часть Android SDK) и проверьте наличие подсказок. Даже если ошибка вам не понятна, будет полезно опубликовать её вместе с проблемой, которую вы создадите.

Не все платформы Android хорошо работают с dex-oracle. Некоторые из них просто сбоят при попытке выполнить произвольные DEX-файлы. Если у вас проблемы с segfault или сбоями driver, попробуйте использовать Android 4.4.2 API level 19 с ARM.

Возможно, что плагин видит шаблон, который он считает обфускацией, но на самом деле это код, который не следует выполнять. Это кажется маловероятным, потому что шаблоны обфускации действительно необычны, но возможно. Если вы обнаружили, что конкретный плагин вызывает проблемы, и вы уверены, что приложение не защищено этим конкретным обфускатором, т.е. приложение не защищено DexGuard, но плагин DexGuard пытается что-то выполнять, просто отключите его.

Дополнительная информация

  1. TetCon 2016 — Деобфускация Android
  2. Хакинг с dex-oracle для деобфускации Android-вредоносного ПО
Скачать инструмент