
Suite CLI Rust qui décompresse statiquement, désobfusque et dépaquette le code natif, le bytecode, les scripts, les firmwares et les paquets d'applications à travers plus de 15 écosystèmes via un pipeline automatique unique.
Disrobe est un décompilateur statique, un désobfuscateur et un dépacker. Il retire l'empaquetage et l'obfuscation d'un logiciel compilé une couche à la fois et récupère le code source ou les octets d'origine en dessous.
Donnez à disrobe auto un exécutable, un paquet d'application, un script ou une image de firmware. Il nomme chaque couche (installeur, archive, packer, freezer, protecteur, obfuscateur, bytecode), la retire avec la passe de récupération correspondante, puis s'exécute à nouveau sur ce que cette passe a produit jusqu'à ce qu'aucune passe ne reconnaisse ce qui reste. Un seul binaire Rust couvre Python, JavaScript et WebAssembly, Java et Android, .NET, le code natif PE, ELF et Mach-O, Go, Lua, PHP, Ruby, Erlang et Elixir, ActionScript, les scripts shell et les macros Office, les applications React Native et Flutter, les installeurs et les firmwares. disrobe catalog liste les 169 packers, protecteurs, obfuscateurs et familles de bytecode qu'il reconnaît à travers 15 écosystèmes.
Les moteurs sont intégrés. Le bytecode Python se décompile sans installation de Python, la récupération JavaScript ne nécessite pas Node.js, et les décompilateurs Java, Android et .NET n'ont besoin ni de JVM ni de SDK .NET ; jvm decompile et dotnet decompile n'exécutent un décompilateur externe installé que lorsque --backend le nomme. Disrobe ne lance pas le programme qu'il analyse, sauf si vous passez --allow-dynamic, ce qui ne s'applique qu'à PyArmor v6 et v7. Le modèle de sécurité liste les interpréteurs bornés qui évaluent du code issu d'une entrée et les outils hôtes que Disrobe démarre.
Il est conçu pour les analystes de malware, les reverse engineers, les intervenants en réponse à incident, les joueurs de CTF et les chercheurs en sécurité.
Licence : Disrobe Source-Available License 1.1. Les projets personnels de loisir et d'apprentissage, la recherche indépendante en sécurité non rémunérée, l'éducation et la recherche à but non lucratif, ainsi que le journalisme sont gratuits, tels que la licence les définit. Toute utilisation par ou pour une entreprise nécessite une licence payante.
Démarrage rapide · Ce qu'il récupère · Résultats mesurés · Comment ça marche · Modèle de sécurité · Documentation
Téléchargez l'archive correspondant à votre plateforme depuis GitHub Releases, vérifiez-la par rapport à SHA256SUMS, et placez disrobe (disrobe.exe sous Windows) dans votre PATH. Ensuite, exécutez :
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
Sortie enregistrée de identify et de l'étape de dépaquetage, exécutée sur un programme Rust packé avec UPX et commité dans ce dépôt (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
Le benchmark de dépaquetage récupère le même fichier et le compare avec la compilation d'origine : la section .text est identique octet pour octet, 73 160 octets sans aucune différence (mesures de dépaquetage).
Les archives de publication couvrent Windows (x86-64, ARM64), macOS (x86-64, ARM64) et Linux (x86-64 et ARM64 avec glibc, x86-64 statique avec musl). Chaque archive dispose d'un bundle de signature cosign distinct, et SECURITY.md explique la vérification. La compilation depuis les sources nécessite la toolchain Rust épinglée dans rust-toolchain.toml (1.96.1 ; la version minimale prise en charge est 1.95) ainsi qu'une toolchain C pour les dépendances natives :
git clone https://github.com/1-3-7/disrobe
cd disrobe
cargo build --locked --release -p disrobe-cli --bin disrobe
Le guide d'installation couvre les feature flags et les backends externes optionnels. Exécutez disrobe doctor pour sonder 46 à 51 outils externes selon la plateforme et voir quels backends optionnels sont installés.
Chaque ligne nomme les formats que Disrobe lit et la protection qu'il supprime. Lorsque disrobe catalog liste une famille, le niveau indiqué est celui du catalogue. Les familles nommées en premier sont récupérées. Les familles Partielles sont pelées autant que l'entrée le permet, et le résultat nomme ce qui reste. Les familles Détection seule sont identifiées, et le résultat indique pourquoi le reste ne peut pas être récupéré, généralement parce qu'une clé n'existe qu'à l'exécution. Un nom en gras est évalué sur la sortie de l'outil réel, commité dans ce dépôt ; les autres noms sont évalués sur des échantillons écrits pour les tests, ou sont seulement détectés. Chaque écosystème renvoie à son guide. La colonne Evidence étiquette chaque ligne : real lie un résultat ou un test qui évalue la sortie du compilateur ou de l'outil réel, synthetic nomme ce qui est évalué uniquement sur des entrées construites pour les tests, et claimed nomme ce qu'aucun test n'exerce.