Декомпилятор, который не заставляет ждать

Droid ASC — инструмент с открытым исходным кодом для реверс-инжиниринга Android-приложений, представленный на Black Hat Europe 2026 Arsenal. Он решает застарелую проблему мобильного пентеста: медленную декомпиляцию и огромный аппетит к памяти у классических инструментов при работе с крупными APK-файлами.

Живая демонстрация проводилась на коммерческом APK размером 352 МБ: Droid ASC выполняет глобальный поиск перекрёстных ссылок за 1,79 секунды и декомпилирует целевые классы за 177 миллисекунд, расходуя всего 141 МБ оперативной памяти.

ℹ Что такое APK?
APK (Android Package) — формат дистрибутива Android-приложений. Крупные коммерческие APK (мессенджеры, суперприложения) могут достигать сотен мегабайт и содержать миллионы строк байт-кода в формате DEX.

Проблема традиционных декомпиляторов

При декомпиляции больших APK стандартная процедура — ждать. Инструменты поглощают гигабайты RAM, полностью распаковывают артефакт и тратят десятки минут на построение глобальных индексов и перекрёстных ссылок. Скомпилированный артефакт уже хорошо структурирован, однако современные декомпиляторы этим не пользуются — они заново строят раздутую базу данных кодовых связей поверх уже упорядоченных данных.

«Если я могу напрямую извлечь любую кодовую связь из APK за миллисекунды — зачем вообще нужна предобработка?» — автор Droid ASC

Droid ASC решает проблему через zero-index архитектуру, декомпрессию потока Deflate по требованию и использование оптимизаций компилятора R8.

Как это работает: четыре ключевые технологии


graph TD
    A[APK-файл] --> B[Прямой пробинг Deflate-потока]
    B --> C[Huffman lookup tables]
    C --> D[R8-оптимизации: deduplication + relocation]
    D --> E[O1 — поиск инструкции]
    E --> F[Минимальный DEX в памяти]
    F --> G[Мгновенная декомпиляция]

1. Прямой пробинг Deflate-потока

Вместо полной распаковки APK инструмент строит плотные таблицы Huffman lookup для извлечения ключевых метаданных, не касаясь нерелевантных блоков данных.

2. Эксплуатация оптимизаций R8

Компилятор R8 применяет детерминированное перемещение констант и дедупликацию инструкций, оставляя после себя плотно упакованные физические структуры. Droid ASC использует это поведение компилятора для молниеносного кросс-DEX поиска кода.

3. O(1)-примитив локации инструкций

Для сопоставления сырых смещений байт-кода с методами реализован O(1)-примитив поиска инструкций — разрешение метода за константное время без построения тяжёлых таблиц маппинга.

4. Минимальный DEX в памяти

При попадании в цель Droid ASC извлекает только конкретные байткоды и их зависимости, динамически реконструируя минимальный и самодостаточный DEX целиком в памяти для мгновенной декомпиляции.

Сравнение с jadx

В тестах глобальный поиск jadx по 352 МБ APK (пакет Douyin) завершился аварийно с ошибкой OOM на 49%, тогда как Droid ASC выдал результат за 1,79 секунды.

По итогам бенчмарков: скорость поиска выше в 269 раз, декомпиляция быстрее в 222 раза, эффективность памяти лучше в 125 раз. При этом Droid ASC не использует дисковый кеш вообще, тогда как jadx записывает от 119 до 322 МБ индексов.

ПараметрDroid ASCjadx
Поиск по 352 МБ APK1,79 сOOM (падение)
Декомпиляция класса177 мс~39 с
RAM141 МБ~17 ГБ
Дисковый кеш0 МБ119–322 МБ
ПредобработкаНетДесятки минут
⚠ Важно
Droid ASC — инструмент для специалистов по безопасности, мобильных исследователей и red team. Использование для анализа чужих приложений без разрешения может нарушать законодательство.

Установка и базовые команды

Инструмент доступен на PyPI и устанавливается одной командой:

pip install droidasc

Основные сценарии использования через CLI:

# Декомпилировать конкретный класс из APK
droidasc getclass app.apk com.poc.Main -o Main.java

# Прочитать AndroidManifest.xml
droidasc getmanifest app.apk -o AndroidManifest.xml

# Найти все вхождения строки
droidasc findrefs app.apk string token -o string_refs.txt

# Найти ссылки на метод с нечётким поиском класса
droidasc findrefs app.apk method notify --class MainActivity --fuzzy-class

# Запустить графический интерфейс
droidasc app.apk --gui
💡 Для AI-агентов
Droid ASC изначально спроектирован как frontend для агентов — он stateless, не требует предобработки и возвращает результат в миллисекунды. Идеально для интеграции в AI-пайплайны автоматического анализа мобильных угроз.

Значение для отрасли

Ключевые преимущества инструмента — zero indexing, декомпрессия по требованию и использование оптимизаций R8, что существенно повышает эффективность масштабного скрининга чувствительных данных и картирования API attack surface.

Для пентестеров, red team и охотников за багами в мобильном сегменте эта эффективность напрямую конвертируется в увеличение охвата тестирования и, следовательно, в рост потенциального дохода в средах с оплатой за уязвимость.

Появление Droid ASC меняет сами основания жанра: декомпилятор перестаёт быть «индексирующей машиной» и становится легковесным инструментом запроса к скомпилированному артефакту как к базе данных. Это особенно актуально в контексте роста AI-агентов для автоматического анализа безопасности — именно на эту аудиторию инструмент и рассчитан.

Репозиторий: github.com/MG1937/ASC · PyPI: pip install droidasc