English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português · Русский · العربية · हिन्दी · Bahasa Indonesia · Tiếng Việt · ไทย · Italiano · Türkçe
⚠️ 학습 및 교육 목적으로만 사용하세요. 불법 행위, 무단 크래킹, 저작권 침해, 제3자 보호 우회에 사용하지 마십시오. 현지 법령과 대상 앱 약관을 준수해야 하며, 오남용 책임은 사용자에게 있습니다.
안드로이드 언패킹 + smali 분석 MCP Server. Cursor / Claude 등에서 기기 관리, 보호(패커) 탐지, 정적/비루팅/루팅 언패킹, 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 (문서는 Windows 기준)
- Node.js ≥ 18
- ADB (PATH 또는
ADB_PATH) - Java 8+ (baksmali)
- 선택: BlackDex, 루팅 +
frida-server,pip install frida-tools frida-dexdump
tools/에 baksmali / frida-server / BlackDex 배치 (대용량은 gitignore).
git clone https://github.com/TimeCyber/DexAndroid.git
cd DexAndroid
npm install
npm run buildMCP 시작 (stdio):
npm start
# node dist/index.js개발 모드:
npm run dev.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/ |
list_devices또는 로컬apkPath.detect_packer.static_unpack→classes*.dex.dex_to_smali.smali_search/smali_read_class.
참고: 보호 앱의 정적 dex는 쉘만일 수 있습니다. 비즈니스 코드는 BlackDex / Frida.
list_devices.blackdex_prepare(blackdexApkPath).- BlackDex UI에서 대상 앱 덤프.
blackdex_pull(targetPkg).dex_to_smali후smali_*.
- 루팅된 기기,
adb사용 가능. frida_prepare로frida-server실행.- 호스트
frida/frida-dexdump버전 맞춤 (권장 16.x). frida_unpack(spawn: true,deepSearch: true권장).dex_to_smali후 분석.
Frida 17 실패 시 16.x로 맞추세요. 일부 기기는 임시 setenforce 0.
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_* 실행.
| 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 |
Q: list_devices가 비어 있음?
USB 디버깅/adb devices 확인, 다중 기기는 serial.
Q: 정적 후 비즈니스 클래스 없음?
패커 가능성 → BlackDex/Frida.
Q: dex_to_smali 실패?
Java와 baksmali jar/BAKSMALI_JAR 확인.
Q: Frida jailed / 버전 불일치?
frida-server와 호스트 frida 메이저 버전 일치.
Q: 출력 위치?
기본 unpack-output/. Git에 커밋하지 마세요.
본 프로젝트는 학습·교육 및 승인된 보안 연구 전용입니다. 무단 접근, 크래킹, 불법 복제, 시스템 공격, 지식재산권 침해 등 일체의 불법 행위에 사용하는 것을 엄격히 금지합니다. 오남용에 대해 저자와 기여자는 책임지지 않습니다. 사용 시 본 조건에 동의한 것으로 간주합니다.
⚠️ 학습 및 교육 목적으로만 사용하세요. 불법 행위, 무단 크래킹, 저작권 침해, 제3자 보호 우회에 사용하지 마십시오. 현지 법령과 대상 앱 약관을 준수해야 하며, 오남용 책임은 사용자에게 있습니다.
MIT — LICENSE 참고.