Fast, accurate Android decompilation for humans and AI agents.
Explore APK and DEX bytecode as readable Java or Kotlin, then hand the same live context to your coding agent.
DexDec is a native reverse-engineering workbench for large, complex, and heavily obfuscated Android applications. It opens projects quickly, produces higher-fidelity source than previous-generation Java decompilers, and keeps making progress on APKs that cause older tools to stop.
Use it directly as a focused desktop application, or connect an AI agent through MCP. The agent can understand what is open in DexDec, inspect only the code it needs, follow exact references, read packaged resources, and reveal its findings back in the desktop UI.
|
Start exploring large multi-DEX applications immediately. DexDec generates source only when it is needed, keeping project opening, search, and navigation responsive. |
Recover code that is closer to what a developer would write, with fewer duplicated conditions, broken exception blocks, artificial temporary variables, and misleading types than traditional Java decompilers. |
|
One difficult class should not make an entire application unusable. DexDec isolates troublesome code and continues recovering the rest of the project instead of turning one failure into an all-or-nothing result. |
Choose the output that fits the task and switch languages without reopening the archive. Use familiar Java for compatibility or Kotlin for modern Android work. |
|
Browse classes, packages, |
Quick-open classes and members, jump through declarations and usages, inspect references, reveal symbols in the Explorer, and move through navigation history. |
|
Use preview and pinned tabs, split editor groups, code folding, outlines, context menus, configurable keymaps, and light or dark editor themes. |
Rename classes, fields, methods, and local symbols without modifying the input. Undo or redo edits and persist project state to a DexDB file when ready. |
|
Connect Codex, Claude Code, Cursor, Visual Studio Code, or Grok from Settings. Agents receive live project and editor context instead of relying on screenshots, copied snippets, or guessed class names. |
Search generated source with case-sensitive, whole-word, or regular-expression matching. Results stream in as classes are analyzed and jump to the exact source position. |
DexDec exposes the current project and editor context through MCP. Compatible agents can search symbols and resources, decompile code on demand, follow references, and navigate results in the desktop app.
- Open Settings > MCP.
- Select an installed client and choose Configure.
- For another MCP client, copy its generated configuration from the same page.
Configured clients can be disconnected from Settings > MCP at any time.
Requirements:
- A current stable Rust toolchain
- Node.js and npm
- Platform prerequisites for Tauri 2
Run the development application:
cd dexdec-gui
npm ci
npm run desktopBuild a production macOS disk image:
cd dexdec-gui
npm ci
npm run tauri -- build --bundles dmgThe DMG is written to target/release/bundle/dmg/.
Build the command-line tool:
cargo build --release -p dexdecCommon commands:
dexdec inspect app.apk
dexdec decompile app.apk --class com.example.MainActivity --language java
dexdec decompile app.apk --output-dir decompiled
dexdec resources read app.apk AndroidManifest.xmlRun dexdec --help or dexdec <command> --help for all options.
The high-level API can serve repeated and interactive decompilation requests without reopening the input each time:
use dexdec::{DecompileOptions, Decompiler, SourceLanguage};
let options = DecompileOptions::default()
.with_language(SourceLanguage::Java);
let mut decompiler = Decompiler::open("classes.dex")?
.with_options(options);
let unit = decompiler.class("Lcom/example/App;")?;
println!("{}", unit.source);Disable default CLI dependencies when embedding only the library:
[dependencies]
dexdec = { path = "../dexdec", default-features = false }DexDec is available under the Apache License 2.0.
