apktool-mcp-server (Part of Zin's Reverse Engineering MCP Suite) について
apktool-mcp-server は apktool をベースに構築された MCP サーバーで、Claude などの LLM による Android APK の解析を支援します。マニフェストの解析、smali コードとリソースの確認、再ビルドに対応しています。セキュリティ評価者やリバースエンジニアを対象とし、Zin リバースエンジニアリング MCP スイートの一部です。
主な機能
- 01APK のデコードとプロジェクトの再ビルド
- 02AndroidManifest.xml と apktool.yml の解析
- 03smali ファイルの一覧表示・読み取り・編集
- 04リソースファイルの閲覧と編集
- 05プロジェクト内のファイルを対象としたパターン検索
活用シーン
- 01マニフェストでエクスポートされたコンポーネントや危険な権限を確認する
- 02smali コード内で機密性の高い API の呼び出し箇所を検索する
- 03smali コードを修正し、テスト用に APK を再ビルドする
MCP 対応
apktool-mcp-server は MCP サーバーとして、decode_apk、get_manifest、modify_smali_file などのツールを MCP クライアントに公開し、LLM がデコード済みの APK プロジェクトを直接操作できるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
apktool-mcp-server(ZinのリバースエンジニアリングMCPスイートの一部)
⚡ apktoolを基盤に構築された完全自動化MCPサーバーです。ClaudeなどのLLMを使用してAndroid APKを分析し、脆弱性の発見、マニフェストの解析、リバースエンジニアリングを手軽に行えます。
画像はAIツールを使用して生成されました。
🤖 apktool-mcp-serverとは?
apktool-mcp-serverは、Apk Tool向けのMCPサーバーです。Model Context Protocol (MCP)と直接連携し、ClaudeなどのLLMによるリアルタイムのリバースエンジニアリング支援を提供します。
「逆コンパイル → コンテキストを考慮したコードレビュー → AIによる提案」をすべてリアルタイムで実行できます。
デモをご覧ください!
https://github.com/user-attachments/assets/d50251b8-6b1c-4341-b18e-ae54eb24a847
- CTFを攻略する
https://github.com/user-attachments/assets/c783a604-a636-4e70-9fa8-37e3d219b20b
Zin MCP Suiteのその他のプロジェクト
現在のMCPツール
以下のMCPツールを利用できます。
build_apk()— デコード済みのAPKToolプロジェクトからAPKをビルドします。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()— 指定された拡張子のファイル内でパターンを検索します。clean_project()— 再ビルドに備えてプロジェクトディレクトリをクリーンアップします。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 の内容を表示してください。」
-
「layout タイプのリソースファイルをすべて一覧表示してください。」
-
「すべてのリソースファイルと 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 の設定を表示してください。」
-
「ADB 経由で接続されている、利用可能な Android デバイスをすべて取得してください。(ADB MCP Server への移行予定です。)」
-
「apktool.yml から dvac プロジェクトのメタデータを取得してください。」
-
「サーバーに現在インストールされている APKTool のバージョンを確認してください。」
🛠️ はじめに
1. Releases からダウンロード:https://github.com/zinja-coder/apktool-mcp-server/releases
# 0. Download and install apktool
https://apktool.org/docs/install
# 1. Test whether apktool has been correctly configured in the environment variables
$ apktool -version
# 2. Download the apktool-mcp-server-<version>.zip
https://github.com/zinja-coder/apktool-mcp-server/releases
# 3.
unzip apktool-mcp-server-<version>.zip
├apktool-mcp-server/
├── apktool_mcp_server.py
├── requirements.txt
├── README.md
├── LICENSE
# 4. Navigate to apktool-mcp-server directory
cd apktool-mcp-server
# 5. 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. Ollama と Zin MCP Client を使用してローカル LLM で実行する方法 - 推奨
⚡ Ollama で実行するローカル LLM と MCP サーバーをつなぐ、軽量・高速・シンプルな CLI ベースの STDIO MCP サーバー向け MCP クライアントです。
こちらをご覧ください:https://github.com/zinja-coder/zin-mcp-client
デモ:近日公開予定...
🤖 3. Claude Desktop のセットアップ
Claude Desktop が MCP を有効にして実行されていることを確認してください。
たとえば、Kali Linux では以下を使用しました:https://github.com/aaddrick/claude-desktop-debian
LLM ファイルを設定し、MCP サーバーを追加します:
nano ~/.config/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/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"
]
}
}
}
以下を置き換えてください:
path/to/uvを、実際のuv実行ファイルへのパスに置き換えてくださいpath/to/apktool-mcp-serverを、このリポジトリをクローンした場所の絶対パスに置き換えてください
次に、コードに移動し、組み込みの連携機能を使って、リアルタイムのコードレビュー用プロンプトで対話してください。
4. Cherry Studio のセットアップ
Cherry Studio で MCP ツールを設定する場合は、次の設定を参照してください。
- Type:stdio
- command:uv
- argument:
--directory
path/to/apktool-mcp-server
run
apktool_mcp_server.py
path/to/apktool-mcp-serverを、このリポジトリをクローンした場所の絶対パスに置き換えてください
バグ、問題、機能の提案、パフォーマンスの問題、一般的な質問、ドキュメントの問題を報告する場合
-
該当するテンプレートを使用して、Issue を作成してください。
-
Claude Desktop Client でテスト済みです。他の AI のサポートについては、近日中にテストする予定です!
🙏 クレジット
このプロジェクトは、@iBotPeaches が作成・保守している素晴らしいオープンソースの Android リバースエンジニアリングツールである Apktool の MCP サーバーです。APK のデコードとリソース処理に関するすべてのコアロジックは、Apktool に帰属します。私は AI 機能を備えた MCP サーバーをサポートするために拡張しただけです。
Apktool のオリジナルの README.md は、参照およびクレジット表記のためにこのリポジトリに含まれています。
また、Debian ベースの Linux 向け Claude デスクトップ版を開発した @aaddrick にも心より感謝します。
最後に、Model Context Protocol を開発した @anthropics と @FastMCP チームにも感謝します。
このようなプロジェクトの実現に必要なライブラリや依存関係を提供してくださる、すべてのオープンソースプロジェクトのメンテナーとコントリビューターにも感謝します。
📄 ライセンス
apktool-mcp-server と関連するすべてのプロジェクトは、Apache 2.0 を継承しています。
⚖️ 法的警告
免責事項
apktool-mcp-server とこのプロジェクトに含まれる関連ツールは、教育、研究、倫理的なセキュリティ評価のみを目的としています。これらのツールは、明示または黙示を問わず、いかなる保証もない「現状有姿」で提供されます。これらのツールの使用が、適用されるすべての法律、規制、倫理ガイドラインに準拠していることを確認する責任は、ユーザーが単独で負います。
apktool-mcp-server を使用することで、所有するアプリケーションや、分析する明示的な許可を得ているアプリケーションなど、テストする権限のある環境でのみ使用することに同意したものとみなされます。許可されていないリバースエンジニアリング、知的財産権の侵害、悪意のある活動にこれらのツールを悪用することは、固く禁止されています。
apktool-mcp-server の開発者は、これらのツールの使用または誤用に起因する損害、データ損失、法的責任、その他の結果について、一切の責任を負いません。ユーザーは、自らの行動と、それによって生じるあらゆる影響に対する全責任を負います。
責任を持ってご使用ください。知的財産を尊重してください。倫理的なハッキングの実践に従ってください。
🙌 貢献またはサポート
貢献
- 役に立ちましたか?⭐️を付けてください
- アイデアがありますか?issue を作成するか、PR を送ってください
- これをベースに何か作りましたか?DM するか、私に知らせてください。README に追加します!
監査済み・評価バッジ取得済み
監査を実施し、評価バッジを提供してくださった Mseep.net に感謝します。
リバースエンジニアリングと AI コミュニティのために ❤️ を込めて開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
