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

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

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

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

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

Категории

Все категории
Loading categories
dexfinder — Кроссплатформенный поисковик методов APK/DEX с трассировкой цепочек вызовов, деобфускацией ProGuard и обнаружением скрытых API | Kitploit
Инструменты/GitHubGitHub/junelegency/dexfinder
Безопасность AndroidСтатический анализАнализ уязвимостейАнализ КодаОбратная инженерияСбор информацииDevSecOpsМобильная безопасностьАнализ Бинарных Файлов
GitHubjunelegency/dexfinder

dexfinder

Кроссплатформенный поисковик методов APK/DEX с трассировкой цепочек вызовов, деобфускацией ProGuard и обнаружением скрытых API

9210326 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

dexfinder

Английский | Китайский | Сайт dexfinder demo


Сайт: junelegency.github.io/dexfinder

Кроссплатформенное средство поиска ссылок на методы и поля APK/DEX с трассировкой цепочек вызовов, деобфускацией ProGuard/R8 и обнаружением скрытых API Android.

Вдохновлено инструментом veridex от Android, перереализовано на Go с расширенными возможностями: более быстрое обнаружение рефлексии, трассировка цепочек вызовов (veridex показывает только один уровень) и гибкие форматы вывода.

Возможности

  • Сканирование APK/DEX/JAR — парсинг байт-кода DEX, извлечение всех ссылок на методы, поля и строки
  • Многоформатные запросы — поиск по Java-имени, сигнатуре DEX/JNI или простому ключевому слову
  • Трассировка цепочек вызовов — отслеживание вызывающих на N уровней вглубь, объединённое дерево или плоский список, с обнаружением циклов
  • Деобфускация ProGuard/R8 — загрузка mapping.txt, отображение исходных имён вместе с обфусцированными
  • Обнаружение скрытых API — загрузка hiddenapi-flags.csv, обнаружение заблокированных/неподдерживаемых API
  • Обнаружение рефлексии — перекрёстное сопоставление классов × строк для поиска использования скрытых API через рефлексию
  • Гибкий вывод — text / json / model / html / sarif, раскладка tree / list, стиль имён java / dex — все ортогонально
  • Цветной вывод в терминале — автоматически определяемые ANSI-цвета для тегов, соединителей дерева и уровней API
  • Сравнение APK — сравнение двух версий APK/DEX, выявление добавленных, удалённых и изменённых ссылок на API
  • HTML-отчёты — самодостаточный интерактивный HTML со сворачиваемыми деревьями, поиском и тёмной темой
  • Вывод SARIF — SARIF 2.1.0 для сканирования кода GitHub, VS Code и CI-пайплайнов
  • Интеграция с CI — --fail-on blocked завершается с ненулевым кодом при обнаружении ограниченных API
  • Файл конфигурации — .dexfinder.yaml для настроек проекта, флаги CLI переопределяют
  • Ноль внешних зависимостей — чистый Go, самодостаточный парсер DEX
  • Кроссплатформенность — macOS (Intel / Apple Silicon), Linux (amd64 / arm64), Windows

Установка

Homebrew (macOS / Linux):```bash brew install junelegency/tap/dexfinder

**Скрипт** (автоопределение ОС/архитектуры):```bash
curl -sSL https://raw.githubusercontent.com/JuneLeGency/dexfinder/main/install.sh | bash

Go install:```bash go install github.com/JuneLeGency/dexfinder/cmd/dexfinder@latest

**Бинарный файл**: скачать из [Релизы](https://github.com/JuneLeGency/dexfinder/releases).

## Быстрый старт```bash
# Show APK overview
dexfinder --dex-file app.apk --stats

# Find all calls to getDeviceId (IMEI)
dexfinder --dex-file app.apk --query "getDeviceId"

# Trace call chains as merged tree
dexfinder --dex-file app.apk --query "getDeviceId" --trace

# Trace as flat call stacks (Java crash style)
dexfinder --dex-file app.apk --query "getDeviceId" --trace --layout list

# Exact JNI signature query
dexfinder --dex-file app.apk \
  --query "Landroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String;" \
  --trace --depth 8

# Hidden API detection
dexfinder --dex-file app.apk --api-flags hiddenapi-flags.csv

Query Formats

Флаг --query принимает несколько стилей ввода. dexfinder автоматически определяет и преобразует между ними.

FormatExampleBehavior
Simple namegetDeviceIdНечеткое совпадение подстроки во всех API
Java classandroid.telephony.TelephonyManagerВсе методы/поля этого класса
Java class#methodandroid.telephony.TelephonyManager#getDeviceIdВсе перегруженные версии этого метода
Java full signature...TelephonyManager#getDeviceId()Точное совпадение + возврат к перегрузкам
DEX/JNI signatureLandroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String;Только точное совпадение

All equivalent — find requestLocationUpdates in LocationManager:

dexfinder --dex-file app.apk --query "requestLocationUpdates" dexfinder --dex-file app.apk --query "android.location.LocationManager#requestLocationUpdates" dexfinder --dex-file app.apk --query "Landroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V"

## Управление выводом

Три независимые оси, свободно комбинируемые:```
--format  (text / json / model / html / sarif)    what to output
--layout  (tree / list)                           how to arrange traces
--style   (java / dex)                            how to display names
--color   (auto / always / never)                 terminal colors

--format

ЗначениеОписание
textОбычный текстовый вывод с цветными тегами (по умолчанию)
jsonJSON — результаты сканирования или трассировка с древовидной/списковой структурой
modelСтруктурированный JSON с полными типами MethodInfo/FieldInfo (для IDE/CI)
htmlАвтономный HTML-отчет со сворачиваемыми деревьями и поиском
sarifФормат статического анализа SARIF 2.1.0 (GitHub / VS Code)

--layout (используется с --trace)

ЗначениеОписание
treeОбъединенное дерево — общие пути вызовов свернуты в одно дерево (по умолчанию)
listПлоский список — каждая уникальная цепочка вызовов показана как независимый стек

--style

ЗначениеПримерСлучай использования
javacom.example.Foo.method(Foo.java)Человекочитаемый (по умолчанию)
dexFoo.method(Ljava/lang/String;)VТочный анализ сигнатур

--scope (область поиска)

Управляет типом ссылок, по которым выполняется поиск. Это критически важно для понимания результатов.

ЗначениеЧто ищетНа какой вопрос отвечаетТег вывода
allAPI вызываемых + поля + строки кода"Кто вызывает этот API?" (по умолчанию)[METHOD] [FIELD] [STRING]
calleeТолько сигнатуры целевого API в инструкциях invoke-* / get/put"Кто вызывает этот конкретный метод/поле?"[METHOD] [FIELD]
callerТолько сигнатура вызывающего метода"Что этот метод вызывает внутри?"[CALLER→]
stringСтроковые константы в инструкциях const-string"Где используется эта строка в коде?"[STRING]
string-tableСтроки кода + полная таблица строк DEX"Существует ли эта строка где-либо в DEX? (включает аннотации, мертвый код)"[STRING] [STRING_TABLE]
everythingВсе вышеперечисленное вместеПолная картинавсе теги

Понимание callee vs caller:``` scope=callee: "Who calls finish()?" onCreate ──calls──→ finish() ← these callers are shown onResume ──calls──→ finish()

scope=caller: "What does finish() call internally?" finish() ──calls──→ Log.i() ← these callees are shown finish() ──calls──→ super.finish()

`--scope=all` (по умолчанию) = `callee` + `string`. Направление `caller` намеренно исключено из значения по умолчанию, так как оно отвечает на принципиально другой вопрос. Используйте `--scope=caller` или `--scope=everything` явно, когда это необходимо.

**Понимание выходных тегов:**
Скачать инструмент