Apktool MCP Server

by zinja-coder
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Provides tools for Android APK reverse engineering, including decoding APKs, examining smali code, analyzing manifests, inspecting resources, building modified APKs, and signing APKs for installation.

  • Integration with Kali Linux for running the APKTool MCP server in a security-focused environment, specifically mentioning Claude Desktop for Debian-based Linux.

  • Features a demo video on YouTube showcasing the APKTool MCP server's capabilities for reverse engineering Android applications.

apktool-mcp-server (Zin のリバース エンジニアリング MCP スイートの一部)

AI ツールを使用して生成された画像。


🤖 apktool-mcp-server とは何ですか?

apktool-mcp-server は、 Model Context Protocol (MCP)と直接統合して**、Claude などの LLM によるライブ リバース エンジニアリング サポート**を提供するApk Tool用の MCP サーバーです。

「デコンパイル → コンテキスト認識コードレビュー → AI による推奨」をすべてリアルタイムで実現します。

デモをご覧ください!

Androidリバースエンジニアリング用のその他のMCPサーバー

現在のMCPツール

次の MCP ツールが利用可能です。

  • build_apk() — デコードされた APKTool プロジェクトから APK をビルドします。
  • list_workspace_projects() — ワークスペース内のすべての APKTool プロジェクト ディレクトリを一覧表示します。
  • get_manifest() — デコードされた APK プロジェクトから AndroidManifest.xml コンテンツを取得します。
  • get_apktool_yml() — デコードされた APK プロジェクトから apktool.yml 情報を取得します。
  • list_smali_directories() — プロジェクト内のすべての smali ディレクトリを一覧表示します。
  • list_smali_files() — 特定の smali ディレクトリ内の smali ファイルを一覧表示します。オプションでパッケージ プレフィックスでフィルター処理されます。
  • get_smali_file() — クラス名で特定の smali ファイルの内容を取得します。
  • modify_smali_file() — 特定の smali ファイルの内容を変更します。
  • list_resources() — プロジェクト内のリソースを一覧表示します。オプションでリソース タイプ別にフィルター処理します。
  • get_resource_file() — 特定のリソース ファイルの内容を取得します。
  • modify_resource_file() — 特定のリソース ファイルの内容を変更します。
  • search_in_file() — 指定された拡張子を持つファイル内のパターンを検索します。
  • check_apktool_version() — インストールされている APKTool のバージョンを確認します。
  • sign_apk() — APK ファイルに署名します。
  • install_apk() — ADBを使用して接続されたデバイスにAPKをインストールします。//今後のADB MCPサーバーに移行されます
  • extract_dex() — 元の APK から DEX ファイルを抽出します (プロジェクトで利用可能な場合)。
  • list_packages() — ADB を使用して接続された Android デバイスにインストールされているパッケージを一覧表示します。//今後の ADB MCP サーバーに移行されます
  • analyze_permissions() — AndroidManifest.xml で宣言された権限を分析します。
  • clean_project() — 再構築の準備としてプロジェクト ディレクトリをクリーンアップします。
  • create_project() — 新しい空の APKTool プロジェクト構造を作成します。
  • delete_project() — APKTool プロジェクトディレクトリを削除する
  • compare_smali_files() — 2 つの smali ファイルを比較し、違いを表示します。
  • get_available_devices() — ADB経由で接続された利用可能なAndroidデバイスのリストを取得します**。 // 今後のADB MCPサーバーに移行されます。**
  • decode_apk() — APKTool を使用して APK ファイルをデコードし、リソースと smali コードを抽出します。

🗒️ サンプルプロンプト

🔍 基本的なコードの理解

  • 「dvac プロジェクトのすべての smali ディレクトリを一覧表示します。」
  • 「dvac プロジェクトのパッケージ プレフィックス com.vulnerable.component の下にあるすべての smali ファイルを表示してください。」
  • 「com.vulnerable.component.MainActivity クラスの smali コードを取得します。」
  • 「MainActivity.smali を以前のバージョンと比較し、違いを表示します。」
  • 「dvac プロジェクトの smali ファイルで startActivity の使用状況を検索します。」

🛡️ 脆弱性検出

  • 「dvac AndroidManifest.xml で宣言された権限を分析し、危険な権限にフラグを設定します。」
  • 「プロジェクト内のすべての .xml および .smali ファイルでハードコードされた URL または IP を検索します。」
  • 「smali ファイル内の PendingIntent.getActivity の使用箇所をすべて検索します。」
  • 「dvac の AndroidManifest.xml でエクスポートされたアクティビティまたはレシーバーを確認します。」
  • 「android.permission.SEND_SMS または READ_CONTACTS にアクセスするすべての smali ファイルを一覧表示します。」

🛠️ リバースエンジニアリングヘルパー

  • 「このAPK:dvac.apkをデコードし、dvacというプロジェクトを作成してください。」
  • 「test-harness という新しい APKTool プロジェクトを作成します。」
  • 「再構築前に dvac プロジェクトをクリーンアップしてください。」
  • 「外部分析のために dvac プロジェクトから DEX ファイルを抽出します。」
  • 「MainActivity.smali を変更して、onCreate() の先頭にログ ラインを挿入します。」

📦 静的解析

  • 「dvac プロジェクトから完全な AndroidManifest.xml を取得します。」
  • 「dvac プロジェクトの apktool.yml の内容を表示します。」
  • 「レイアウトタイプのすべてのリソース ファイルを一覧表示します。」
  • 「すべてのリソース ファイルと smali ファイルで「password」という単語を検索します。」
  • 「使用されている権限を確認し、一般的な過剰権限のリスクと比較してください。」

🤖 AIコードの改変

  • 「MainActivity.smali の onCreate() メソッドを変更してトースト メッセージを追加します。」
  • 「strings.xml 内のすべての http:// リンクを https:// に置き換えます。」
  • 「AndroidManifest.xml 内のすべてのアクティビティに android:exported=false 属性を追加します。」
  • 「LoginManager.smali のメソッドvalidateLoginにパッチを適用して、常にtrueを返すようにします。」
  • 「MainActivity.smali 内のすべてのメソッドにログ ステートメントを追加します。」

📄 ドキュメントとメタデータ

  • 「ワークスペース内のすべてのデコードされた APKTool プロジェクトを一覧表示します。」
  • 「バージョン、元の APK メタデータ、圧縮設定を確認するには、apktool.yml 構成を見せてください。」
  • 「利用可能なすべての Android デバイスを ADB 経由で接続します。(ADB MCP サーバーに移行されます。」)
  • 「apktool.yml からプロジェクト dvac に関するメタデータを取得します。」
  • 「現在サーバーにインストールされているAPKToolのバージョンを確認してください。」

🛠️ はじめに

1. リリースからダウンロード: https://github.com/zinja-coder/apktool-mcp-server/releases

# 0. Download the apktool-mcp-server-<version>.zip https://github.com/zinja-coder/apktool-mcp-server/releases # 1. unzip apktool-mcp-server-<version>.zip ├apktool-mcp-server/ ├── apktool_mcp_server.py ├── requirements.txt ├── README.md ├── LICENSE ```bash # 2. Navigate to apktool-mcp-server directory cd apktool-mcp-server # 3. This project uses uv - https://github.com/astral-sh/uv instead of pip for dependency management. ## a. Install uv (if you dont have it yet) curl -LsSf https://astral.sh/uv/install.sh | sh ## b. OPTIONAL, if for any reasons, you get dependecy errors in apktool-mcp-server, Set up the environment uv venv source .venv/bin/activate # or .venv\Scripts\activate on Windows ## c. OPTIONAL Install dependencies uv pip install httpx fastmcp # The setup for apktool-mcp-server is done.

🤖 2. クロードデスクトップのセットアップ

Claude Desktop が MCP を有効にして実行されていることを確認します。

たとえば、私は Kali Linux に以下を使用しました: https://github.com/aaddrick/claude-desktop-debian

MCP サーバーを構成して LLM ファイルに追加します。

nano ~/.config/Claude/claude_desktop_config.json

そしてその中には次の内容が含まれています:

{ "mcpServers": { "apktool-mcp-server": { "command": "/<path>/<to>/uv", "args": [ "--directory", "</PATH/TO/>apktool-mcp-server/", "run", "apktool_mcp_server.py" ] } } }

次に、組み込みの統合を使用して、コードをナビゲートし、リアルタイムのコード レビュー プロンプトを介して対話します。

バグ、問題、機能の提案、パフォーマンスの問題、一般的な質問、ドキュメントの問題を報告します。

  • それぞれのテンプレートで問題を開いてください。
  • Claude デスクトップ クライアントでテスト済み。他の AI のサポートも近日中にテストされる予定です。

🙏 クレジット

このプロジェクトは、 @iBotPeachesが開発・保守するオープンソースのAndroidリバースエンジニアリングツール「Apktool」用のMCPサーバーです。APKのコアとなるデコードおよびリソース処理ロジックはすべてiBotPeachesに帰属します。私は、AI機能を備えたMCPサーバーをサポートするために、このサーバーを拡張しただけです。

📎 オリジナルのREADME(Apktool)

Apktool のオリジナルの README.md は、参照とクレジットのためにこのリポジトリに含まれています。

また、Debian ベースの Linux 用に Claude デスクトップを開発してくれた@aaddrickにも大いに感謝いたします。

最後に、モデル コンテキスト プロトコルを開発した@anthropics@FastMCPチームに感謝します。

📄 ライセンス

apktool-mcp-serverと関連プロジェクトはApache 2.0を継承しています。

⚖️ 法的警告

免責事項

apktool-mcp-serverツールおよび本プロジェクトの関連ツールはすべて、教育、研究、および倫理的なセキュリティ評価のみを目的としています。これらは「現状有姿」で提供され、明示的または黙示的な保証は一切ありません。ユーザーは、これらのツールの使用が適用されるすべての法律、規制、および倫理ガイドラインに準拠していることを保証する責任を単独で負います。

apktool-mcp-server使用することにより、お客様は、ご自身が所有するアプリケーションや明示的に分析を許可されたアプリケーションなど、テストを許可された環境でのみこれらを使用することに同意するものとします。これらのツールを不正なリバースエンジニアリング、知的財産権の侵害、または悪意のある活動のために悪用することは固く禁じられています。

apktool-mcp-serverの開発者は、これらのツールの使用または誤用に起因するいかなる損害、データ損失、法的結果、その他の結果についても責任を負いません。ユーザーは、自らの行動および使用によって生じたあらゆる影響について全責任を負うものとします。

責任を持って使用してください。知的財産を尊重し、倫理的なハッキング慣行に従ってください。


リバース エンジニアリングと AI コミュニティのために ❤️ を込めて構築されました。

-
security - not tested
A
license - permissive license
-
quality - not tested

Apktool と統合し、モデル コンテキスト プロトコルを通じて Claude やその他の LLM を使用して Android アプリケーションのライブ リバース エンジニアリング サポートを提供する MCP サーバーです。

  1. 🤖 What is apktool-mcp-server?
    1. Other MCP Servers For Android Reverse Engineering
      1. Current MCP Tools
      2. 🗒️ Sample Prompts
      3. 🛠️ Getting Started
      4. 🤖 2. Claude Desktop Setup
      5. To report bugs, issues, feature suggestion, Performance issue, general question, Documentation issue.
      6. 🙏 Credits
      7. 📄 License
      8. ⚖️ Legal Warning
    ID: jtugu4w3w9