
Suite CLI en Rust que descompila estáticamente, desofusca y desempaqueta código nativo, bytecode, scripts, firmware y paquetes de aplicaciones en más de 15 ecosistemas mediante un único pipeline automático.
Disrobe es un descompilador estático, desofuscador y desempaquetador. Elimina el empaquetado y la ofuscación del software compilado capa por capa y recupera el código fuente o los bytes originales que hay debajo.
Dale a disrobe auto un ejecutable, un paquete de aplicación, un script o una imagen de firmware. Nombra cada capa (instalador, archivo, empaquetador, congelador, protector, ofuscador, bytecode), la elimina con la pasada de recuperación correspondiente y vuelve a ejecutarse sobre lo que esa pasada produjo hasta que ninguna pasada reconoce lo que queda. Un único binario de Rust cubre Python, JavaScript y WebAssembly, Java y Android, .NET, código nativo PE, ELF y Mach-O, Go, Lua, PHP, Ruby, Erlang y Elixir, ActionScript, scripts de shell y macros de Office, aplicaciones React Native y Flutter, instaladores y firmware. disrobe catalog lista las 169 familias de empaquetadores, protectores, ofuscadores y bytecode que reconoce en 15 ecosistemas.
Los motores están integrados. El bytecode de Python se descompila sin una instalación de Python, la recuperación de JavaScript no necesita Node.js, y los descompiladores de Java, Android y .NET no necesitan JVM ni .NET SDK; jvm decompile y dotnet decompile ejecutan un descompilador externo instalado solo cuando --backend lo nombra. Disrobe no lanza el programa que analiza a menos que pases --allow-dynamic, que se aplica solo a PyArmor v6 y v7. El modelo de seguridad lista los intérpretes acotados que evalúan código tomado de una entrada y las herramientas del host que Disrobe inicia.
Está diseñado para analistas de malware, ingenieros inversos, respondedores de incidentes, jugadores de CTF e investigadores de seguridad.
Licencia: Disrobe Source-Available License 1.1. Los proyectos personales de hobby y aprendizaje, la investigación de seguridad independiente no remunerada, la educación e investigación sin ánimo de lucro y el periodismo son gratuitos, tal como los define la licencia. Cualquier uso por o para una empresa requiere una licencia de pago.
Inicio rápido · Qué recupera · Resultados medidos · Cómo funciona · Modelo de seguridad · Documentación
Descarga el archivo para tu plataforma desde GitHub Releases, verifícalo con SHA256SUMS y coloca disrobe (disrobe.exe en Windows) en tu PATH. Luego ejecuta:
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
Salida registrada de identify y el paso de desempaquetado, ejecutados sobre un programa Rust empaquetado con UPX incluido en este repositorio (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
El benchmark de desempaquetado recupera el mismo archivo y lo compara con la compilación original: la sección .text es idéntica byte a byte, 73.160 bytes sin diferencias (mediciones de desempaquetado).
Los archivos de release cubren Windows (x86-64, ARM64), macOS (x86-64, ARM64) y Linux (x86-64 y ARM64 con glibc, x86-64 estático con musl). Cada archivo tiene un bundle de firma cosign independiente, y SECURITY.md explica la verificación. Compilar desde el código fuente requiere el toolchain de Rust fijado en rust-toolchain.toml (1.96.1; la versión mínima soportada es 1.95) y un toolchain de C para las dependencias nativas:
git clone https://github.com/1-3-7/disrobe
cd disrobe
cargo build --locked --release -p disrobe-cli --bin disrobe
La guía de instalación cubre los feature flags y los backends externos opcionales. Ejecuta disrobe doctor para sondear entre 46 y 51 herramientas externas según la plataforma y ver qué backends opcionales están instalados.
Cada fila nombra los formatos que Disrobe lee y la protección que elimina. Cuando disrobe catalog lista una familia, el nivel mostrado es el del catálogo. Las familias nombradas primero se recuperan. Las familias Partial se pelan hasta donde lo permite la entrada, y el resultado nombra lo que queda. Las familias Detect only se identifican, y el resultado indica por qué no se puede recuperar el resto, normalmente porque una clave existe solo en tiempo de ejecución. Un nombre en negrita se evalúa sobre la salida de la herramienta real, comprometida en este repositorio; los demás nombres se evalúan sobre muestras escritas para las pruebas, o solo se detectan. Cada ecosistema enlaza a su guía. La columna Evidence etiqueta cada fila: real enlaza un resultado o prueba que evalúa la salida del compilador o herramienta real, synthetic nombra lo que se evalúa solo sobre entradas construidas para las pruebas, y claimed nombra lo que ninguna prueba ejercita.