DexAndroid MCP server
Commit 18 Okt 2026Memungkinkan AI client untuk melakukan reverse-engineering Android, termasuk unpacking APK, dekompilasi smali, dan deteksi packer.
Juga dikenal sebagai TimeCyber/DexAndroid
- Stars
- 2
- Tools
- 15
- Unduhan, 30 hari
- —
- Versi terbaru
- —
- Commit terakhir
- 18 Okt 2026
- Lisensi
- MIT
Apa itu DexAndroid MCP?
DexAndroid adalah MCP server. Memungkinkan AI client untuk melakukan reverse-engineering Android, termasuk unpacking APK, dekompilasi smali, dan deteksi packer. Server ini menyediakan 15 tool, seperti detect_packer, pull_apk, static_unpack.
Ringkasan dibuat dari README proyek
Tentang DexAndroid MCP server
DexAndroid memungkinkan Anda melakukan reverse-engineering Android dan analisis smali langsung dari dalam AI client seperti Cursor, Claude Code, atau Codex. MCP server ini menyediakan rangkaian tool bagi peneliti keamanan dan developer untuk mengelola perangkat ADB yang terhubung, mendeteksi berbagai packer seperti Tencent atau Alibaba, serta melakukan unpacking aplikasi menggunakan berbagai metodologi.
Anda dapat memilih antara static unpacking untuk file sederhana, BlackDex untuk memory dump tanpa root, atau Frida untuk deep unpacking pada perangkat yang sudah di-root. Server ini memfasilitasi konversi file dex ke format smali menggunakan baksmali, sehingga memungkinkan inspeksi kode secara mendalam. Setelah didekompilasi, sistem mendukung pencarian string API, listing class, dan membaca file smali tertentu untuk memahami logika aplikasi.
Setup memerlukan Node.js, Java 8 atau versi lebih tinggi, dan ADB pada system path Anda. Meskipun fungsi dasar dapat berjalan dengan setup standar, unpacking tingkat lanjut memerlukan binary lokal seperti frida-server atau BlackDex yang ditempatkan di direktori tools. Semua file hasil unpack akan disimpan ke direktori lokal yang ditentukan oleh environment variable DEX_OUT_DIR.
Apa yang bisa Anda lakukan dengannya
- 1Mendeteksi application packerIdentifikasi apakah sebuah APK dilindungi oleh penyedia keamanan tertentu seperti Bangcle atau ijiami.
- 2Unpacking aplikasi yang dilindungiEkstrak business logic dari aplikasi yang dilindungi menggunakan memory dump ketika metode statis gagal.
- 3Mencari API endpointGunakan pola regex untuk menemukan URL jaringan atau string API sensitif di dalam kode smali.
- 4Menemukan entry point aplikasiTemukan main launcher activity dan method onCreate di dalam direktori smali.
Ditulis berdasarkan README proyek. Setiap use case diperiksa terhadap kutipan dari README tersebut.
Tool DexAndroid MCP 15
Terdeteksi dari READMEdetect_packerpull_apkstatic_unpackblackdex_prepareblackdex_pullfrida_preparefrida_unpackdex_to_smalismali_list_classessmali_read_classsmali_searchfind_app_entry
| detect_packer | — | |
| pull_apk | — | |
| static_unpack | — | |
| blackdex_prepare | — | |
| blackdex_pull | — | |
| frida_prepare | — | |
| frida_unpack | — | |
| dex_to_smali | — | |
| smali_list_classes | — | |
| smali_read_class | — | |
| smali_search | — | |
| find_app_entry | — |
Tampilkan semua 15 toolTampilkan lebih sedikit tool
apk_decodeapk_repacksmali_patch
| apk_decode | — | |
| apk_repack | — | |
| smali_patch | — |
Konfigurasi
ADB_PATHDEX_OUT_DIR
| Nama | Deskripsi | Tipe |
|---|---|---|
| ADB_PATH | — | |
| DEX_OUT_DIR | — |
Pengecekan otomatis
Berjalan 14 Nov 2026Laporan lengkap →Belum diverifikasi. Sebuah server memerlukan skor 80, tidak ada temuan serius, dan data yang cukup untuk kami periksa. Cara kerja checks
- Source repository terhubung dan dapat dijangkautimecyber/dexandroid is public and reachablegithub.com/timecyber/dexandroid ↗Lolos
- Paket menyebut repo ini sebagai sumbernyaTidak diperiksa
- Provenance build (atestasi Sigstore)Tidak diperiksa
- Lisensi open source (OSI)MITspdx.org/licenses/MIT.html ↗Lolos
- Ada commit atau release dalam satu tahun terakhirLast commit or release 2026-10-18github.com/timecyber/dexandroid ↗Lolos
- OpenSSF ScorecardTidak diperiksa
- Nama package tidak mirip dengan package populerTidak diperiksa
- Tidak ada advisory kritis di paket maupun dependensinyaTidak diperiksa
- Tidak ada instruksi tersembunyi untuk model15 tool descriptions and the README read; no override phrases, credential paths or hidden charactersLolos
- Tools yang bersifat destruktif telah diberi labelNo tool named like delete, drop or execLolos
- Endpoint remote menjawab handshake MCPTidak diperiksa
README
Lihat di GitHubDexAndroid---Android Decompile MCP
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português · Русский · العربية · हिन्दी · Bahasa Indonesia · Tiếng Việt · ไทย · Italiano · Türkçe
⚠️ For learning and teaching purposes only. Do not use this project for any illegal activity, unauthorized cracking, copyright infringement, or bypassing third-party protections. You must follow local laws and the target app’s terms. You are solely responsible for misuse.
Android unpacking + smali analysis MCP Server. Use from Cursor / Codex / Claude Code to manage devices, detect packers, unpack (static / BlackDex / Frida), convert dex→smali, and search API strings.
Repo: https://github.com/TimeCyber/DexAndroid · npm: android-decompile-mcp
Quick start (npm + MCP)
1. No clone — download & run from npm:
npx -y android-decompile-mcp
2. Load into Cursor / Claude / Codex — paste into .cursor/mcp.json (or global MCP config):
{
"mcpServers": {
"android-decompile-mcp": {
"command": "npx",
"args": ["-y", "android-decompile-mcp"],
"env": {
"ADB_PATH": "adb",
"DEX_OUT_DIR": "./unpack-output"
}
}
}
}
Save → restart the client / reload MCP. Done.
Optional global install: npm i -g android-decompile-mcp then run android-decompile-mcp.
Features
| Capability | MCP tool | Notes |
|---|---|---|
| Devices | list_devices |
Connected ADB devices |
| Packages | list_packages |
Optional keyword filter |
| Packer detect | detect_packer |
360 / Tencent / Bangcle / ijiami / Alibaba, etc. |
| Pull APK | pull_apk |
Installed app (+ splits) |
| Static unpack | static_unpack |
Extract classes*.dex |
| No-Root unpack | blackdex_prepare / blackdex_pull |
BlackDex memory dump |
| Root unpack | frida_prepare / frida_unpack |
frida-server + frida-dexdump |
| Decompile | dex_to_smali |
baksmali → smali |
| Analyze | smali_list_classes / smali_read_class / smali_search |
List / read / regex |
| Entry locate | find_app_entry |
MAIN/LAUNCHER + smali onCreate (read-only) |
| Decode / rebuild | apk_decode / apk_repack |
apktool decode + rebuild/sign |
Unpacking methods
| Method | Root? | Use when |
|---|---|---|
| Static | No | Unpacked apps or shell/resources only |
| BlackDex | No | Most protected apps |
| Frida | Yes | Strong packers / fuller dumps |
Requirements
- Windows / macOS / Linux (docs use Windows examples)
- Node.js ≥ 18
- ADB on PATH, or set
ADB_PATH - Java 8+ (for baksmali via
dex_to_smali) - Optional: BlackDex; rooted device +
frida-server;pip install frida-tools frida-dexdump
Place baksmali fat jar / frida-server / BlackDex under local tools/ (large binaries are gitignored).
Local development build
git clone https://github.com/TimeCyber/DexAndroid.git
cd DexAndroid
npm install
npm run build
npm start
Environment variables
| Variable | Meaning | Default |
|---|---|---|
ADB_PATH |
adb executable | adb |
DEX_OUT_DIR |
Default output dir | <cwd>/unpack-output |
BAKSMALI_JAR |
baksmali jar | auto-discover under tools/ |
Typical workflows
1. Static unpack (fastest)
list_devicesor prepare localapkPath.detect_packer.static_unpack→classes*.dex.dex_to_smali→ smali folder.smali_search/smali_read_class.
Note: Protected apps often yield only the shell via static unpack—use BlackDex / Frida for business code.
2. No-Root (BlackDex)
list_devices.blackdex_preparewithblackdexApkPath.- Unpack the target app in BlackDex UI.
blackdex_pullwithtargetPkg.dex_to_smalithensmali_*.
3. Root (Frida)
- Rooted device (e.g. Magisk),
adbready. frida_prepareto push/starttools/frida-server.- Matching
frida/frida-dexdumplocally (prefer 16.x). frida_unpackwithpkg, preferspawn: true,deepSearch: true.dex_to_smalion output, then analyze.
If Frida 17 attach fails, align tools to 16.x; some devices need temporary setenforce 0.
4. smali analysis examples
smali_list_classes smaliDir=.../smali keyword=login
smali_search smaliDir=.../smali pattern=https?://|/api/|publicClient/
smali_read_class smaliDir=.../smali className=com.example.api.ApiService
Layout
DexAndroid/
├── src/ # MCP server (TypeScript)
│ ├── index.ts
│ ├── adb.ts
│ ├── detect.ts
│ ├── smali.ts
│ └── unpack/
├── dist/
├── examples/ # Damai / Huaxi sample smali.zip + docs
├── skills/ # Canonical agent skills (edit here, then sync)
├── .cursor/skills/ # Cursor copy
├── .agents/skills/ # Codex copy
├── .claude/skills/ # Claude Code copy
├── tools/ # baksmali / frida-server / BlackDex (local)
├── unpack-output/ # local dumps (gitignored)
├── package.json
└── README.md
Agent skills (Cursor / Codex / Claude Code)
After unpacking, use android-api-smali-analysis so the agent recovers headers, body, encrypt/decrypt methods, and keys (smali / .so / server-delivered), not path-only notes.
| Client | Skill path |
|---|---|
| Canonical | skills/android-api-smali-analysis/SKILL.md |
| Cursor | .cursor/skills/android-api-smali-analysis/ |
| Codex | .agents/skills/android-api-smali-analysis/ |
| Claude Code | .claude/skills/android-api-smali-analysis/ (/android-api-smali-analysis) |
Edit the canonical file, then sync copies:
node tools/sync-skills.mjs
See skills/README.md.
Decompile examples
See examples/ (smali shipped as zip):
| Sample | Path | Contents |
|---|---|---|
| Damai | examples/damai/ |
Frida smali.zip + API docs |
| Huaxi Maternity | examples/huaxi/ |
Static smali.zip (info.cd120.two) |
After unzip, run smali_list_classes / smali_search / smali_read_class.
MCP tool cheatsheet
| Tool | Params |
|---|---|
detect_packer |
apkPath or pkg, optional serial |
pull_apk |
pkg, optional outDir / serial |
static_unpack |
apkPath or pkg, optional outDir |
blackdex_prepare |
blackdexApkPath, optional serial |
blackdex_pull |
targetPkg, optional outDir / serial |
frida_prepare |
optional serial / serverLocalPath |
frida_unpack |
pkg, optional spawn / deepSearch / outDir |
dex_to_smali |
dexInput, optional outDir |
smali_list_classes |
smaliDir, optional keyword |
smali_read_class |
smaliDir, className |
smali_search |
smaliDir, pattern, optional flags / maxResults |
find_app_entry |
projectDir / manifestPath / apkPath, optional smaliDir(只读定位入口) |
apk_decode |
apkPath, optional outDir(apktool 解码) |
apk_repack |
projectDir, optional outApk / keystore 参数(重建并签名) |
smali_patch |
mode + smaliPath/projectDir;调用方 content 或 insert_verify_log |
FAQ
Q: Empty list_devices?
Check USB debugging, adb devices, pass serial if multiple.
Q: No business classes after static unpack?
Likely packed—use BlackDex or Frida.
Q: dex_to_smali failed?
Install Java; put baksmali jar in tools/ or set BAKSMALI_JAR.
Q: Frida jailed / version mismatch?
Keep frida-server and host frida major versions aligned; try 16.x.
Q: Where is output?
Default unpack-output/ (or DEX_OUT_DIR). Do not commit dumps.
Legal & disclaimer
This project is only for learning, teaching, and authorized security research. It is strictly forbidden to use it for any criminal or illegal activity, including unauthorized access, cracking, piracy, attacking systems, or IP infringement. Authors and contributors are not liable for misuse. By using this software you agree to these terms.
⚠️ For learning and teaching purposes only. Do not use this project for any illegal activity, unauthorized cracking, copyright infringement, or bypassing third-party protections. You must follow local laws and the target app’s terms. You are solely responsible for misuse.
License
MIT — see LICENSE.
Pertanyaan tentang DexAndroid MCP
Tool apa yang disediakan DexAndroid MCP?
Server ini menyediakan 15 tool, termasuk detect_packer, pull_apk, static_unpack, blackdex_prepare, blackdex_pull.
Apa yang harus saya lakukan jika list_devices mengembalikan hasil kosong?
Periksa pengaturan USB debugging Anda dan jalankan 'adb devices'. Jika Anda menghubungkan beberapa perangkat, masukkan nomor serial spesifiknya.
Mengapa tidak ada business class setelah static unpack?
Aplikasi tersebut kemungkinan dilindungi oleh packer; Anda sebaiknya menggunakan BlackDex atau Frida sebagai gantinya.
Bagaimana cara memperbaiki kegagalan dex_to_smali?
Pastikan Java sudah terinstal dan letakkan baksmali jar di direktori tools/ atau tentukan path menggunakan environment variable BAKSMALI_JAR.
Di mana file hasil unpack disimpan?
File disimpan ke direktori 'unpack-output/' secara default, atau direktori yang ditentukan oleh environment variable DEX_OUT_DIR.