Skip to content

Latest commit

 

History

History
226 lines (161 loc) · 8.2 KB

README.ru.md

File metadata and controls

226 lines (161 loc) · 8.2 KB

DexAndroid

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

⚠️ Только для обучения и преподавания. Запрещено использовать для преступлений, несанкционированного взлома, нарушения авторских прав или обхода чужих защит. Соблюдайте законы и условия приложения. Ответственность за злоупотребления — на пользователе.

MCP Server для распаковки Android и анализа smali. В Cursor / Claude: устройства, детекция пакеров, static / BlackDex / Frida, dex→smali, поиск API-строк.

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


Возможности

Возможность MCP-инструмент Примечание
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

Методы распаковки

Метод Root? Когда
Static No Unpacked apps or shell/resources only
BlackDex No Most protected apps
Frida Yes Strong packers / fuller dumps

Требования

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


Установка и сборка

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

Запуск MCP (stdio):

npm start
# node dist/index.js

Режим разработки:

npm run dev

Подключение Cursor (MCP)

Добавьте в .cursor/mcp.json (измените пути):

{
  "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"
      }
    }
  }
}

Перезапустите Cursor / перезагрузите MCP.


Переменные окружения

Переменная Смысл По умолчанию
ADB_PATH adb executable adb
DEX_OUT_DIR Default output dir <cwd>/unpack-output
BAKSMALI_JAR baksmali jar auto-discover under tools/

Типовые сценарии

1. Статическая распаковка (быстрее всего)

  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. Без 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. С 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. Примеры 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

Структура

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

Примеры декомпиляции

См. examples/ (smali в zip):

Пример Путь Содержимое
Damai examples/damai/ Frida smali.zip + API docs
Huaxi Maternity examples/huaxi/ Static smali.zip (info.cd120.two)

После распаковки используйте smali_*.


Шпаргалка 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.


Правовая оговорка

Проект только для обучения, преподавания и уполномоченных исследований безопасности. Запрещено использовать для преступлений и незаконных действий (несанкционированный доступ, взлом, пиратство, атаки, нарушение ИП). Авторы не несут ответственности за злоупотребления. Использование означает согласие.

⚠️ Только для обучения и преподавания. Запрещено использовать для преступлений, несанкционированного взлома, нарушения авторских прав или обхода чужих защит. Соблюдайте законы и условия приложения. Ответственность за злоупотребления — на пользователе.


License

MIT — see LICENSE.