mcpField
D
DexSQL

DexSQL

ローカル
dexsql.lsposed.org開発ツール2534 日前に更新

DexSQL について

DexSQLは、AndroidのAPKやDEXに含まれるクラス、メソッド、文字列、呼び出し参照をSQLで検索するツールです。リバースエンジニアやAIエージェント向けに、コマンドラインと内蔵MCPサーバーを提供し、ファイルをローカルで解析します。

主な機能

  1. 01APKとDEXを横断するSQLクエリ
  2. 02クラス、メソッド、文字列、参照の検索
  3. 03複数ファイルをまとめて入力
  4. 04対話型クエリと再利用可能なスクリプト
  5. 05サードパーティーのライセンス通知を抽出

活用シーン

  1. 01特定の文字列やURLを参照するメソッドの検索
  2. 02直接および複数段階の呼び出し元の追跡
  3. 03APKから関連するSmaliを確認
  4. 04DEXファイルに対する分析クエリの反復実行

MCP 対応

内蔵MCPサーバーはstdio経由でAIクライアントをDexSQLに接続します。MCPリソースでスキーマとドキュメントを提供し、APKの解析はローカルで行います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbdexsql.mcpb

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

DexSQL

Featured on Made with REA

English | 简体中文

Android バイナリ向けの SQL です。

APK ファイルと DEX ファイル内のクラス、メソッド、文字列、呼び出し参照をクエリできます。MCP 経由で AI エージェントに接続するか、コマンドラインから使用できます。

プレイグラウンド · ドキュメント · ダウンロード · スキルをインストール · ベンチマーク

DexSQL を使う理由

AI エージェントは、DEX ファイル全体を対象にシグネチャ、文字列、呼び出し関係を1つの SQL クエリで組み合わせ、必要な構造化結果だけを返せます。クエリを生成、改良し、再利用できるスクリプトとして保存できます。

DexSQL は DEX を直接読み取り、読み込み済みのデータセットを再利用するため、低レイテンシーかつ少ないメモリ使用量でクエリを繰り返し実行できます。測定結果についてはベンチマークをご覧ください。

組み込みの MCP サーバーは GUI を必要とせず、エージェントに直接接続できます。

flowchart LR
    A["AI client"] -->|stdio MCP| D["DexSQL"]
    D --> F["APK / DEX"]
    A -->|stdio MCP| P["JADX-MCP · Python"]
    P -->|HTTP| J["JADX GUI + plugin · JVM"]
    J --> F

AI エージェントで使用する

DexSQL は、公式 MCP Registry に org.lsposed/dexsql として掲載されています。レジストリからサーバーをインストールするクライアントでは、DexSQL を直接追加できます。また、Claude Desktop では Releases から dexsql.mcpb バンドルを開けます。このバンドルは macOS、x86_64 Linux、x86_64 Windows に対応しています。他のプラットフォームでは、以下のスキルまたは手動セットアップを使用してください。

Skills CLI でセットアップスキルをインストールします。

npx skills add LSPosed/dexsql-release --skill install-dexsql

次に、エージェントに install-dexsql を使用して DexSQL をインストールし、MCP 接続を設定するよう指示します。Codex では $install-dexsql として呼び出してください。

このスキルは Releases から互換性のあるバイナリをダウンロードし、SHA-256 チェックサムを検証して、MCP 設定を追加し、接続を確認します。ローカルの実行ファイルも使用できます。上記のコマンドはスキルをインストールします。実際のセットアップは、スキルを呼び出したときにエージェントが行います。

MCP の手動セットアップ

Releases を開き、お使いのオペレーティングシステムと CPU アーキテクチャに合った実行ファイルまたはアーカイブを選択します。選択したリリースのアセットとリリースノートで、入手可能かどうかとシステム要件を確認してください。必要に応じてアーカイブを展開し、実行ファイルの名前を Windows では dexsql.exe、macOS/Linux では dexsql に変更します。macOS/Linux では chmod +x /path/to/dexsql を実行してください。

同じ Release から LICENSE と LICENSE-AUXILIARY をダウンロードして実行ファイルと同じ場所に保存し、実行ファイルの絶対パスを登録します。Codex の場合:

codex mcp add dexsql -- /absolute/path/to/dexsql mcp

mcpServers JSON を使用するクライアントの場合:

{
  "mcpServers": {
    "dexsql": {
      "command": "/absolute/path/to/dexsql",
      "args": ["mcp"]
    }
  }
}

Windows では dexsql.exe を使用し、JSON 内のバックスラッシュをエスケープしてください。例:"D:\\Tools\\dexsql.exe"。必要に応じて、クライアントの MCP 接続を再読み込みします。クライアント設定については、Codex MCP ドキュメントをご覧ください。

接続したら、次のように試してください。

/path/to/app.apk を開いてください。このログメッセージを参照しているメソッドを見つけ、その呼び出し元を一覧表示し、関連する Smali を表示してください。

サーバーは MCP リソースを通じてスキーマとドキュメントを提供します。APK の解析はローカルで実行され、入力ファイルは変更されません。どの結果がモデルに送信されるかは、AI クライアントの設定によって決まります。

パフォーマンス

実際の MCP セッション

AI エージェントが DexSQL MCP サーバーを通じて、Douyin 40.7.0(343 MiB、DEX ファイル56個)を分析しました。分析の目標を DexSQL 0.1.1 とほかの6つのツールで再現しました:rasc(ASCのRust実装)、DexDec、[ddc](https://github.com/ejfkdev/ddc)、[JADX](https://github.com/skylot/jadx) API、[garlic](https://github.com/neocanable/garlic)、[droidsaw](https://github.com/droidsaw/droidsaw)。

Douyin 40.7.0:7つのツールで、最初に1回開いてから10個の分析目標を実行。起動、クエリ、サードパーティ製ツールの呼び出しに分割。対数目盛。

APKを1回開いて10個の目標に回答するまで、DexSQLでは0.71秒、rascでは1.69秒、DexDecでは16秒、ほかのツールでは75秒から449秒かかりました。DexSQLは1セッションにつきAPKを1回開くために0.38秒を要します。rascは開く処理はありませんが、各ステップでAPKを読み直すため、質問が1つだけのセッションではrascのほうが早く完了します。一部のツールでは期待される証拠がすべて見つかりませんでした。これらの見落としは現在も調査中です。すべての目標、各ツールのインターフェース、手法、ハーネスについては、再生レポートをご覧ください。

QQに対する固定クエリ

約372 MiBの同一のQQ 9.3.55 APKに対して、クラスとメソッドの検索、文字列参照、直接および2ホップの呼び出し元、複合条件の8つのクエリを実行します。比較対象には、JADX、zinja-coderのJADX-MCP、ASC、DexDec、ddc、[garlic](https://github.com/neocanable/garlic)、[droidsaw](https://github.com/droidsaw/droidsaw)が含まれます。

8つのツールにおけるプロセスの起動、準備、最初のクラス検索。

起動時間には、プロセスの起動、読み込みと準備、最初の完全一致クラス検索が含まれます。値は3回実行したときの中央値です。OSのファイルキャッシュはフラッシュしていません。

QQ 9.3.55:8つのツールにおけるクラス、メソッド名、文字列参照のクエリ時間。

クエリ時間には、準備済みの3つのワークフローで9回繰り返したときの中央値を使用します。garlicは呼び出しごとにMCPを再起動するため、その時間も含まれます。droidsaw CLIでは、読み込み時間を含む3回の個別の呼び出しを使用します。各クエリは、ゼロから始まる1つの線形グラフで表示します。軸の上限を超えるバーは途中で切り、矢印を付けて実際の時間を表示します。**斜線入りのバーは、クエリが60秒以内に完了しなかったことを示します。**灰色の項目は、比較結果がない理由を説明します。

呼び出しチェーンと複合条件

直接および2ホップの呼び出し元クエリ。

文字列と呼び出しの共通部分、4つの事実によるフィルタリング、複雑な集合クエリ。

直接および2ホップのクエリは、15個と16個のメソッドを返します。各複合クエリは1つのメソッドを返します。完了してグラフに表示された結果セットは、すべて検証済みです。JADXのネイティブアダプターはメタデータとDEX命令を直接読み取ります。参照を見つけるためにAPK全体を逆コンパイルすることはありません。

クラス検索と実行したすべてのクエリにおけるプロセスツリーのメモリ使用量ピーク。

メモリの測定では、プロセスツリー全体を対象に50 msの間隔でポーリングします。明るい色のバーは、共通の読み込みとクラス検索のワークフローを示します。濃い色のバーは、各ツールで実行したケースを示します。RSSの合計では、共有ページが複数回カウントされる場合があります。プライベートコミットメモリと準備完了時の使用量も記録しています。

今回の実行では、DexDecの参照キャッシュにより、繰り返し実行する呼び出し元クエリがDexSQLより速くなっています。droidsawのMCPは固定の解析予算内で入力を処理できなかったため、CLIの結果をグラフに表示しています。初回クエリと準備の時間、インターフェースの違い、SQL、結果ハッシュ、再現スクリプトについては、レポートをご覧ください。

CLI

dexsql query --input app.apk --sql "SELECT DISTINCT method FROM method_strings WHERE value = 'https://api.example.com'"
dexsql query --input app.apk --interactive
dexsql extract licenses --output THIRD_PARTY_NOTICES
dexsql --help

--inputを繰り返し指定すると、複数のファイルをまとめてクエリできます。同じ実行ファイルでCLIとMCPサーバーを利用できます。

ライセンス

DexSQL は LSPosed のクローズドソースソフトウェアであり、DexSQL Binary License 1.0 に基づいてライセンスされています。その条件のもとで、個人利用および商用利用、統合、バイナリの再配布は無料です。

公開されているインストールスキル、ベンチマーク資料、ドキュメントには、MIT License が適用されます。

サードパーティの資料には、それぞれ独自のライセンスが適用されます。dexsql extract licenses を実行すると、ライセンス表記を確認できます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。