Docker-isolated static reverse engineering orchestrator
Project description
decompile
decompile is a Docker-first static reverse-engineering CLI.
Install the small host command, run decompile ./file, and the heavy tools run inside the Docker image. The host does not need Ghidra, JADX, apktool, ILSpy, or binutils installed.
Install
pip install decompile
decompile --update
Other package targets:
yay -S decompile
sudo apt install ./decompile_0.1.0_all.deb
Docker is required for the normal published workflow.
Quick Start
decompile ./crackme
decompile --no-ai ./crackme
decompile --image docker.io/admin12121/decompile:stable ./crackme
decompile --local ./crackme
Default output goes to:
./crackme.ghidra-out/
You can choose the output directory:
decompile ./crackme ./out
What It Does
decompile detects the input format, chooses the matching static toolchain, and writes useful reverse-engineering output into one directory.
Supported routes:
| Input | Tooling | Output |
|---|---|---|
| ELF, PE, EXE, DLL, SYS, Mach-O | Ghidra headless, objdump, optional AI cleanup | ASM, pseudocode C, enhanced C, summary |
| APK, AAB, DEX | JADX, apktool | Java/Kotlin source, resources, summary |
JAR, WAR, EAR, .class |
JADX | Java source, summary |
| .NET EXE/DLL | ilspycmd | C# source, summary |
IPA, .app bundle |
IPA/app extraction plus native analysis | Native output and app metadata |
Native binary output:
<name>.disassembly.asm
<name>.pseudocode.c
<name>.enhanced.c
<name>.summary.txt
Android, Java, and .NET output usually includes:
source/
resources/
<name>.summary.txt
Docker Model
Published installs use this image by default:
docker.io/admin12121/decompile:stable
The image is pulled only when it is missing locally. Normal runs reuse the local image and do not check the registry.
Update manually:
decompile --update
Use a custom image:
decompile --image ghcr.io/you/decompile:dev ./file
Run host tools directly:
decompile --local ./file
Inside Docker:
- input is mounted read-only
- output is mounted read-write
- the container runs as your current UID/GID
- temporary projects and scratch files are removed
--no-aidisables network access for the analysis container
AI Enhancement
For native binaries, enhanced.c can be generated from pseudocode, disassembly, objdump context, and summary data.
Use this when you want cleaner function names, variables, and reconstructed C-like output:
decompile ./file
Disable it for malware, private samples, offline work, or reproducible local-only output:
decompile --no-ai ./file
When AI is enabled, analysis context may be sent to GitHub Copilot through gh. Pass authentication with GH_TOKEN, GITHUB_TOKEN, or your local GitHub CLI config.
Options
decompile <file-or-bundle> [output-dir]
decompile --no-ai <file-or-bundle> [output-dir]
decompile --update [--image <image>]
decompile --image <image> <file-or-bundle> [output-dir]
decompile --local <file-or-bundle> [output-dir]
decompile --type <native|apk|aab|dex|jar|class|dotnet|ipa|app-bundle> <file> [output-dir]
Useful environment variables:
DECOMPILE_DOCKER_IMAGE override the Docker image
DECOMPILE_USE_DOCKER=0 run local host tools
DECOMPILE_NO_AI=1 skip AI enhancement
DECOMPILE_KEEP_DEBUG=1 keep objdump and prompt/debug files
GHIDRA_TIMEOUT=120 per-function decompile timeout
Limits
This is static analysis only. It does not run the target, debug it, emulate it, unpack it, or bypass runtime protections.
Packed binaries, heavy obfuscation, anti-disassembly tricks, encrypted IPA files, and protected mobile apps can still produce weak or incomplete output.
Docker isolation reduces host writes, but it is not a malware sandbox. Do not execute unknown samples with this tool.
Development
Build the Docker image:
docker build -t decompile:latest .
Use the local image:
decompile --image decompile:latest ./sample
Build Python release artifacts:
python3 -m build
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file decompile-0.1.0.tar.gz.
File metadata
- Download URL: decompile-0.1.0.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66cbe57d1bf5d22c975f4c39aed4b8b7e4cead9315bfef41727351ee7f8f685c
|
|
| MD5 |
c1856554e177b4ba9d88f76553484b66
|
|
| BLAKE2b-256 |
08f8daaea7a22bdc622f4a8e203476a5509c061a0628869b3bdf8407335c6ae6
|
File details
Details for the file decompile-0.1.0-py3-none-any.whl.
File metadata
- Download URL: decompile-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51af59176252d37175fac5f078d19336c08475e083edf23165e4ce1505aaed56
|
|
| MD5 |
ab8f506615afffaf6d33e62ceda43ca9
|
|
| BLAKE2b-256 |
d619b6461b1593a327f1be3f94fdd278622f3da7995b19c324d9826689312d4b
|