DexAndroid MCP server
2026년 10월 18일 커밋APK 언패킹, smali 디컴파일, 패커 탐지를 포함한 Android 리버스 엔지니어링 기능을 AI 클라이언트에 제공합니다.
다른 이름 TimeCyber/DexAndroid
- 스타
- 2
- Tools
- 15
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 18일
- 라이선스
- MIT
DexAndroid MCP란?
DexAndroid은(는) MCP server입니다. APK 언패킹, smali 디컴파일, 패커 탐지를 포함한 Android 리버스 엔지니어링 기능을 AI 클라이언트에 제공합니다. 15개 도구를 제공합니다. 예: detect_packer, pull_apk, static_unpack.
프로젝트 README에서 생성된 요약
DexAndroid MCP server 정보
DexAndroid는 Cursor, Claude Code 또는 Codex와 같은 AI 클라이언트 내에서 Android 리버스 엔지니어링 및 smali 분석을 수행할 수 있게 합니다. 이 MCP server는 보안 연구원과 개발자가 연결된 ADB 기기를 관리하고, Tencent 또는 Alibaba와 같은 다양한 패커를 탐지하며, 여러 방법론을 사용하여 애플리케이션을 언패킹할 수 있는 도구 모음을 제공합니다.
사용자는 단순한 파일을 위한 정적 언패킹, 루팅되지 않은 기기에서 메모리 덤프를 위한 BlackDex, 또는 루팅된 기기에서 심층 언패킹을 위한 Frida 중에서 선택할 수 있습니다. 이 서버는 baksmali를 사용하여 dex 파일을 smali 형식으로 변환하여 세밀한 코드 검사를 가능하게 합니다. 디컴파일이 완료되면 시스템은 API 문자열 검색, 클래스 목록 확인, 특정 smali 파일 읽기 등을 지원하여 애플리케이션 로직을 파악할 수 있도록 돕습니다.
설정에는 Node.js, Java 8 이상, 그리고 시스템 경로에 등록된 ADB가 필요합니다. 기본 기능은 표준 설정에서도 작동하지만, 고급 언패킹을 위해서는 frida-server 또는 BlackDex와 같은 로컬 바이너리를 tools 디렉토리에 배치해야 합니다. 모든 언패킹된 파일은 DEX_OUT_DIR 환경 변수로 정의된 로컬 디렉토리에 저장됩니다.
활용 사례
- 1애플리케이션 패커 탐지APK가 Bangcle 또는 ijiami와 같은 특정 보안 제공업체에 의해 보호되고 있는지 식별합니다.
- 2보호된 애플리케이션 언패킹정적 방법이 실패할 경우 메모리 덤프를 사용하여 보호된 앱에서 비즈니스 로직을 추출합니다.
- 3API 엔드포인트 검색정규식 패턴을 사용하여 smali 코드 내에서 네트워크 URL 또는 민감한 API 문자열을 찾습니다.
- 4애플리케이션 진입점 위치 파악smali 디렉토리 내에서 메인 런처 액티비티와 onCreate 메서드를 찾습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
DexAndroid MCP 도구 15
README에서 감지됨detect_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 | — |
도구 15개 모두 보기도구 수 줄이기
apk_decodeapk_repacksmali_patch
| apk_decode | — | |
| apk_repack | — | |
| smali_patch | — |
구성
ADB_PATHDEX_OUT_DIR
| 이름 | 설명 | 유형 |
|---|---|---|
| ADB_PATH | — | |
| DEX_OUT_DIR | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식
- 소스 저장소 연결 및 접근 가능timecyber/dexandroid is public and reachablegithub.com/timecyber/dexandroid ↗통과
- 패키지가 이 저장소를 소스로 지정검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-18github.com/timecyber/dexandroid ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지와 의존성에 심각한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음15 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 endpoint가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기DexAndroid---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.
DexAndroid MCP 질문
DexAndroid MCP는 어떤 도구를 제공하나요?
15개 도구를 제공합니다. 예: detect_packer, pull_apk, static_unpack, blackdex_prepare, blackdex_pull.
list_devices 결과가 비어 있으면 어떻게 해야 하나요?
USB 디버깅 설정을 확인하고 'adb devices'를 실행하십시오. 여러 기기가 연결된 경우 특정 시리얼 번호를 전달하십시오.
정적 언패킹 후 비즈니스 클래스가 나타나지 않는 이유는 무엇인가요?
애플리케이션이 패커로 보호되어 있을 가능성이 높습니다. 대신 BlackDex 또는 Frida를 사용해야 합니다.
dex_to_smali 실패를 어떻게 해결하나요?
Java가 설치되어 있는지 확인하고 baksmali jar 파일을 tools/ 디렉토리에 배치하거나 BAKSMALI_JAR 환경 변수를 사용하여 경로를 지정하십시오.
언패킹된 파일은 어디에 저장되나요?
파일은 기본적으로 'unpack-output/' 디렉토리에 저장되거나 DEX_OUT_DIR 환경 변수로 지정된 디렉토리에 저장됩니다.