
Suite CLI in Rust che decompila staticamente, deoffusca e decomprime codice nativo, bytecode, script, firmware e pacchetti di app attraverso oltre 15 ecosistemi tramite un'unica pipeline automatica.
Disrobe è un decompilatore statico, deoffuscatore e unpacker. Rimuove packing e offuscamento dal software compilato un livello alla volta e recupera il codice sorgente o i byte originali sottostanti.
Passa a disrobe auto un eseguibile, un pacchetto applicativo, uno script o un'immagine firmware. Assegna un nome a ciascun livello (installer, archivio, packer, freezer, protector, offuscatore, bytecode), lo rimuove con il passaggio di recupero corrispondente e riesegue su ciò che quel passaggio ha prodotto finché nessun passaggio riconosce ciò che rimane. Un singolo binario Rust copre Python, JavaScript e WebAssembly, Java e Android, .NET, codice nativo PE, ELF e Mach-O, Go, Lua, PHP, Ruby, Erlang ed Elixir, ActionScript, script shell e macro di Office, app React Native e Flutter, installer e firmware. disrobe catalog elenca le 169 famiglie di packer, protector, offuscatori e bytecode che riconosce in 15 ecosistemi.
I motori sono integrati. Il bytecode Python viene decompilato senza un'installazione di Python, il recupero di JavaScript non richiede Node.js, e i decompilatori Java, Android e .NET non richiedono JVM o .NET SDK; jvm decompile e dotnet decompile eseguono un decompilatore esterno installato solo quando --backend lo specifica. Disrobe non avvia il programma che analizza a meno che tu non passi --allow-dynamic, che si applica solo a PyArmor v6 e v7. Il modello di sicurezza elenca gli interpreti limitati che valutano codice preso da un input e gli strumenti host che Disrobe avvia.
È pensato per analisti di malware, reverse engineer, responder di incidenti, giocatori di CTF e ricercatori di sicurezza.
Licenza: Disrobe Source-Available License 1.1. Progetti personali hobbistici e apprendimento, ricerca di sicurezza indipendente non retribuita, istruzione e ricerca senza scopo di lucro e giornalismo sono gratuiti, come definiti dalla licenza. Qualsiasi uso da parte di o per un'azienda richiede una licenza a pagamento.
Avvio rapido · Cosa recupera · Risultati misurati · Come funziona · Modello di sicurezza · Documentazione
Scarica l'archivio per la tua piattaforma da GitHub Releases, verificalo rispetto a SHA256SUMS e metti disrobe (disrobe.exe su Windows) nel tuo PATH. Poi esegui:
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
Output registrato di identify e del passaggio di unpacking, eseguito su un programma Rust impacchettato con UPX committato in questo 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
Il benchmark di unpacking recupera lo stesso file e lo confronta con la build originale: la sezione .text è identica byte per byte, 73.160 byte senza differenze (unpacking measurements).
Gli archivi di release coprono Windows (x86-64, ARM64), macOS (x86-64, ARM64) e Linux (x86-64 e ARM64 con glibc, x86-64 statico con musl). Ogni archivio ha un bundle di firma cosign separato, e SECURITY.md spiega la verifica. La compilazione dai sorgenti richiede il toolchain Rust fissato in rust-toolchain.toml (1.96.1; la versione minima supportata è 1.95) e un toolchain C per le dipendenze native:
git clone https://github.com/1-3-7/disrobe
cd disrobe
cargo build --locked --release -p disrobe-cli --bin disrobe
La guida all'installazione copre i feature flag e i backend esterni opzionali. Esegui disrobe doctor per sondare da 46 a 51 strumenti esterni a seconda della piattaforma e vedere quali backend opzionali sono installati.
Ogni riga indica i formati che Disrobe legge e la protezione che rimuove. Dove disrobe catalog elenca una famiglia, il livello mostrato è quello del catalogo. Le famiglie nominate per prime vengono recuperate. Le famiglie Parziali vengono sbucciate per quanto l'input consente, e il risultato indica ciò che resta. Le famiglie Solo rilevamento vengono identificate, e il risultato dichiara perché il resto non può essere recuperato, di solito perché una chiave esiste solo a runtime. Un nome in grassetto è valutato sull'output dello strumento reale, committato in questo repository; gli altri nomi sono valutati su campioni scritti per i test, oppure sono solo rilevati. Ogni ecosistema rimanda alla sua guida. La colonna Evidence etichetta ogni riga: real collega un risultato o un test che valuta l'output del compilatore o dello strumento reale, synthetic indica ciò che è valutato solo su input costruiti per i test, e claimed indica ciò che nessun test esercita.