Skip to main content
Glama
1111laaaddaaa

StaticApkAuditor MCP

StaticApkAuditor MCP

Apktoolベースの逆コンパイルと、Android APK のセキュリティ評価のためのカスタム静的解析ヒューリスティック一式を、Claude Code / Claude Desktop での自然言語コマンドを通じて公開する Model Context Protocol (MCP) サーバーです。

これは何のためのものか

APK を指定すると、それを逆コンパイルし、AI アシスタントに結果を分析するための一連のツール(攻撃面、権限、ハードコードされたシークレット、暗号化の使用、ネイティブライブラリ、ビジネスロジックの候補)を提供し、MobSF などの他のツールからの結果と相互チェックします。すべての呼び出しはマークダウンレポートとしてディスクに記録されるため、チャットのトランスクリプトだけでなく、監査証跡が得られます。

これは静的解析の補助であり、完全なペネトレーションテストではありません。 いくつかのツールは、確認された脆弱性ではなく、手動/動的検証の候補を生成します。これはツールの説明と組み込みプロンプトで明示的に示されています。ランタイムの動作(競合状態、ワークフローのバイパス、実際のデータ流出)は、動的テスト(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.

利用可能なすべての機能については、下記のプロンプトツールを参照するか、Claude Code セッションで /mcp を実行して対話的に閲覧してください。

プロジェクト構造

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

すべてのツール呼び出しは、ツールの種類や成功/失敗に関係なく、その APK の reports/ フォルダにタイムスタンプ付きのマークダウンファイルを書き込みます。これはオプションの呼び出しごとのロギングではなく、登録されたすべてのツールに適用されるデコレータ(@logged_tool)であり、このサーバーに呼び出されるものはすべて記録されます。各レポートには、ツール名、呼び出し時のパラメータ、および完全な出力が含まれます。

reports/final_reports/ は異なる目的を果たします。reports/ は生の呼び出しログ(個々のツール呼び出しのすべて。何がいつチェックされたかを正確に監査するのに役立ちます)であり、final_reports/ は洗練された人間が読めるレポートのみを保持します。これは開発者やクライアントに渡す実際の成果物です。security_auditmobsf_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 -version

2. Apktool

# Ubuntu/Debian
sudo apt install apktool

# macOS
brew install apktool
apktool --version

3. Python 3.10+

python3 --version

4. (オプション)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 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

apktool

PATH にない場合の apktool 実行可能ファイルへのパス

AAPT_PATH

aapt

PATH にない場合の aapt へのパス

APKTOOL_WORK_DIR

~/.static-apk-auditor

すべての APK ごとのソース/デコード済み/レポートデータのルートフォルダ

ツール

コア(逆コンパイルとマニフェスト)

ツール

パラメータ

説明

decode_apk

apk_path, force=False

apktool で APK を逆コンパイルします。出力は APKTOOL_WORK_DIR/<slug>/decoded/ に永続化され(一時ディレクトリではありません)、元の APK のコピーは .../source/ に保持されます。

get_apk_info

apk_path

基本メタデータ:パッケージ、バージョン、SDK レベル、ファイルサイズ。aapt が利用可能な場合はそれを使用し、それ以外の場合はデコードされたマニフェストの解析にフォールバックします。

build_apk

decoded_dir, output_apk=None

(変更された可能性のある)デコードされたディレクトリから APK を再ビルドします。出力は署名なしです。apksigner で別途署名してください。

install_framework

framework_apk

システムフレームワーク APK をインストールして、それを参照するシステム/OEM アプリを apktool がデコードできるようにします。

analyze_manifest

decoded_dir

xml.etree を介して AndroidManifest.xml を直接解析:パッケージ/バージョン/SDK、エクスポートされたコンポーネント(Activity/Service/Receiver/Provider)、インテントフィルタ/ディープリンク、debuggable/allowBackup/taskAffinity

list_permissions

decoded_dir

要求されたすべての権限をリストし、Android 権限モデルで「危険」と分類されるものをフラグ付けします。

extract_strings

decoded_dir, locale="en"

指定されたロケールの文字列リソースを抽出します。

find_smali_references

decoded_dir, pattern, max_matches=200

すべての逆コンパイルされた .smali ファイルを正規表現で検索し、各一致のファイルと行を表示します。

セキュリティヒューリスティック

ツール

パラメータ

説明

list_native_libraries

decoded_dir

APK に含まれる .so ライブラリと CPU アーキテクチャをリストします。smali 検索では見えないコードをフラグ付けします。

check_ssl_pinning

decoded_dir

証明書検証を無効化する可能性のあるカスタム TrustManager/HostnameVerifier 実装、および CertificatePinner の使用と network_security_config.xml の内容をスキャンします。

check_pending_intents

decoded_dir

PendingIntent.getActivity/getBroadcast/getService 呼び出しを検出し、近くに FLAG_IMMUTABLE がないものをフラグ付けします。

extract_js_bundle_strings

decoded_dir, pattern=<url regex>

React Native / Expo アプリ向け:assets/*.bundleassets/*.js をパターンで検索します(デフォルトは URL の抽出。通常、実際のバックエンドエンドポイントが漏洩する場所です)。

check_root_detection

decoded_dir

ルート/エミュレータ検出と改ざん防止シグネチャをスキャンします:su バイナリパス、RootBeer/RootTools、SafetyNet、Play Integrity、test-keys ビルドタグ、一般的な isRooted スタイルのメソッド名。存在は動的テストでバイパスする必要があるものを示し、不在は機密アプリにとっての発見事項です。

ビジネスロジック偵察

ツール

パラメータ

説明

map_sensitive_flows

decoded_dir, extra_keywords=None

名前が機密操作(支払い、エンタイトルメント、ロール、割引、クォータ)を示唆するメソッド/クラスを特定し、近くの invoke-* 呼び出しを軽量な呼び出しコンテキストとして表示します。手動/動的レビューのための候補マップです。確認された脆弱性リストではありません。

find_client_side_only_checks

decoded_dir

ヒューリスティック:機密キーワードのヒットで、ローカル比較(if-*/cmp-*)が隣接するネットワーク呼び出しなしで現れる場合をフラグ付けします。決定がクライアント側で行われ、パッチ適用と再ビルドによってバイパス可能である可能性を示唆します。

MobSF レポート検証

ツール

パラメータ

説明

load_mobsf_report

report_path

MobSFの静的解析JSONレポート(code_analysismanifest_analysispermissionsurls/emails/firebase_urlsnetwork_securitycertificate_analysis)を読み込んで正規化します。それ自体が妥当性を判断するわけではありません。

cross_validate_mobsf_finding

decoded_dir, finding_pattern, mobsf_file_hint=None

MobSFの1つの検出結果を、あなた自身のデコンパイル済み出力(smali + 文字列リソース)と突き合わせて誤検出を補足します。モデルが分類する — 確認済み / 誤検出 / 手動レビューが必要 — ための証拠を返します。モデル自身が分類することはありません。

プロンプト(ガイド付きワークフロー)

プロンプトは、モデルがその都度自ら呼び出すツールとは異なり、Claude Codeでスラッシュコマンド(/apktool-pro:<name>)として明示的に呼び出します。

プロンプト

引数

動作内容

security_audit

apk_path

16項目からなる完全チェックリスト(攻撃対象領域、権限、シークレット、暗号、WebView、ストレージ、SSLピンニング、タスクハイジャッキング、ルート検出、エクスポートされたレシーバー/プロバイダー、JSバンドル、ネイティブラカル、ロギング、依存関係のバージョン、PendingIntentの可変性、ビジネスロジック)を実行。出力:Summary → 詳細な検出結果(信頼度評価 + adbのPoC手順) → OWASP Mobile Top 10(M1–M10)に対応づけ欠けたリスク表。

mobsf_review

apk_path, mobsf_report_path

MobSFのJSONレポートを読み込み、すべての検出結果を実際のデコンパイル済みコードと相互検証し、それぞれを確認済み / 誤検出 / 手動レビューが必要に分類します。MobSF自身の評価とは独立に重大度を再評価し、確認済みの検出結果のみの優先対応リストを生成します。

quick_triage

apk_path

高速パス:エクスポートされたコンポーネント + 危険な権限 + 明白なハードコード済みシークレットをチェックします。完全な監査が必要でない場合に。/用います。

使用例

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"

利用可能なすべてのツールと正確なパラメータをいつでも確認するには、Claude Codeセッションで/mcpを実行し、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_pinningcheck_root_detectionmap_sensitive_flowsなど)は、難読化・リネームされたコードを検出できない可能性があり、無関係な一致を誤検出することがあります。これらの出力は検証済みの判定ではなく、レビュー用の優先候補として扱ってください。

  • install_framework は、framework-res.apkを参照するシステム / OEM APKのデコードにのみ必要です。大半のマールドパーティアプリの解析では不要です。

設計メモ

  • APKTOOL_WORK_DIRは常に尊重されます。各APKには永続的で自己完結したフォルダ(source/decoded/reports/final_reports/)が割り当てられ、使い捨ての一時ディレクトリには何も書き込まれません。

  • get_apk_infoは、aaptがインストールされていない場合は、何も有用なものを返さずに終了するのではなく、デコード済みマニフェストの解析にフォールダします。

  • すべてのツール呼び出しは自動的にログされます(reports/)。完成した統合レポートはsave_final_reportfinal_reports/)によって別途保存されます。

  • FastMCP上に構築されているため、ツール / プロンプトの登録が簡単です。

法的 / 責任ある利用

所有しているAPK、またはテストを明示的に書面で許可されたAPKのみを解析してください。デコンパイルされたAPKには機密性の高いユーザーデータが含まれる可能性があるため、出力はそれに応じて取り扱い、クライアントデータが含まれる場合は契約後にエンゲージメント終了後にAPKTOOL_WORK_DIRをクリーンアップしてください。このツールは、それ自体ではネットワークへの外部送信や能動的なエクプロディット・実行を行いません。security_auditの出力におけるPoCコマンド(例: adb shell am start ...)は、あなたがかない、あなたが制御するデバイス / エミュレータ上で手動で実行することを想定しています。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    C
    maintenance
    An 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.
    12
    14
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Android APK static analysis in Cursor/Claude via GDA CLI Server, supporting reconnaissance, attack surface scanning, and code decompilation through natural language.
    11
    GPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    1
    GPL 3.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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