by 1-3-7
Static decompiler, deobfuscator, and unpacker for reverse engineering and malware analysis: Python decompiler (3.8-3.15), PyInstaller extractor, PyArmor unpacker, JavaScript deobfuscator (obfuscator.io, JS-Confuser, webpack), Android APK and Java decompiler, .NET deobfuscator, UPX unpacker, Lua, PHP, WASM, PowerShell. MCP server.
# Add to your Claude Code skills
git clone https://github.com/1-3-7/disrobeGuides for using mcp servers skills like disrobe.
Last scanned: 9/27/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-09-27T09:51:03.932Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how disrobe compares with popular alternatives.
disrobe is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by 1-3-7. Static decompiler, deobfuscator, and unpacker for reverse engineering and malware analysis: Python decompiler (3.8-3.15), PyInstaller extractor, PyArmor unpacker, JavaScript deobfuscator (obfuscator.io, JS-Confuser, webpack), Android APK and Java decompiler, .NET deobfuscator, UPX unpacker, Lua, PHP, WASM, PowerShell. MCP server. It has 130 GitHub stars.
Yes. disrobe passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/1-3-7/disrobe" and add it to your Claude Code skills directory (see the Installation section above).
disrobe is primarily written in Rust. It is open-source under 1-3-7 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh disrobe against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Disrobe is a static decompiler, deobfuscator, and unpacker. It strips packing and obfuscation from compiled software one layer at a time and recovers the source code or the original bytes underneath.
Give disrobe auto an executable, an app package, a script, or a firmware image. It names each layer (installer, archive, packer, freezer, protector, obfuscator, bytecode), removes it with the matching recovery pass, and runs again on what that pass produced until no pass recognizes what is left. One Rust binary covers Python, JavaScript and WebAssembly, Java and Android, .NET, native PE, ELF, and Mach-O code, Go, Lua, PHP, Ruby, Erlang and Elixir, ActionScript, shell scripts and Office macros, React Native and Flutter apps, installers, and firmware. disrobe catalog lists the 170 packers, protectors, obfuscators, and bytecode families it recognizes across 15 ecosystems.
The engines are built in. Python bytecode decompiles without a Python installation, JavaScript recovery needs no Node.js, and the Java, Android, and .NET decompilers need no JVM or .NET SDK; with the default --backend auto, jvm decompile and dotnet decompile use an installed external decompiler first. Disrobe does not launch the program it analyzes unless you pass --allow-dynamic, which applies only to PyArmor v6 and v7. The safety model lists the bounded interpreters that evaluate code taken from an input and the host tools Disrobe starts.
It is built for malware analysts, reverse engineers, incident responders, CTF players, and security researchers.
License: Disrobe Source-Available License 1.1. Personal hobby projects and learning, unpaid independent security research, nonprofit education and research, and journalism are free, as the license defines them. Any use by or for a company requires a paid license.
Quick start · What it recovers · Measured results · How it works · Safety model · Documentation
Download the archive for your platform from GitHub Releases, check it against SHA256SUMS, and put disrobe (disrobe.exe on Windows) on your PATH. Then run:
disrobe identify suspect.exe # compiler, packer, and protector, with evidence
disrobe auto suspect.exe --out recovered/ # remove the layers Disrobe can recover
disrobe context --out recovered/ # what each pass recovered, and at what confidence
Recorded output of identify and the unpacking step, run on a UPX-packed Rust program committed to this repository (corpus/native/packers/upx/hello.packed.nrv2b.exe):
$ disrobe identify hello.packed.exe
format: pe64 (64-bit) subsystem=windows-cui
packer UPX (96%) -> disrobe native unpack
- [section UPX0] UPX characteristic section
- [section UPX1] UPX characteristic section
- [section UPX2] UPX characteristic section
- [byte scan] UPX packer magic
...
$ disrobe native unpack hello.packed.exe --out recovered/hello.bin
native unpack: OK
input: hello.packed.exe
packer: upx
status: Implemented
packed_size: 53248
recovered: 116810 bytes
wrote: recovered/hello.bin
The unpacking benchmark recovers the same file and compares it with the original build: the .text section is byte-identical, 73,160 bytes with no differences (unpacking measurements).
Release archives cover Windows (x86-64, ARM64), macOS (x86-64, ARM64), and Linux (x86-64 and ARM64 with glibc, static x86-64 with musl). Each archive has a separate cosign signature bundle, and SECURITY.md explains the check. Building from source needs the Rust toolchain pinned in rust-toolchain.toml (1.96.1; the minimum supported version is 1.95) and a C toolchain for native dependencies:
git clone https://github.com/1-3-7/disrobe
cd disrobe
cargo build --locked --release -p disrobe-cli --bin disrobe
The installation guide covers feature flags and the optional external backends. Run disrobe doctor to probe 46 to 51 external tools depending on the platform and see which optional backends are installed.
Each row names the formats Disrobe reads and the protection it removes. Where disrobe catalog lists a family, the level shown is the catalog's. Families named first are recovered. Partial families are peeled as far as the input allows, and the result names what is left. Detect only families are identified, and the result states why the rest cannot be recovered, usually because a key exists only at run time. A name in bold is graded on output of the real tool, committed to this repository; the other names are graded on samples written for the tests, or are only detected. Each ecosystem links to its guide.
| Ecosystem | Formats and bytecode | Packers, protectors, and obfuscators |
|---|---|---|
| Python | CPython 3.8 to 3.15 .pyc and marshal data; PyPy 3.9 and 3.10; MicroPython .mpy; Jython; IronPython; Brython; Cython modules. Freezers: PyInstaller onefile (onedir and encrypted PYZ are read too), Nuitka (onefile, standalone, module), shiv, Briefcase, cx_Freeze, py2exe, pex, and PyOxidizer (experimental) |
PyArmor v8 and v9, SourceDefender v15 and earlier, and source obfuscators (20 schemes, counting the partial ones and both pyobfuscate.com schemes): Berserker, BlankOBF, Kramer/Specter, Manglify, ObfuXtreme, Patchwork, PlusOBF, pyminifier, pyobfuscate.com, PyObfuscator, Jawbreaker, Oxyry, Wodx, Xindex, pyc-zipper, the online obfuscator family. Partial: PyArmor v6 and v7, python-obfuscator, pyobfus, Pypacker. Detect only: PyArmor v3 to v5; SourceDefender v16, whose key exists only at run time |
| JavaScript and TypeScript | Minified and obfuscated source; bundles from webpack, Vite, Rollup (including its SystemJS format), esbuild, Parcel, Bun, Turbopack, Browserify, and Rolldown; source maps; V8 cached data (.jsc, bytenode) from Node 18, 20, 22, and 24; Node SEA, nexe, nw.js; Electron ASAR; Tauri and Wails apps (webview guide); Deno eszip |
obfuscator.io (javascript-obfuscator), JS-Confuser, aaencode, jjencode, JSFuck, Dean Edwards Packer, JSFiretruck. Partial: Jscrambler, jsobfu; JSDefender and Arxan (Digital.ai) static transforms, only with --i-have-authorization. Detect only: PACE |
| WebAssembly | .wasm to WAT, Rust, TypeScript, C, or a JSON summary; Component Model; GC types |
Partial: Jscrambler WASM, Wobfuscator, wasm-mixer; Tigress (through Emscripten) and wasm-name-obfuscator, detected and classified |
| Java and Android | .class files from Java 1.1 to 25, JAR, DEX 035 to 039, APK, AAB, APKM, XAPK, ODEX, single-DEX OAT; AndroidManifest.xml, resources.arsc, APK signatures v2 to v4; Kotlin metadata |
Allatori, BlackObfuscator, Zelix KlassMaster (ZKM), DashO, DexGuard. Partial: ProGuard and R8 (names from mapping.txt), yGuard, SkidSuite2 and Skidfuscator (number obfuscation), JBCO, Stringer (the committed Stringer output is detected, not decrypted). Detect only: runtime markers of Promon SHIELD, Appdome, Zimperium, Guardsquare, and DexProtector; 360 Jiagu, SecNeo (Bangcle), and other packers that decrypt the DEX at start-up |
| .NET | Assemblies to C#, F#, or VB pseudo-source; ReadyToRun; Native AOT; single-file bundles | 23 protectors: ConfuserEx2, KoiVM (ConfuserEx VM), Eazfuscator.NET. Partial: ConfuserEx, Obfuscar, BitMono, .NET Reactor, SmartAssembly, CryptoObfuscator, Skater, Spices.Net, Agile.NET, ArmDot, Babel, DeepSea, Dotfuscator (and CE), Goliath, DotNetPatcher, NetCryptor. Detect only: ILProtector, MaxToCode, Themida (.NET wrapper) |
| Native code | PE32 and PE64, EFI, ELF, Mach-O (thin and fat), COFF, MZ, NE, LE, LX. C pseudo-source from x86-64, AArch64, ARM32, and MIPS32, and Rust for pure integer leaf functions on x86-64 (decompiler); 32-bit x86 disassembly. Symbols and language structures of Rust, C++, Delphi, Nim, Zig, Crystal, and D binaries; DWARF, PDB, and STABS debug data | 27 packers and protectors (unpacking): UPX, MPRESS, FSG, NSPack, Petite, kkrunchy, ASPack, PECompact, MEW, sRDI, Yoda's Crypter (with the original image). Partial: Donut, ASProtect, Morphine, NeoLite, nPack, PolyCryptor, Warzone Crypter. Detect only: VMProtect, Themida and WinLicense, Enigma Protector, Obsidium, Armadillo, PELock, PE-Protector, Yoda's Protector. Obfuscation: OLLVM flattening, bogus control flow, and instruction substitution; mixed boolean-arithmetic (MBA) expressions; guardian-rs virtua |