StaticApkAuditor MCP
StaticApkAuditor MCP
Сервер Model Context Protocol (MCP), который предоставляет декомпиляцию на основе Apktool плюс набор пользовательских эвристик статического анализа для оценки безопасности Android APK через команды на естественном языке в Claude Code / Claude Desktop.
Для чего это нужно
Вы указываете ему на APK. Он декомпилирует его, а затем предоставляет AI-ассистенту набор инструментов для анализа результата — поверхность атаки, разрешения, захардкоженные секреты, использование криптографии, нативные библиотеки, кандидаты в бизнес-логику — и перекрёстно сверяет находки с другими инструментами, такими как MobSF. Каждый вызов логируется на диск в виде markdown-отчёта, так что в итоге вы получаете аудиторский след, а не просто транскрипт чата.
Это инструмент статического анализа, а не полный пентест. Некоторые инструменты выдают кандидатов для ручной/динамической проверки, а не подтверждённые уязвимости — это явно указано в описаниях инструментов и во встроенных промптах. Поведение во время выполнения (гонки, обходы рабочих процессов, фактическая эксфильтрация данных) требует динамического тестирования (Frida, Burp/mitmproxy, реальное устройство) для подтверждения.
Related MCP server: GDA-MCP-Server
Быстрый старт
Предполагается, что Java, Apktool и Python 3.10+ уже установлены (см. Предварительные требования ниже, если нет).
# 1. Set up the project folder
mkdir static-apk-auditor && cd static-apk-auditor
# 2. Create a venv and install the one dependency
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# 3. Sanity check — should hang waiting for stdio input, Ctrl+C to stop
python3 server.py
# 4. Register with Claude Code (adjust paths to your actual location)
claude mcp add static-apk-auditor \
--env APKTOOL_WORK_DIR=$(pwd)/data \
-- $(pwd)/venv/bin/python3 $(pwd)/server.py
# 5. Verify it connected
claude mcp listЗатем в сессии claude, в той же папке, откуда вы выполнили claude mcp add (регистрация по умолчанию привязывается к области этой папки):
/mcp__static-apk-auditor__security_audit
/absolute/path/to/some.apkили просто спросите на простом языке — модель сама вызовет decode_apk и остальные инструменты:
Decompile /absolute/path/to/some.apk and give me a quick security triage.См. Промпты и Инструменты ниже для полного списка возможностей, или выполните /mcp в сессии Claude Code, чтобы просмотреть их в интерактивном режиме.
Структура проекта
static-apk-auditor/ # your folder can be named anything — this is just an example
├── server.py # the MCP server — single file, FastMCP-based
├── requirements.txt # just "mcp"
├── README.md # this file
├── prompts/
│ ├── security_audit.md # 16-point checklist, OWASP Mobile Top 10 mapping
│ └── mobsf_review.md # MobSF finding validation workflow
├── venv/ # created locally, not part of the repo
└── data/ # created automatically on first decode_apk call
# (this is APKTOOL_WORK_DIR — see Configuration below)Структура данных времени выполнения (создаётся автоматически)
Каждый анализируемый APK получает свою собственную самодостаточную папку в APKTOOL_WORK_DIR:
$APKTOOL_WORK_DIR/<apk_filename_without_extension>/
├── source/
│ └── <original>.apk # copy of the APK you pointed the tool at
├── decoded/
│ ├── AndroidManifest.xml
│ ├── smali/, smali_classes2/, ...
│ ├── res/, assets/, lib/
│ └── ... # apktool's decompiled output
├── reports/
│ ├── 20260706_175359_809_decode_apk.md
│ ├── 20260706_175412_112_analyze_manifest.md
│ ├── 20260706_175430_501_check_root_detection.md
│ └── ... # one markdown file per tool call, ever
└── final_reports/
├── 20260706_223500_123_security_audit.md
└── 20260706_224100_456_mobsf_review.md
# the finished, synthesized reports
# (Summary + Detailed Findings + Risk Table),
# saved explicitly via save_final_reportКаждый вызов инструмента — независимо от того, какой инструмент, и независимо от успеха или неудачи — записывает markdown-файл с меткой времени в папку reports/ этого APK. Это не опциональное по-вызовное логирование; это декоратор (@logged_tool), применённый к каждому зарегистрированному инструменту, так что ни один вызов этого сервера не остаётся незаписанным. Каждый отчёт содержит имя инструмента, параметры, с которыми он был вызван, и его полный вывод.
reports/ и final_reports/ служат разным целям: reports/ — это журнал сырых вызовов (каждый отдельный вызов инструмента, полезно для аудита того, что именно и когда проверялось), а final_reports/ содержит только отполированные, читабельные отчёты — фактический результат, который вы передали бы разработчику или клиенту. Промпты security_audit и mobsf_review оба заканчиваются обязательным вызовом save_final_report, который и наполняет final_reports/; без этого вызова синтезированный отчёт существует только в ответе чата и нигде на диске не сохраняется.
Предварительные требования
1. Java JDK 8+ (требуется Apktool)
# Ubuntu/Debian
sudo apt update && sudo apt install default-jdk
# macOS
brew install openjdk
java -version2. Apktool
# Ubuntu/Debian
sudo apt install apktool
# macOS
brew install apktool
apktool --version3. Python 3.10+
python3 --version4. (Опционально) aapt — для полных метаданных get_apk_info без необходимости предварительной декомпиляции
brew install aapt # or: brew install --cask android-commandlinetoolsЕсли aapt не установлен, get_apk_info вместо молчаливого сбоя переключается на разбор уже декомпилированного AndroidManifest.xml.
Установка
git clone <your-repo-or-just-copy-the-files> static-apk-auditor
cd static-apk-auditor
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtПроверка:
python3 server.py
# Should hang waiting for stdio input (that's normal) — Ctrl+C to stop.Подключение к Claude Code
claude mcp add apktool-pro \
--env APKTOOL_WORK_DIR=/absolute/path/to/static-apk-auditor/data \
-- /absolute/path/to/static-apk-auditor/venv/bin/python3 /absolute/path/to/static-apk-auditor/server.pyПроверка:
claude mcp list
claude mcp get apktool-pro # should show "✔ Connected"Примечание: claude mcp add регистрирует сервер с областью действия текущей директории по умолчанию (local scope). Если вы хотите, чтобы он был доступен из любого проекта, добавьте --scope user.
Подключение к Claude Desktop (альтернатива)
Отредактируйте ваш конфигурационный файл (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"apktool-pro": {
"command": "/absolute/path/to/static-apk-auditor/venv/bin/python3",
"args": ["/absolute/path/to/static-apk-auditor/server.py"],
"env": {
"APKTOOL_WORK_DIR": "/absolute/path/to/static-apk-auditor/data"
}
}
}
}Перезапустите Claude Desktop после сохранения.
Конфигурация (переменные окружения)
Переменная | По умолчанию | Назначение |
|
| Путь к исполняемому файлу apktool, если его нет в PATH |
|
| Путь к aapt, если его нет в PATH |
|
| Корневая папка для всех данных source/decoded/reports по каждому APK |
Инструменты
Основные (декомпиляция и манифест)
Инструмент | Параметры | Описание |
|
| Декомпилирует APK с помощью apktool. Вывод сохраняется в |
|
| Базовая метаинформация: пакет, версия, уровни SDK, размер файла. Использует aapt, если доступен, иначе переключается на разбор декомпилированного манифеста. |
|
| Пересобирает APK из (возможно, модифицированной) декомпилированной директории. Результат без подписи — подписывайте отдельно с помощью |
|
| Устанавливает системный framework APK, чтобы apktool мог декомпилировать системные/OEM-приложения, которые на него ссылаются. |
|
| Разбирает |
|
| Перечисляет все запрошенные разрешения, помечает те, которые классифицируются как «опасные» моделью разрешений Android. |
|
| Извлекает строковые ресурсы для указанной локали. |
|
| Поиск по регулярному выражению во всех декомпилированных |
Эвристики безопасности
Инструмент | Параметры | Описание |
|
| Перечисляет библиотеки |
|
| Сканирует на кастомные реализации |
|
| Находит вызовы |
|
| Для React Native / Expo приложений: ищет в |
|
| Сканирует сигнатуры обнаружения root/эмулятора и защиты от взлома: пути к su-бинарникам, RootBeer/RootTools, SafetyNet, Play Integrity, тег сборки |
Разведка бизнес-логики
Инструмент | Параметры | Описание |
|
| Находит методы/классы, чьи имена указывают на чувствительные операции (платежи, права доступа, роли, скидки, квоты), и показывает ближайшие вызовы |
|
| Эвристика: помечает совпадения чувствительных ключевых слов, где локальное сравнение ( |
Валидация отчётов MobSF
Tool | Parameters | Description |
|
| Загружает и нормализует JSON-отчёт статического анализа MobSF ( |
|
| Перекрёстно сверяет одну находку MobSF с вашим собственным декомпилированным выводом (smali + строковые ресурсы), чтобы выявить ложные срабатывания. Возвращает доказательства для классификации моделью — Confirmed / False Positive / Needs Manual Review — сам он не классифицирует. |
Промпты (управляемые сценарии)
Промпты вызываются явно как слэш-команды в Claude Code (/apktool-pro:<name>), в отличие от инструментов, которые модель вызывает сама по мере необходимости.
Prompt | Arguments | What it does |
|
| Запускает полный чек-лист из 16 пунктов (поверхность атаки, разрешения, секреты, криптография, WebView, хранилище, SSL pinning, перехват задач, обнаружение root, открытые receivers/providers, JS-бандл, нативные библиотеки, логирование, версии зависимостей, изменяемость PendingIntent, бизнес-логика) и выводит: Сводка → Подробные находки (с оценкой уверенности + шагами PoC для adb) → Таблица рисков, сопоставленная с OWASP Mobile Top 10 (M1–M10). |
|
| Загружает JSON-отчёт MobSF, перекрёстно сверяет каждую находку с фактическим декомпилированным кодом, классифицирует каждую как Confirmed/False Positive/Needs Manual Review, независимо от собственной оценки MobSF пересматривает серьёзность и формирует приоритизированный список действий только по подтверждённым находкам. |
|
| Быстрый проход: экспортируемые компоненты + опасные разрешения + очевидные захардкоженные секреты. Для случаев, когда полный аудит не нужен. |
Примеры использования
Use decode_apk to decompile /path/to/app.apk/apktool-pro:security_audit apk_path="/path/to/app.apk"Use check_root_detection on the decompiled output/apktool-pro:mobsf_review apk_path="/path/to/app.apk" mobsf_report_path="/path/to/mobsf_report.json"Чтобы в любой момент увидеть все доступные инструменты и их точные параметры, выполните /mcp в сессии Claude Code и выберите apktool-pro.
Получение отчёта MobSF
Если вы запускаете MobSF локально:
# upload the APK, get back a hash
curl -F 'file=@/path/to/app.apk' http://localhost:8000/api/v1/upload \
-H "Authorization: <MOBSF_API_KEY>"
# fetch the JSON report using that hash
curl -X POST http://localhost:8000/api/v1/report_json \
-H "Authorization: <MOBSF_API_KEY>" \
--data "hash=<hash_from_upload>" -o mobsf_report.jsonИзвестные ограничения
Только статический анализ. Здесь ничего не выполняет приложение и не перехватывает реальный трафик. Находки по бизнес-логике и некоторые «подтверждённые» статические находки всё ещё требуют динамической проверки, прежде чем считать их доказанными.
Вывод
build_apkне подписан. Подпишите с помощьюapksignerперед установкой на устройство.Эвристики на основе регулярных выражений (
check_ssl_pinning,check_root_detection,map_sensitive_flowsи т. д.) могут пропускать обфусцированный/переименованный код и давать ложные срабатывания на несвязанных совпадениях — относитесь к их выводу как к короткому списку для проверки, а не как к вердикту.install_frameworkнужен только для декодирования системных/OEM-APK, которые ссылаются наframework-res.apk; для анализа большинства сторонних приложений он не понадобится.
Заметки по дизайну
APKTOOL_WORK_DIRвсегда учитывается — каждый APK получает постоянную самодостаточную папку (source/,decoded/,reports/,final_reports/); ничего не записывается во временную tempdir.get_apk_infoпри отсутствииaaptпереходит на разбор декодированного манифеста, а не возвращает ничего полезного.Каждый вызов инструмента автоматически логируется (
reports/); готовые синтезированные отчёты сохраняются отдельно черезsave_final_report(final_reports/).Построен на
FastMCPдля простой регистрации инструментов/промптов.
Правовые аспекты / ответственное использование
Анализируйте только APK, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Декомпилированные APK могут содержать чувствительные пользовательские данные — обрабатывайте вывод соответствующим образом и очищайте APKTOOL_WORK_DIR после работы, если в нём есть клиентские данные. Этот инструмент сам по себе не выполняет сетевую эксфильтрацию или активную эксплуатацию; PoC-команды в выводе security_audit (например, adb shell am start ...) предназначены для ручного запуска на устройстве/эмуляторе, которым вы управляете.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that enables AI assistants to analyze Android APK and iOS IPA files for security issues through natural language conversation, including permission auditing, secret detection, and SDK enumeration.12144MIT
- AlicenseNot gradedqualityBmaintenanceEnables Android APK static analysis in Cursor/Claude via GDA CLI Server, supporting reconnaissance, attack surface scanning, and code decompilation through natural language.11GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to perform autonomous Android security analysis, including static analysis, dynamic analysis, and Frida instrumentation, powered by MobSF.1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for analyzing Android APK, DEX, or JAR files via a headless jadx engine, enabling LLM agents to query decompiled code, symbols, call graphs, and more.1GPL 3.0
Related MCP Connectors
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
MCP server for static security analysis of Android source code
Offline methodology engine for authorized penetration testing, CTF, and security research.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/1111laaaddaaa/static-apk-auditor'
If you have feedback or need assistance with the MCP directory API, please join our Discord server