DECX (Decompiler + X) is a smart code analysis platform built on the JADX decompiler, designed specifically for AI-assisted code analysis. The platform provides powerful Java code analysis capabilities to AI assistants through an HTTP API, MCP (Model Context Protocol), a standalone CLI, and workflow skills.
- Java: JDK 17+
- Node.js: 22.5+ for the CLI
- JADX: v1.5.2+ with plugin support if you use the GUI plugin
For AI-assisted CLI work, install the CLI and server JAR, then download the DECX skills for your agent:
npm install -g @jygzyc/decx-cli
decx self install
decx self skills install --client opencode --client codexCLI versions older than v4.0.1 started npm.cmd directly on Windows, which can return EINVAL with some Node.js versions. An affected CLI cannot bootstrap this fix through self update; update it once from PowerShell or CMD instead:
npm.cmd install -g @jygzyc/decx-cli@latestReopen the terminal and run decx --version to confirm v4.0.1 or newer before using decx self update again. If an older version is still selected, run where.exe decx to check for multiple DECX CLI installations on PATH.
Skills are downloaded to ~/.decx/skills (or $DECX_HOME/skills) and linked into the selected client directories:
| Agent | Link target |
|---|---|
| Claude Code | ~/.claude/skills |
| Opencode | ~/.agents/skills |
| Codex | ~/.codex/skills |
| Common agent setup | ~/.agents/skills |
The skills/ directory contains:
| Skill | Use |
|---|---|
decx-cli |
DECX CLI usage, general code navigation, source lookup, xrefs, manifest/resource inspection, and workflow routing |
decx-vulnhunt |
Android vulnerability hunting (App + Framework tracks): exported components, WebView/Provider/Service/Receiver, Binder/system services, AIDL |
decx-poc |
Build a focused Android PoC app and optional helper server from one finalized finding writeup |
decx-report |
Generate HTML/Markdown reports from finalized finding writeups |
Install the plugin from the JADX GUI plugin manager, or install a plugin JAR manually:
jadx plugins --install-jar <path-to-jadx_decx_plugin.jar>After installation, open an APK/JAR in JADX and enable DECX. The plugin exposes the DECX HTTP API and MCP tools for the currently opened JADX project.
For agent-driven analysis, use the CLI to create a session and let the installed skills drive the detailed workflow:
decx process open target.apk --name target
decx code classes --limit 50
decx code search-global "WebView" --limit 20
decx android exported-components
decx android deep-links
decx process close target
decx process close --port 25419Typical skill sequence:
decx-clifor exploration, evidence gathering, and routingdecx-vulnhuntfor focused vulnerability hunting (App or Framework track)decx-reportfor generating reports from finalized finding writeupsdecx-pocfor turning one finalized finding writeup into a buildable PoC
Vulnerability hunting keeps notes and finalized finding writeups in the working directory. Downstream report and PoC skills consume those finding writeups.
Useful command groups:
| Need | Commands |
|---|---|
| Session lifecycle | decx process open <file>, decx process list, decx process check, decx process close [name] [--port <port>] |
| Code analysis | decx code classes, class-source, method-source, method-context, search-global, search-class, xref-method, xref-class, xref-field, implementations, subclasses |
| APK analysis | decx android manifest, launcher-activity, application, exported-components, deep-links, dynamic-receivers, aidl-interfaces, resources, resource-file, strings |
| Framework analysis | decx android framework collect, process [oem], run, open [jar], plus framework-service-implementation <interface> |
| Live device helpers | decx android device system-services, decx android device permission-info <permission> |
| CLI/server/skills management | decx self install, decx self skills install, decx self update |
Notes:
- Session-backed
codeandandroidcommands support--page <n>and can target a session with-s, --session <name>or a port with--port <port>. decx code class-sourcesupports--limit <n>to return at most N source lines.decx process open <file>passes standardjadx-cliflags through, enables--show-bad-codeand--no-importsby default, and strips--deobfbecause DECX analysis requires original names.decx android resourcessupports file-name filtering with--includeand--no-regex.decx android device system-servicesandpermission-infoare adb-backed commands. They use--serial/--adb-path, not--port <port>.decx android framework runcollects from the connected device, processes, packs, and opens the final framework JAR by default;process [oem]is for local framework dumps and can resolve OEM from.artifact.jsonor a connected device when omitted.
Use the plugin when you want the AI assistant to work against the project already opened in JADX GUI. The MCP server is an in-process Kotlin SDK Streamable HTTP endpoint; it is disabled by default and can be auto-started with the plugin:
- Open the target APK/JAR in JADX.
- Enable the DECX plugin and confirm the server is available at
http://127.0.0.1:25419. - (Optional) Toggle Auto-start MCP with DECX in the DECX panel to start the MCP server at
http://127.0.0.1:25420/mcp(HTTP port + 1) whenever DECX starts. - Connect your MCP client to DECX and call
health_check(). - Use MCP tools for code search/source/xrefs, Android manifest/resources/components, framework service lookup, and JADX GUI selections.
All MCP tools support pagination with page where the returned content is large.
Plugin options (stored in ~/.decx/config.json):
decx.port: DECX HTTP server port, default25419decx.mcpAutoStart:true/false, defaultfalse— auto-start the MCP server with DECXdecx.cache:diskormemory, defaultdisk
DECX returns the same structured error format from plugin and standalone server modes:
| Code | Description | HTTP Status |
|---|---|---|
| INTERNAL_ERROR | Internal server error | 500 |
| SERVICE_ERROR | Service error | 503 |
| REQUEST_TIMEOUT | Request timed out | 504 |
| HEALTH_CHECK_FAILED | Health check failed | 500 |
| UNKNOWN_ENDPOINT | Unknown endpoint | 404 |
| INVALID_PARAMETER | Invalid parameter | 400 |
| METHOD_NOT_FOUND | Method not found | 404 |
| CLASS_NOT_FOUND | Class not found | 404 |
| RESOURCE_NOT_FOUND | Resource not found | 404 |
| MANIFEST_NOT_FOUND | AndroidManifest not found | 404 |
| FIELD_NOT_FOUND | Field not found | 404 |
| INTERFACE_NOT_FOUND | Interface not found | 404 |
| SERVICE_IMPL_NOT_FOUND | Service implementation not found | 404 |
| NO_STRINGS_FOUND | No strings.xml resource found | 404 |
| NO_MAIN_ACTIVITY | No MAIN/LAUNCHER Activity found | 404 |
| NO_APPLICATION | Application class not found | 404 |
| EMPTY_SEARCH_KEY | Search key cannot be empty | 400 |
| DECOMPILATION_SKIPPED | Decompilation skipped (size guard) | 503 |
| NOT_GUI_MODE | Not in GUI mode | 503 |
Error Response Format:
{
"ok": false,
"error": {
"code": "CLASS_NOT_FOUND",
"message": "Class not found: com.example.Foo"
}
}| Path | Role |
|---|---|
decx/decx-core/ |
Shared Kotlin API, HTTP + MCP transport, services, models, and utilities |
decx/decx-plugin/ |
JADX GUI plugin: lifecycle, UI, and in-process MCP server wiring |
decx/decx-server/ |
Standalone headless server entry point and fat JAR packaging |
decx-cli/ |
TypeScript CLI for sessions, code analysis, Android helpers, framework processing, and self-management |
skills/ |
AI agent skills for DECX analysis, app/framework vulnerability hunting, reporting, and PoC construction |
Core request path:
CLI / MCP / HTTP
-> DecxServer / RouteHandler
-> DecxApi / DecxApiImpl
-> service/* and utils/*
cd decx
./gradlew dist
cd ../decx-cli
npm install
npm run build
npm test- Fork this repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a Pull Request
This project is licensed under GNU License - see the LICENSE file for details.
- skylot/jadx - The foundation of this project, a powerful JADX decompiler with plugin support
- zinja-coder/jadx-ai-mcp - Provided many ideas and inspiration, excellent practices for JADX MCP integration
- Kotlin MCP SDK: In-process MCP server implementation
- Ktor: Streamable HTTP transport for the MCP server
- Javalin: Lightweight web framework for the HTTP API