Skip to content

Latest commit

 

History

History
226 lines (161 loc) · 7.07 KB

README.it.md

File metadata and controls

226 lines (161 loc) · 7.07 KB

DexAndroid

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português · Русский · العربية · हिन्दी · Bahasa Indonesia · Tiếng Việt · ไทย · Italiano · Türkçe

⚠️ Solo per apprendimento e didattica. Non usare per attività illegali, cracking non autorizzato, violazione di copyright o elusione di protezioni di terzi. Rispettare le leggi locali e i termini dell’app. L’abuso è responsabilità dell’utente.

MCP Server per unpacking Android + analisi smali. Da Cursor / Claude: dispositivi, rilevamento packer, unpack statico / BlackDex / Frida, dex→smali, ricerca stringhe API.

Repo: https://github.com/TimeCyber/DexAndroid


Funzionalità

Capacità Tool MCP Note
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

Metodi di unpack

Metodo Root? Quando
Static No Unpacked apps or shell/resources only
BlackDex No Most protected apps
Frida Yes Strong packers / fuller dumps

Requisiti

  • 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).


Installazione e build

git clone https://github.com/TimeCyber/DexAndroid.git
cd DexAndroid
npm install
npm run build

Avvia MCP (stdio):

npm start
# node dist/index.js

Modalità dev:

npm run dev

Setup Cursor (MCP)

Aggiungi a .cursor/mcp.json (modifica i path):

{
  "mcpServers": {
    "dex-android-unpack": {
      "command": "node",
      "args": ["E:/DexAndroid/dist/index.js"],
      "env": {
        "ADB_PATH": "E:/Android/Sdk/platform-tools/adb.exe",
        "DEX_OUT_DIR": "E:/DexAndroid/unpack-output"
      }
    }
  }
}

Riavvia Cursor / ricarica MCP.


Variabili d’ambiente

Variabile Significato Default
ADB_PATH adb executable adb
DEX_OUT_DIR Default output dir <cwd>/unpack-output
BAKSMALI_JAR baksmali jar auto-discover under tools/

Flussi tipici

1. Unpack statico (più veloce)

  1. list_devices or prepare local apkPath.
  2. detect_packer.
  3. static_unpack → classes*.dex.
  4. dex_to_smali → smali folder.
  5. smali_search / smali_read_class.

Note: Protected apps often yield only the shell via static unpack—use BlackDex / Frida for business code.

2. Senza Root (BlackDex)

  1. list_devices.
  2. blackdex_prepare with blackdexApkPath.
  3. Unpack the target app in BlackDex UI.
  4. blackdex_pull with targetPkg.
  5. dex_to_smali then smali_*.

3. Con Root (Frida)

  1. Rooted device (e.g. Magisk), adb ready.
  2. frida_prepare to push/start tools/frida-server.
  3. Matching frida / frida-dexdump locally (prefer 16.x).
  4. frida_unpack with pkg, prefer spawn: true, deepSearch: true.
  5. dex_to_smali on output, then analyze.

If Frida 17 attach fails, align tools to 16.x; some devices need temporary setenforce 0.

4. Esempi smali

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

Struttura

DexAndroid/
├── src/                 # MCP server (TypeScript)
│   ├── index.ts
│   ├── adb.ts
│   ├── detect.ts
│   ├── smali.ts
│   └── unpack/
├── dist/
├── examples/            # Damai / Huaxi sample smali.zip + docs
├── tools/               # baksmali / frida-server / BlackDex (local)
├── unpack-output/       # local dumps (gitignored)
├── package.json
└── README.md

Esempi di decompilazione

Vedi examples/ (smali in zip):

Esempio Percorso Contenuto
Damai examples/damai/ Frida smali.zip + API docs
Huaxi Maternity examples/huaxi/ Static smali.zip (info.cd120.two)

Dopo l’estrazione usa smali_*.


Cheatsheet MCP

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

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.


Avviso legale

Questo progetto è solo per apprendimento, didattica e ricerca di sicurezza autorizzata. È vietato usarlo per reati o illegalità (accesso non autorizzato, cracking, pirateria, attacchi, violazione IP). Autori e contributor non rispondono degli abusi. L’uso implica accettazione.

⚠️ Solo per apprendimento e didattica. Non usare per attività illegali, cracking non autorizzato, violazione di copyright o elusione di protezioni di terzi. Rispettare le leggi locali e i termini dell’app. L’abuso è responsabilità dell’utente.


License

MIT — see LICENSE.