Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
disrobe — 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. | Kitploit
Strumenti/GitHubGitHub/1-3-7/disrobe
Sicurezza AndroidAnalisi StaticaReverse EngineeringAnalisi MalwareSicurezza MobileAnalisi di BinariAnalisi del Firmware
GitHub1-3-7/disrobe

disrobe

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.

Vedi Repository
113625 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web
disrobe: recupera sorgente, struttura e byte dal software compilato

Per iniziare · Input supportati · Recupero automatico · Confronto tra strumenti · Evidenze · Documentazione

Vedi il software che c'è sotto

Disrobe è una suite da riga di comando in Rust per decompilare, deoffuscare e spacchettare software. Usala per fare triage di un file sconosciuto, recuperare codice per il reverse engineering, estrarre indicatori per un'indagine o preparare artefatti per un disassembler.

Recupera Python da bytecode e applicazioni congelate, Java da classfile e DEX, C# da CIL, JavaScript da bundle, Lua da macchine virtuali personalizzate e C o Rust da codice nativo. Estrai file da installer, firmware, pacchetti mobili e applicazioni Electron, Tauri o Wails. Mantieni insieme sorgente, simboli, stringhe, tipi e provenienza recuperati per ulteriori analisi.

La build completa cataloga 170 famiglie in 15 ecosistemi e rileva 103 formati di container. disrobe auto identifica ogni livello, esegue un passaggio corrispondente e segue i figli recuperati nei loro percorsi di recupero. Comandi dedicati espongono controlli più fini, report di analisi e backend opzionali. Il recupero viene eseguito staticamente per impostazione predefinita; sorgente, struttura, output parziale e confini delle chiavi mancanti rimangono distinguibili nel risultato.

Se Disrobe ti è utile, considera di mettere una stella al repository.

Vederlo in azione

Disrobe CLI: spacchetta, recupera e ispeziona software

Guarda il video completo · Leggi la trascrizione

Venti comandi CLI in 2 minuti e 12 secondi: spacchetta un eseguibile nativo, recupera Python e Lua, dividi moduli JavaScript, ripristina source map, ispeziona WebAssembly e risorse Android, estrai indicatori e conserva report e hash degli artefatti. Il capitolo finale mostra la configurazione del progetto, la configurazione dell'IDE, le annotazioni dell'analista e i completamenti della shell. La trascrizione include l'inventario completo dei comandi della build registrata; la mappa delle capacità spiega i suoi limiti di supporto.

Per iniziare

Scarica l'archivio per la tua piattaforma da GitHub Releases, verificalo rispetto al file SHA256SUMS della release e metti disrobe nel tuo PATH. Gli archivi delle release includono bundle di firme; la guida alla verifica spiega come ispezionarli.

PiattaformaTarget di release
Windowsx86-64, ARM64
macOSx86-64, ARM64
Linuxx86-64 e ARM64 con glibc; x86-64 con musl

Verifica il binario che hai installato:```sh disrobe --version disrobe --help

root@kitploit:~
Per compilare la CLI da un clone, installa la toolchain Rust del repository e i [prerequisiti di build nativi](https://github.com/1-3-7/disrobe/blob/main/docs/src/installation.md), quindi esegui:```sh
cargo build --locked --release -p disrobe-cli --bin disrobe

L'eseguibile è target/release/disrobe, oppure target/release/disrobe.exe su Windows. Consulta la guida all'installazione per i feature flag e le build slim.

Recuperare un'applicazione

Inizia con un'applicazione, una libreria o un pacchetto. Identificalo, recupera i suoi layer riconosciuti, poi ispeziona il riepilogo del recupero:```sh disrobe identify path/to/application disrobe auto path/to/application --out recovered/ --capture-stages disrobe context --out recovered/

root@kitploit:~
`identify` riporta il formato e i segnali disponibili. `auto` estrae e recupera i livelli riconosciuti. `context` riassume i passaggi risultanti, la confidenza e la provenienza. Con `--capture-stages`, ispeziona ogni fase sotto `recovered/01-*/`, `recovered/02-*/` e `recovered/final/`; `chain.json` registra la topologia e gli hash, e `recovery.json` registra gli esiti e i tempi.

Usa un comando dedicato quando conosci l'output di cui hai bisogno:```sh
disrobe py decompile module.pyc --out python-source/
disrobe js deob bundle.js --full --out readable.js
disrobe native decompile application.exe --out native-source/
disrobe native export packed.exe --format ghidra --out ghidra-input/
disrobe webview desktop.exe --out frontend/

Il decompilatore nativo emette C per impostazione predefinita su x86-64; --format rust seleziona Rust. AArch64, ARM32 e MIPS32 emettono pseudo-C. native export ricostruisce le immagini PE impacchettate supportate per uno strumento di analisi esterno; webview scrive l'albero delle risorse frontend recuperate senza avviare l'applicazione.

Prova un artefatto piccolo e ispezionabile

Il repository include un piccolo modulo WebAssembly per il playground del browser. Da un clone, con la CLI completa nel tuo PATH:```sh disrobe wasm decompile playground/public/samples/add.wasm --target json --out add.summary.json disrobe wasm decompile playground/public/samples/add.wasm --target wat --out add.lifted.wat disrobe auto playground/public/samples/add.wasm --out recovered/ --capture-stages

root@kitploit:~
Il primo comando scrive `add.summary.json`; il secondo scrive testo WebAssembly in `add.lifted.wat`. Il recupero automatico
seleziona una catena disponibile e scrive i suoi artefatti sotto `recovered/`; `--capture-stages` conserva
i risultati intermedi. Queste operazioni ispezionano il modulo senza eseguire la sua funzione esportata.

Ispeziona i file recuperati insieme al report: l'identificazione da sola non stabilisce il recupero. Costrutti non supportati, materiale chiave assente e catene non disponibili compaiono nel risultato. La [guida ai risultati](https://github.com/1-3-7/disrobe/blob/main/docs/src/reading-a-result.md) spiega artefatti, diagnostica, esiti parziali e provenienza.

[Apri il playground del browser](https://1-3-7.github.io/disrobe/playground/) · [Segui la guida rapida](https://github.com/1-3-7/disrobe/blob/main/docs/src/quickstart.md)

## Trova il tuo input

**Recover** significa che un percorso raggiungibile emette sorgente, byte o struttura. **Partial** significa che recupera solo una parte di tali informazioni. **Detect-only** significa che identifica la famiglia senza recuperarne il corpo protetto. Questi livelli descrivono operazioni su input supportati; un nome di famiglia da solo non è una garanzia che ogni versione o configurazione venga recuperata. Gli elenchi seguenti includono il catalogo completo delle famiglie e formati aggiuntivi esposti da comandi e estrattori dedicati.

| Input | Recupero e output | Comandi e guida |
|---|---|---|
| Python | Bytecode e marshal CPython 1.0 a 3.15 verso sorgente; disassemblaggio PyPy, MicroPython `.mpy` v0 a v6, Jython, IronPython e Brython; estrazione di payload congelati; nomi, firme e fallback strutturale di Cython `.pyd`/`.so` | `py`, `pyinstaller`, `pyarmor`, `pyfreeze`, `nuitka` · [Python](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/python.md) |
| JavaScript / TypeScript | Deoffuscamento del sorgente, inversione della minificazione, suddivisione dei moduli, source map, ispezione dei dati in cache V8 e dei runtime impacchettati | `js` · [JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) |
| WebAssembly | Da `.wasm` a WAT, Rust, TypeScript, pseudo-sorgente C o JSON; ispezione del Component Model e del type-graph GC; inversione dell'offuscamento supportato | `wasm` · [WebAssembly](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) |
| JVM / Android | `.class`, JAR, DEX, APK, AAB; sorgente Java, idiomi Kotlin/Scala, informazioni su manifest e firma, report dei protettori e sidecar di mapping | `jvm`, `apk` · [JVM e Android](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/jvm-android.md) |
| .NET | Metadati PE/CLR e CIL verso pseudo-sorgente C#, F# o VB; ispezione ReadyToRun e Native AOT; estrazione di bundle single-file | `dotnet` · [.NET](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/dotnet.md) |
| Native | Identificazione o analisi di PE32/PE64, EFI PE, ELF32/ELF64, moduli kernel, Mach-O thin/fat, COFF, MZ, NE, LE, LX e codice grezzo; emissione di sorgente sui percorsi specifici per architettura sopra indicati | `native`, `macho`, `semdiff` · [Native](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md), [decompile](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-decompile.md) |
| Go | Metadati runtime PE/ELF/Mach-O, nomi di funzioni e tipi rimossi, file `embed.FS`, report di garble e letterali recuperabili | `go` · [Go](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/go.md) |
| Swift / Objective-C | Classi, protocolli, campi, selettori, simboli demangled di Mach-O; slice universali; dylib della shared-cache dyld | `swift`, `macho` · [Swift](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/swift.md) |
| Lua | Bytecode Lua 5.1 a 5.4, LuaJIT 2.0/2.1, Luau, Garry's Mod Lua (GLua); report di fedeltà per sorgente e per input; recupero supportato di VM e stringhe | `lua` · [Lua](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/lua.md) |
| PHP | Peeling di catene sorgente/eval, cicli di decodifica a chiave letterale e livelli AES, estrazione Phar, recupero di `op_array` serializzati; gli envelope dei encoder commerciali rimangono limitati dalla chiave | `php` · [PHP](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/php.md) |
| Ruby | Binari InstructionSequence MRI/YARV 2.6 a 3.4 e bytecode mruby RITE verso Ruby; classificazione freezer e AOT | `ruby` · [Ruby](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/ruby.md) |
| Erlang / Elixir | Moduli BEAM e archivi EZ; codice astratto sopravvissuto o `Dbgi` verso sorgente, fallback Core Erlang, elenco delle istruzioni | `beam` · [BEAM](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/beam.md) |
| ActionScript 3 | Blocchi `DoABC` SWF FWS/CWS/ZWS e bytecode ABC grezzo verso disassemblaggio e pseudocodice AS3 | `as3` · [ActionScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/as3.md) |
| Runtime mobile | Parsing dell'header Hermes v60 a v96, lift pseudo-JavaScript v62/v71/v74/v76/v83/v84/v89/v96; corpi sorgente del kernel Flutter Dart; dichiarazioni, stringhe e disassemblaggio AOT ARM64 | `hermes`, `flutter`, `mobile` · [Mobile](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md) |
| Shell / documenti | PowerShell, Bash, Batch, VBScript, WSH; p-code e stomping VBA3/5/6/7; sorgente di macro Office, formule XLM BIFF8/BIFF12, script/azioni incorporati nei PDF | `shell` · [Shell e documenti](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md) |
| Altri artefatti linguistici | Op-tree/bytecode Perl, metadati R RDS e Rcpp, starkit Tcl, output Haxe JS/SWF/HashLink/Neko; impronte, simboli e struttura parziale di Nim, Zig, Crystal e D | `auto`, API di libreria · [Linguaggi di scripting](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md), [native](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) |
| Python pickle | Disassemblaggio del protocollo, traccia simbolica, ricostruzione e classificazione senza chiamare i reducer di pickle | `pickle` · [Pickle](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/pickle.md) |
| Archivi / firmware / frontend | L'elenco completo dei container di seguito; Electron ASAR, mappe incorporate Tauri v1/v2, alberi `embed.FS` di Wails v2 | `extract`, `webview`, `auto` · [Container](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/containers.md), [webview](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/webview.md) |

<details>
<summary><strong>Python: ogni freezer, protettore e offuscatore di sorgente con nome</strong></summary>

| Famiglia o formato | Supporto e prerequisito |
|---|---|
| PyInstaller 2.x a 6.20+ | Recupera archivi e bytecode incorporati, inclusi i livelli AES-CTR/CFB supportati |
| Nuitka onefile, standalone, module, wheel | Estrae payload onefile; recupera simboli e struttura visibile a Python dalle forme compilate |
| cx_Freeze, py2exe, shiv, pex, Briefcase | Estrazione del packager tramite `pyfreeze`; il comando rimane sperimentale |
| PyOxidizer | Estrazione sperimentale, non validata |
| SourceDefender `.pye` | Decifratura statica tramite `py sourcedefender` e `sourcedefender.decrypt` |
| PyArmor v3 (DES legacy), PyArmor v4 (misto legacy), PyArmor v5 (AES legacy) | Detect-only: confine della chiave avvolta in RSA |
| PyArmor v6, PyArmor v7 | Recupero statico parziale; la modalità super e le chiavi non disponibili limitano l'output |
| PyArmor v8, PyArmor v9 / 9-Pro | Recupero statico del wrapper dove il materiale chiave è disponibile. Il risultato pubblicato <!-- m:pyarmor_frac -->72 / 72<!-- /m --> conta la decodifica completa del `CodeObject` radice solo per i wrapper v8/v9 default-trial con nome; non stabilisce l'equivalenza del sorgente né copre licenza registrata/pro, BCC o modalità super |
| Kramer / Specter, Berserker, BlankOBF, PlusOBF, Wodx, pyobfuscate.com, pyobfuscate.com (2026 XOR/lambda), PyObfuscator (mauricelambert), Manglify, Oxyry, pyminifier, famiglia di offuscatori online, Xindex, Patchwork, pyc-zipper | Recupero statico di sorgente/loader tramite il valutatore AST; i singoli livelli e residui vengono riportati |
| Jawbreaker, ObfuXtreme | Recupera il corpo presente nell'artefatto; i payload recuperati a runtime rimangono assenti |
| python-obfuscator (PyPI), pyobfus, Pypacker | Peeling parziale del wrapper e classificazione |

PyArmor può richiedere il file runtime corrispondente accanto al wrapper. Il suo percorso BCC dedicato richiede `--allow-bcc` ed emette lift nativi statici più scheletri Python per i corpi modellati; il recupero automatico consapevole del percorso può pubblicare gli stessi artefatti BCC. Solo l'hook dinamico di PyArmor v6/v7 esegue codice campione, dietro `--allow-dynamic` con un watchdog. `--allow-bcc` consente solo analisi statica in-tree e non esegue il campione né invoca strumenti esterni. [Dettagli su versione e modalità](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/python.md#pyarmor).

</details>

<details>
<summary><strong>JavaScript, WebAssembly e applicazioni web impacchettate</strong></summary>

| Famiglia o formato | Supporto e percorso |
|---|---|
| obfuscator.io / javascript-obfuscator, JS-Confuser | Recupera array di stringhe supportati, trasformazioni dispatcher/control-flow, predicati opachi e livelli loader; comandi diretti e `js.deob` |
| Jscrambler, js-obfuscator (jsobfu) | Recupero parziale di template e trasformazioni statiche |
| JSFuck, aaencode, jjencode, JSFiretruck, Dean Edwards Packer | Decodifica statica tramite operazioni dedicate e percorsi di catena riconosciuti |
| JSDefender, Arxan / Digital.ai | Rilevamento e peeling parziale di trasformazioni statiche; le operazioni JS commerciali protette richiedono l'opzione di autorizzazione del comando |
| PACE | Detect-only |
| webpack 4, webpack 5, Vite, Rollup, Rolldown, esbuild, Turbopack, Bun, Parcel, Browserify, SystemJS; moduli AMD | Unbundling/recupero moduli diretto. La catena dispaccia webpack e Vite; i marcatori di catalogo per gli altri bundler non rendono di per sé automatici quei percorsi |
| bytenode `.jsc`, Node SEA, nexe, nw.js | Ispezione/carving dei dati V8 impacchettati; Node SEA e bytenode hanno rami di catena espliciti |
| Electron ASAR, Tauri v1/v2, Wails v2 | Recupera alberi frontend incorporati; Electron/Tauri usano `webview.carve`, Wails usa `go.classify`; `webview` diretto gestisce tutti e tre |
| Bun standalone, Deno eszip v2 a v2.3 / `deno compile` | Recupera grafi di moduli incorporati tramite i rispettivi lettori di container; eszip espone anche un lettore Rust diretto |
| Wobfuscator, Jscrambler WASM, wasm-mixer / Wasmixer | Inversione parziale delle trasformazioni supportate tramite `wasm.deob`; fixture a forma di strumento valutano le trasformazioni, senza output committato dagli offuscatori stessi |
| Tigress → Emscripten, wasm-name-obfuscator | Rileva e classifica; l'helper Tigress è fuori dal percorso di esecuzione `wasm deob`, e i nomi originali distrutti rimangono non disponibili |

[Percorsi JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) · [Limiti Wasm](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) · [Layout frontend incorporati](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/webview.md).

</details>

<details>
<summary><strong>Packer, protettori e famiglie di offuscamento nativi</strong></summary>

| Famiglia | Supporto e percorso |
|---|---|
| Donut, sRDI | Recupera il modulo incorporato da layout di shellcode-loader supportati |
| UPX, ASPack, Petite, MPRESS, FSG, PECompact, Yoda's Crypter, NSPack, MEW, kkrunchy | Routine di unpack implementate, raggiungibili tramite `native unpack` e la catena dei packer; la fedeltà varia per famiglia e campione |
| ASProtect, Morphine, nPack, NeoLite, PolyCryptor, Warzone Crypter | `StubEvalPending`: il comportamento dell'emulatore ha evidenza di stub costruita da specifiche; il recupero reale di packer commerciali non è validato e non viene pubblicizzato alcun dispatch di unpack |
| Yoda's Protector, VMProtect, Themida / WinLicense | CLI e auto detect-only. Helper Rust separati espongono carving assistito dall'originale o recupero di sezioni protette; non stabiliscono la devirtualizzazione dell'intero programma |
| PE-Protector, PELock, Enigma Protector, Armadillo, Obsidium, WinLicense | Detect-only |
| DotNetPatcher, NetCryptor | Delegano il livello managed al passaggio .NET |
| OLLVM flattening, bogus control flow, instruction substitution; Tigress CFF | Trasformazioni di deoffuscamento statico supportate e report tramite le API Rust native; l'analisi applicabile compare nei report di recupero nativo |
| Alcatraz, Emotet CFF, Mirai, Dridex, Trickbot, obfus.h, Cryptify (rust-obfuscator), guardian-rs, obfusheader.h, obfuscxx, Amice | Firme di offuscamento nativo con nome; i singoli helper di stringhe/control-flow hanno un recupero più limitato rispetto alla famiglia completa rilevata |

L'analisi nativa recupera anche simboli Rust/C++, RTTI e vtable C++, modelli a oggetti Delphi/C++Builder e risorse DFM, informazioni DWARF/PDB/STABS, import, call graph, firme crypto e corrispondenze FLIRT. L'analisi delle istruzioni copre x86, ARM, RISC-V, MIPS, PowerPC, SPARC, eBPF e AVR; l'emissione di sorgente è il set di architetture più ristretto elencato sopra. [Analisi nativa](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) · [Evidenza di unpacking e recupero byte](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-unpack.md) · [Deoffuscamento](https://github.com/1-3-7/disrobe/blob/main/docs/src/anti-analysis.md).

</details>

<details>
<summary><strong>Famiglie di pacchetti JVM, Android, .NET e mobile</strong></summary>

| Famiglia | Supporto e prerequisito |
|---|---|
| Zelix KlassMaster, Allatori, Stringer, DashO | Recupero di stringhe per pattern supportati, seguito da decompilazione del classfile |
| DexGuard | Rilevamento, peeling strutturale ed emulazione della decifratura di stringhe in-classe per costanti con chiave supportate |
| BlackObfuscator | Riconoscimento del dispatcher DEX e annotazione dell'ordine dei blocchi |
| ProGuard / R8 | Replay del mapping su un sidecar di ripristino dei nomi; i nomi originali richiedono `mapping.txt` |
| yGuard, SkidSuite2, JBCO | Detect-only |
| Promon SHIELD, Guardsquare DexGuard RASP, Guardsquare ThreatCast, Appdome, OneSpan, Arxan / Digital.ai, Zimperium zShield, Licel DexProtector | Identificazione RASP Android e report strutturali |
| ConfuserEx2 | Recupero di costanti su campioni reali e deflattening del control-flow; le risorse cifrate possono mantenere un confine di chiave a runtime |
| Eazfuscator.NET | Decifratura di stringhe e lifting di VM valutati su modello; la fixture della VM proviene da un virtualizzatore in-repository, non dal prodotto distribuito |
| KoiVM (ConfuserEx VM) | Corpi virtualizzati liftati a CIL su output committato di strumenti reali |
| ConfuserEx, Dotfuscator, Dotfuscator CE, SmartAssembly, Babel, DeepSea, Spices.Net, Goliath, Skater, .NET Reactor, CryptoObfuscator, ArmDot, Agile.NET, Obfuscar, DotNetPatcher, NetCryptor, BitMono | Rilevamento e recupero parziale specifico per famiglia: nomi, stringhe, risorse o strutture dei metodi. BitMono è nel rilevatore di protettori oltre il catalogo della catena .NET a 22 voci |
| Themida (wrapper .NET), ILProtector, MaxToCode | Detect-only per corpi con chiave nel loader nativo |
| React Native APK, React Native IPA; bytecode React Native Hermes | Estrae payload JS/Hermes e instrada il bytecode supportato nel lift Hermes |
| Kernel Flutter Dart; snapshot AOT Flutter (`libapp.so`) | Recupero della tabella sorgente del kernel; dichiarazioni AOT, metadati e disassemblaggio ARM64. La versione dello snapshot e i nomi disponibili limitano il recupero |
| Xamarin / .NET MAUI APK, Apache Cordova APK, Capacitor APK, NativeScript APK | Identificazione del runtime ed estrazione supportata di pacchetti/membri |
| Android APK (`classes.dex`), Android app bundle (AAB / APKM / XAPK), IPA | Ispezione del pacchetto ed estrazione dei figli; il recupero a valle dipende dal runtime incorporato |

I decodificatori di stringhe .NET per SmartAssembly, Spices.Net, Skater, .NET Reactor, Eazfuscator.NET e CryptoObfuscator sono valutati su algoritmi modellati, non su assembly prodotti dai vendor e committati. ConfuserEx2, Obfuscar e BitMono hanno evidenza reale di assembly protetti. [JVM/Android](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/jvm-android.md) · [.NET](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/dotnet.md) · [Mobile](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md).

</details>

<details>
<summary><strong>Famiglie Lua, PHP, shell, Ruby, BEAM, Swift, Go e ActionScript</strong></summary>

| Famiglia | Supporto e prerequisito |
|---|---|
| IronBrew2 | Recupero VM, verificato differenzialmente in esecuzione su output reale 2.7.0 standard e MAX |
| Prometheus | Recupero parziale, incluse le strutture di dispatch `Vmify` impilate supportate |
| MoonSec V1, MoonSec V2, MoonSec V3, AztupBrew, DarkSec, Boronide, PSU, WeAreDevs LuaU, luaobfuscator.com, SLua (Unity Lua 5.3), Hercules | Recupero parziale Lua; l'evidenza di VM a forma MoonSec usa un bootstrap sintetico |
| Luraph | Detect-only |
| Bytecode Luau, Garry's Mod Lua (GLua) | Riconoscimento del dialetto; lifting Luau e recupero parziale GLua |
| ionCube, SourceGuardian, Zend Guard | Rilevamento di envelope PHP commerciali; le chiavi residenti nel loader rimangono un confine. I casi legacy con chiave statica possono produrre struttura `op_array` parziale |
| FOPO, Better PHP Obfuscator | Peeling statico di catene eval PHP, con requisiti di chiave letterale per i livelli cifrati |
| Invoke-Obfuscation (token), Invoke-Obfuscation (AST), Invoke-Obfuscation (string), Invoke-Obfuscation (encoding), Invoke-Obfuscation (compress); Invoke-Stealth, PowerHell, Chameleon, psobf | Recupero statico PowerShell |
| Invoke-Obfuscation (launcher), ISESteroids | Recupero parziale PowerShell |
| Bashfuscator (token), Bashfuscator (string), Bashfuscator (obfuscate), Bashfuscator (compress); Bash indirection (IFS/eval); node-bash-obfuscate (chunk-table eval) | Recupero statico Bash |
| Offuscamento Batch (`%random%`), offuscamento Batch (set indirection); macro VBA (decompilazione p-code + stomping) | Peeling Batch e recupero sorgente/p-code VBA |
| YARV InstructionSequence (`.rb` compilato), bytecode mruby RITE | Recupero sorgente Ruby |
| Eseguibile autoestraente OCRA, pacchetto RubyScript2Exe | Classificazione/recupero parziale del freezer |
| Classe compilata JRuby, native image TruffleRuby | Detect-only tramite il catalogo Ruby |
| File BEAM (modulo compilato Erlang / Elixir), archivio EZ (moduli `.beam` avvolti in ZIP) | Estrazione del modulo, recupero sorgente/debug-chunk o fallback Core Erlang |
| garble | Metadati Go e letterali supportati; l'hashing dei nomi originali non può essere invertito senza il seed mancante |
| Metadati Mach-O Swift / Objective-C, binario Mach-O fat (universal), shared cache dyld | Metadati runtime, recupero di slice e dylib |
| SwiftShield | Parser di mapping; il mapping deve essere fornito per recuperare i nomi originali |
| SWF (Flash, FWS/CWS/ZWS) DoABC, bytecode ABC grezzo | Disassemblaggio e pseudocodice del corpo dei metodi |
| secureSWF, DoSWF, Kindi, Irrfuscator, swfLock | Detect-only |

[Catalogo delle famiglie](https://github.com/1-3-7/disrobe/blob/main/docs/src/catalog.md) · [Lua](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/lua.md) · [PHP](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/php.md) · [Shell](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md) · [Ruby](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/ruby.md) · [BEAM](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/beam.md) · [Go](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/go.md) · [Swift](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/swift.md) · [AS3](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/as3.md).

</details>

<details>
<summary><strong>Tutti i 103 formati di container registrati</strong></summary>

| Categoria | Formati |
|---|---|
| Archivi generici | ZIP, TAR, tar.gz, tar.bz2, tar.xz, tar.zst, 7z, RAR, CAB, CPIO, ar, ARJ, ARC, LZH, LZO/lzop, uzip, Xamarin xalz, PAR2, StuffIt |
| Archivi di applicazioni e linguaggi | JAR, WAR, APK, XPI, WHL, EGG, CRX, NUPKG, VSIX, PYZ, Electron ASAR |
| Installer e immagini applicative | PKG, DMG, DEB, RPM, AppImage, Snap, Flatpak, MSIX/APPX, MSI, NSIS, Squirrel, Inno Setup, InstallShield, Enigma Virtual Box |
| Filesystem e stream di filesystem | SquashFS, cramfs, ext4, romfs, MinixFS, Android sparse, btrfs-send, EROFS, JFFS2, NTFS, UBI/UBIFS, YAFFS2, QNX, partclone |
| Immagini disco e di deployment | ISO, OCI, immagine Docker, VHD, VHDX, WIM, GPT, MBR, FAT12/16/32 |
| Stream di compressione | XZ, gzip, bzip2, zstd, LZMA, lzip, LZ4, zlib, Unix compress (`.Z`) |
| Dati applicativi incorporati | Bun standalone, UnityFS, bundle single-file .NET |
| Firmware | D-Link SHRS, ENCRPTED_IMG, alpha v1, alpha v2, DEAFBEAD, FPKG; EnGenius; Autel ECC; QNAP; Netgear CHK, TRX v1, TRX v2; Xiaomi HDR1, HDR2; Tesla SBFH; HP BDL, IPKG; Moxa FRM; INSTAR BNEG, HD; Airoha; volume firmware UEFI |
| Memoria e volumi cifrati | Windows minidump, LUKS1 |

Il roster dichiara il rilevamento per ogni voce. Di quei percorsi, 102 usano l'estrattore generico; <!-- roster-breadth:containers-exercised -->42<!-- /roster-breadth --> hanno input committati che raggiungono i byte dei membri, DMG ha evidenza committata di solo rilevamento, e 59 non hanno input committato. LUKS1 è valutato separatamente rispetto al plaintext e richiede una chiave di volume grezza `aes-cbc-plain` per la decifratura; senza di essa riporta il confine della chiave. I singoli metodi di compressione, i membri cifrati, i volumi splittati e le funzionalità dei filesystem hanno limiti più ristretti. StuffIt 5 attualmente restituisce il blob dell'archivio tramite estrazione anche se i suoi decoder di fork esistono. Il contenuto Airoha OTP-AES viene estratto verbatim.

Lettori Rust aggiuntivi espongono Deno eszip, Apple APFS/HFS+, overlay aggiunti a ELF e strutture Blazor WebCIL; non sono voci extra nel conteggio dei 103 formati. [Percorsi di estrazione, versioni dei metodi e limiti](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/containers.md) · [Registro dei container](https://github.com/1-3-7/disrobe/blob/main/crates/disrobe-binfmt/src/container.rs).

</details>

## Recupero automatico`auto` sceglie un pass dal registro compilato, lo esegue, quindi re-identifica il suo output e i figli estratti. Si ferma alla soglia di confidenza, a un hash di contenuto ripetuto o al limite di profondità (otto per impostazione predefinita). I report e i file sorgente contrassegnati come terminali rimangono output anziché essere reimmessi nel rilevamento. La tabella seguente rende conto di ogni pass registrato da una build completa; una build slim può omettere le righe soggette a feature gate.

| Livello di input | ID dei pass registrati | Output automatico | Controlli dedicati o prerequisito |
|---|---|---|---|
| Archivi, installer, firmware, volumi | `binfmt.container` | Figli estratti, seguiti ricorsivamente nei pass linguistici/nativi | `extract` per i report dei membri e l'opzione esplicita raw-key LUKS1 |
| PyInstaller | `pyinstaller.extract` | Membri incorporati e figli `.pyc` | `pyinstaller extract` per opzioni specifiche dell'archivio |
| Python freezers | `pyfreeze.extract`, `nuitka.extract` | Payload estratti o struttura di pacchetto compilato supportata | `pyfreeze` sperimentale; la variante Nuitka determina ciò che sopravvive |
| Python protetto | `pyarmor.unpack`, `sourcedefender.decrypt` | Testo in chiaro/bytecode disponibile, metadati o report sui confini delle chiavi | Materiale runtime/chiave corrispondente; modalità PyArmor dedicata e opzioni di strictness |
| Sorgente e bytecode Python | `py.deob`, `py.decompile`, `py.disasm` | Sorgente decodificato, sorgente decompilato o traccia di istruzioni | `py decompile --emit source,disasm,ast`; è necessario un interprete corrispondente per i controlli di ricompilazione |
| Pickle | `pickle.classify` | Analisi simbolica e classificazione | `pickle` per le singole operazioni di ispezione/ricostruzione |
| JavaScript | `js.deob` | Deobfuscation supportata, recupero moduli webpack/Vite, gestione Node SEA/bytenode | `js unbundle` espone il set più ampio di bundler; source map e opzioni di rinomina sono controlli diretti |
| WebAssembly | `wasm.deob` | WAT recuperato o sollevato più sidecar di rilevamento, riepilogo e recupero | `wasm decompile --target` sceglie Rust, TypeScript, C, WAT o JSON |
| Electron / Tauri | `webview.carve` | Membri frontend incorporati | `webview` supporta anche Wails; il recupero automatico Wails usa `go.classify` |
| PHP / Phar | `php.peel` | Sorgente decodificato, output `op_array`, figli dell'archivio, report su residui/chiavi | Chiavi e IV devono essere staticamente disponibili per i livelli cifrati |
| JVM / DEX | `jvm.classify` | Sorgente Java, manifest di protector e recupero, figli class/archive | `jvm`/`apk` per mapping, firme e backend esterni opzionali |
| .NET | `dotnet.classify` | C# e analisi, costanti/risorse/CIL recuperati o metadati Native AOT | `dotnet` per altri formati sorgente e backend di rendering installati |
| Pacchetti mobile / bytecode | `mobile.classify` | Estrazione runtime/membri, lift Hermes, sorgente Dart kernel o report AOT | `hermes`, `flutter`, `mobile` per controlli specifici del formato |
| Lua | `lua.deob` | Lua recuperato e sidecar di dialetto/fedeltà | `lua` per controlli espliciti su famiglia e output |
| Shell / Office / PDF | `shell.deob` | Script decodificati, sorgente macro/p-code, XLM e report sui documenti | `shell` per operazioni specifiche dei documenti |
| Ruby | `ruby.classify` | Analisi più sorgente YARV/mruby recuperato ove disponibile | `ruby` per report specifici della variante; la classificazione JRuby/TruffleRuby non è recupero del sorgente Ruby |
| BEAM / EZ | `beam.classify` | Erlang/Elixir/Core Erlang, disassembly, figli dell'archivio | I chunk di debug sopravvissuti determinano la fedeltà del sorgente |
| SWF / ABC | `as3.classify` | Struttura ABC, elenchi di istruzioni, pseudocodice AS3 | Gli obfuscator commerciali denominati rimangono solo rilevabili |
| Go | `go.classify` | Simboli, tipi, analisi garble e membri del filesystem incorporato | `go` per DWARF, BuildInfo e altri report dedicati |
| Swift / Objective-C | `swift-objc.classify` | Metadati, slice universali e dylib della shared cache | Potrebbero essere necessari file sub-cache/simboli affiancati; controlli diretti `swift`/`macho` |
| Packer nativi | `native.packer-unpack` | Immagine decompattata o modulo incorporato disponibile, simboli, firme, report di recupero | Solo i dispatch dei packer implementati eseguono l'unpack; i tier VM commerciali possono fermarsi al rilevamento |
| Immagini native | `native.image-classify` | Identità, simboli, firme, riscontri e un report pseudo-sorgente x86-64/AArch64 limitato | `native decompile` seleziona un comando completo di output del sorgente; i percorsi sorgente ARM32/MIPS32 sono diretti |
| Windows / OS/2 NE | `native.ne-structure` | Segmenti, entry, import e risorse | Recupero strutturale anziché decompilazione del sorgente |
| Perl / R / Tcl / Haxe / WSH | `scriptlang.classify` | Report linguistici, strutture recuperate e artefatti figli supportati | Le API delle librerie per formato espongono operazioni più fini |
| Nim / Zig / Crystal / D | `nativelang.classify` | Impronte linguistiche, simboli e struttura nativa parziale | La classificazione richiede marcatori linguistici sopravvissuti sufficienti |

Ad esempio, un'applicazione PyInstaller riconosciuta può progredire attraverso `pyinstaller.extract` → `pyarmor.unpack` → `py.decompile`; un APK attraverso l'estrazione dei membri → DEX → Java; e un'immagine nativa impacchettata attraverso l'unpacking → analisi linguistica o dell'immagine. Ogni freccia dipende da ciò che quel particolare livello produce effettivamente.```sh
disrobe passes
disrobe catalog python --json
disrobe auto input-directory/ --out recovered/ --batch-max-depth 6 --capture-stages
disrobe chain module.pyc --chain py.decompile --out python-source/

scan, frisk, taint, vulnmatch, la selezione esplicita source-target, il replay della mappatura e l'invocazione opzionale di backend esterni restano operazioni dedicate. Registro dei pass · Selezione della catena e layout dell'output.

Analizzare ed esportare il risultato

La mappa delle capacità copre gruppi di comandi e integrazioni. Il suo inventario leggibile dalla macchina collega sorgente, test, documentazione, stato di supporto e demo. Il riferimento CLI copre i comandi annidati; i flag globali coprono le opzioni condivise. Usa disrobe <command> --help per l'interfaccia della tua build installata.

Anche i comandi di progetto e servizio sono indicizzati lì: serve, plugin, init, config, catalog, passes, doctor, install, install-deps, self-update, completions, man, explain e bug-report. Usa doctor per sondare da 46 a 51 strumenti esterni a seconda della piattaforma e identificare i backend opzionali mancanti.

Usa lo stesso ripristino nel tuo flusso di lavoro

Confrontare gli strumenti

La tabella mappa ogni attività di ripristino ai comandi di Disrobe e agli strumenti correlati. I decompilatori installati e gli artefatti esportati forniscono i punti di integrazione mostrati di seguito.

L'inventario dei confronti elenca i confronti a input condiviso ancora in sospeso. Le opzioni dei backend sono documentate in installazione e nelle guide dei linguaggi collegate sopra.

Confronti misurati tra strumenti

Le misurazioni usano gli input fissati, le versioni degli strumenti e le regole di scoring collegate di seguito. I conteggi DEX e JAR misurano la compilazione delle regioni emesse da ciascuno strumento. Quelle popolazioni differiscono, quindi i loro conteggi non classificano la qualità del ripristino. Il recall dei segreti APK usa la stessa ground truth di otto token.

Input, risultati grezzi degli strumenti e comandi di riproduzione.

Dai a Ghidra l'eseguibile recuperato

La stessa analisi Ghidra 12.1.2 vede codice diverso dopo che Disrobe esporta un eseguibile pacchettizzato come PE ricostruito. Questi snapshot locali usano fixture pacchettizzate reali e benigne e registrano sia aumenti sia diminuzioni. Le colonne funzioni/istruzioni/stringhe provengono dallo snapshot di analisi a nove input; i rendering C completati provengono dallo snapshot separato del decompilatore a sei input. Un rendering completato è output non vuoto, non un voto di correttezza del sorgente.

I conteggi di kkrunchy diminuiscono. Più funzioni scoperte non sono necessariamente più funzioni corrette, e questi conteggi di analisi non sostituiscono un confronto byte per byte. Leggi lo snapshot di analisi, lo snapshot del decompilatore e le separate misurazioni di ripristino byte nativo.

Ispezionare le evidenze

L'indice delle evidenze collega le misurazioni di ripristino alle loro fixture, metodi di confronto, comandi e risultati.

I risultati distinguono ripristino byte, accettazione del compilatore e controlli comportamentali. L'accettazione del compilatore e i conteggi di copertura non sono punteggi di equivalenza.

Dettagli di scoring JADX/CFR e comandi di riproduzione

Ripristino verificato rispetto a riferimenti indipendenti

Questi controlli misurano Disrobe rispetto a un artefatto originale, un compilatore, un interprete o un corpus etichettato. Sono distinti dal confronto tra due decompilatori. Ogni risultato collegato registra la popolazione di input, i prerequisiti e il comando di riproduzione.

Conteggi di copertura e le loro popolazioni di correttezza più piccole| Superficie | Conteggio | Cosa stabilisce | |---|---|---| | PyArmor | 72 / 72 wrapper denominati v8/v9 default-trial | Decifratura statica e parsing completo del `CodeObject` radice, senza un confronto esterno di correttezza | | Android, tre APK reali | 83662 / 83943 metodi abbassati, locale | Copertura dei corpi auto-dichiarata. La popolazione separata del verificatore è di 2988 su 2998 corpi presentati in carrier isolati | | Inventario istruzioni Wasm | 1034 su 1034 istruzioni | Denominatore esterno `wasm-tools` e WAT riassemblabile; il numeratore del lowering è auto-contato | | Tabella istruzioni Luau | 86 su 88 voci sollevate | Tabella dichiarata da Disrobe; `BREAK` e `NEWCLASSMEMBER` restano decodificati ma non risolti | | Simboli Swift | La popolazione di simboli committata viene resa in stringhe fissate | Coerenza di regressione, senza confronto esterno richiesto con un demangler | | Flattening OLLVM | 9 stati raggiunti su 9 stati derivati | Copertura degli stati del dispatcher su due funzioni committate; entrambi i conteggi sono derivati in-process | | Aritmetica booleana mista | 316 voci; l'esecuzione di riferimento ha risposto a 247 e rifiutato 69; un solver esterno ha dimostrato 236 risposte e confutato nessuna | Recupero con budget e originali tenuti da parte; le voci senza risposta o non dimostrate non diventano risultati dimostrati dal solver | | Container | 42 route generiche scrivono byte dei membri | Ampiezza esercitata all'interno dei 103 formati rilevati; LUKS1 ha un proprio confronto in chiaro |

I record di evidenza completi descrivono ciascuna popolazione e regola di valutazione.

Le etichette dei grafici usano strong per un riferimento di correttezza indipendente, recompile-only per l'accettazione del compilatore e coverage-self-reported per i contatori di copertura di Disrobe stesso. Il metodo di confronto e la popolazione definiscono l'ambito di ciascun risultato.

Consulta i risultati, i confronti tra strumenti e i prerequisiti di riproduzione per le singole misurazioni.

Conoscere i limiti

  • L'output compilato perde informazioni. Commenti originali, formattazione, nomi e alcune informazioni sui tipi possono essere assenti.
  • Il riconoscimento della famiglia è più ampio del recupero. Una corrispondenza nel catalogo o un parser riuscito possono coesistere con un'emissione parziale del sorgente. Leggi il livello della famiglia e il risultato effettivo.
  • Il recupero nativo dipende dall'architettura e dal linguaggio di output. La guida nativa elenca i percorsi supportati e i relativi test.
  • Il rilevamento di VM-protector commerciali non è una promessa generale di recupero del sorgente. Helper interni e artefatti di sezioni protette non stabiliscono un percorso completo di recupero CLI. Vedi unpacking nativo.
  • Le chiavi mancanti restano mancanti. Chiavi derivate a runtime e seed di name-hashing assenti non possono essere inferiti da un artefatto non supportato. Le guide Python, PHP e container indicano i confini specifici del formato.
  • I backend esterni hanno i propri requisiti. Alcuni comandi possono selezionare strumenti installati tramite --backend auto. Controlla l'help del comando e la guida all'installazione prima di scegliere un backend.
  • L'analisi predefinita è il recupero statico. Questo non rende innocuo un input non attendibile. Limiti di risorse, operazioni dinamiche esplicitamente selezionate e confini dei processi esterni sono descritti in sicurezza forense.

Comprendere la pipeline

Le rappresentazioni intermedie di Disrobe, dai byte attraverso la struttura del programma fino al sorgente

Il chain runner collega pass a scopo singolo tramite artefatti condivisi e rappresentazioni intermedie. Un pass contribuisce con l'output che può giustificare; i consumatori a valle conservano la provenienza e segnalano i confini non supportati. Esplora l'architettura, il modello dei pass, la scala IR e il chain runner.

Documentazione e contributi

Inizia con la documentazione, la guida rapida e la guida ai risultati. Usa disrobe explain <code> per cercare una diagnostica. Per modifiche al progetto, leggi la guida ai contributi e i test e le evidenze della funzionalità pertinente.

Il modello di minaccia descrive i confini di fiducia e la gestione degli input. Segnala problemi di sicurezza tramite SECURITY.md. LEGAL.md descrive le considerazioni legali del progetto; il permesso di analizzare un artefatto dipende dalle tue circostanze.

Licenza

License: Disrobe Source-Available

Ogni versione di Disrobe è proprietaria e source-available secondo la Disrobe Source-Available License, Version 1.1, che sostituisce la Elastic License 2.0 e la Version 1.0 per tutte le versioni e revoca tutte le concessioni precedenti come indicato nell'avviso di relicensing.

Progetti personali per hobby, apprendimento personale e ricerca di sicurezza indipendente non retribuita da parte di individui, istruzione e ricerca senza scopo di lucro e giornalismo in buona fede sono gratuiti, come definito nella licenza.

Qualsiasi uso da parte di o per conto di un'azienda richiede una licenza a pagamento. Vedi licenza commerciale.

Attribuzione richiesta: Questo lavoro ha utilizzato Disrobe, creato da 1-3-7: https://github.com/1-3-7/disrobe

Fork diversi dai fork di contribuzione, ripubblicazione, rebranding, rivendita, hosting e sviluppo concorrente sono vietati. Il software è fornito così com'è, a rischio dell'utente.

Vedi attribuzione, termini per i contributori, riepilogo e avvisi di terze parti.

Copyright (c) 2025-2026 1-3-7. Tutti i diritti riservati.

I commit di sviluppo precedenti sono stati consolidati in una singola baseline come parte dell'aggiornamento di documentazione e grafica.

Scarica lo strumento
AttivitàComandiOutput o passaggio successivo
Trovare indicatori, segreti e risultati staticiscan, frisk, strings, ioc, indicators, behaviorRisultati e offset
Ispezionare funzioni, flussi e comportamentoquery, capabilities, taint, vulnmatchIR interrogabile, mappature ATT&CK/MBC e report source-to-sink
Conservare annotazioni e artefatti strutturatiannot, rename, envelope, verify, yaraEnvelope degli artefatti e stato dell'analista
Seguire la provenienza e confrontare le esecuzionichain, context, status, report, diff, guard, semdiffReport, hash e differenze di ripristino
Raccogliere dati di rete pubbliciprowlRaccolta di rete esplicita, separata dal ripristino offline
SuperficiePunto di ingressoGuida
RustTipi core condivisi e singoli crate dei passAPI della libreria
PythonBinding tipizzati tramite import disrobeBinding Python
HTTP, gRPC e LSPdisrobe serveServizio
Model Context Protocoldisrobe-mcp o disrobe serve --mcpIntegrazione MCP
Editor e strumenti di analisiVS Code, IDA Pro, Ghidra, Binary NinjaIntegrazioni per editor
GitHub ActionsAction del repository e output SARIFGitHub Action
Controlli locali dei commitHook ID disrobepre-commit
BrowserWorker Wasm lato clientPlayground
Contesto di progetto per strumenti di codingdisrobe init --ideSidecar dei metadati
Attività di ripristinoStrumenti citatiPercorso di DisrobeCome sceglierli o combinarli
Bytecode Python in sorgentepycdc, PyLingual, uncompyle6, decompyle3Decompilatore CPython 1.0-3.15 in-process, ripristino di code-object annidati, output sorgente/disassembly/ASTIspeziona sorgente, disassembly e AST recuperati dal decompilatore Python integrato
Estrazione di Python congelatopyinstxtractor-ng, pydecipherEstrazione PyInstaller, Nuitka e freezer seguita dal ripristino del bytecodeauto può proseguire dal membro estratto attraverso un protector fino al decompilatore Python
PyArmorPyarmor-Static-Unpack-1shotRipristino statico di wrapper/runtime, report delle modalità, lifting BCC statico opzionaleFornisci il runtime corrispondente per recuperare i dati del wrapper e ispezionare i risultati specifici della modalità
Ispezione di Picklefickling, pickletools di PythonTraccia delle istruzioni, riduttori simbolici, classificazione e ricostruzione dei valoriIspeziona senza eseguire i riduttori; pickletools valuta l'ispezione e CPython verifica la ricostruzione su 470 fixture generate
Deoffuscamento JavaScriptwebcrack, synchrony, REstringerobfuscator.io, JS-Confuser, pattern Jscrambler supportati, decoder esoterici, ripristino di costanti/control-flowUsa js deob per opzioni esplicite o auto quando il JS è dentro un pacchetto
Unbundling JS e source mapwakaru, webcrack, sourcemapperEstrazione dei moduli, gestione delle source-map, rinomina scope-aware, ispezione V8 pacchettizzatojs unbundle espone più route di bundler rispetto all'invio automatico della catena
WebAssemblyWABT wasm-decompile, BinaryenPseudo-sorgente WAT e C/Rust/TypeScript, riepiloghi JSON, inversione di offuscamento supportataIspeziona un source target selezionato; l'esecuzione con wasmtime verifica il comportamento recuperato in modo indipendente
Sorgente JVMCFR, Vineflower, Procyon, FernflowerRipristino nativo dei classfile più gestione di protector/stringhejvm decompile scrive artefatti Disrobe accanto all'output di un backend installato; CFR ha un risultato misurato di compile-yield di seguito
Pacchetti Android e DEXJADX, apktool, androguard, dex2jarRipristino Dalvik in-process, metadati/firme APK, estrazione a runtime, output JavaLa decompilazione DEX/APK usa per default il percorso nativo; un backend Android viene selezionato esplicitamente. JADX ha una gamba misurata di seguito
Assembly .NETILSpy, dnSpy, dnSpyEx, de4dotRipristino CIL più costanti specifiche del protector, risorse, corpi VM e metadati Native AOTdotnet decompile scrive l'output CIL di Disrobe accanto a un renderer installato; --backend auto seleziona ILSpy, dnSpyEx, dnSpy o de4dot
Decompilazione nativaGhidra, IDA, Binary NinjaPseudo-C x86-64 C/Rust e AArch64/ARM32/MIPS32 in-process; report di simboli/tipi recuperatiSeleziona Ghidra headless con --backend ghidra, oppure usa le integrazioni per editor e i simboli esportati in una sessione di analisi interattiva
Eseguibili nativi pacchettizzatiupx -d, unipacker, Detect It EasyUnpacker implementati ed emulazione bounded dello stub, immagini PE ricostruite, moduli loader incorporatiEsporta le immagini PE recuperate in Ghidra/IDA. Le misurazioni Ghidra di seguito confrontano gli input pacchettizzati e ricostruiti
Offuscamento nativoGhidra, IDA, Binary Ninja e script di deoffuscamentoTrasformazioni OLLVM/Tigress, semplificazione MBA, stack strings, metadati nativi e report di ripristinoSeleziona l'operazione/API nativa pertinente; una sola fingerprint di VM-protector non implica il ripristino del corpo
Metadati Go e garbleGoReSym, redress, gorepclntab, metadati di modulo/tipo, file incorporati e literal garble recuperabiligo riporta nomi/tipi; native decompile gestisce separatamente il percorso sorgente del codice macchina
Swift / Objective-Cswift-demangle, class-dump, jtool2Dati runtime di classi/protocolli/selector, rendering dei simboli, fat slice, dylib in shared-cacheFornisci mapping sopravvissuti e file sub-cache; i nomi originali cancellati dalla rinomina richiedono una mappa esterna
Bytecode e VM Luaunluac, luadec, LuaDec51Sorgente Lua/LuaJIT/Luau più offuscatori supportati e ripristino di VM personalizzateIronBrew2 ha evidenza di differenziale di esecuzione con strumenti reali; il ripristino di .luac ordinario e il ripristino di VM sono operazioni diverse
Bytecode RubyDisassembly MRISorgente YARV e mruby, elenchi di opcode, classificazione freezer/AOTLa ricompilazione MRI valuta il recall dei nomi degli opcode; quella misura non stabilisce l'equivalenza di esecuzione
Livelli PHPphp-malware-finderPeeling di catene eval e loop/cifrari a chiave letterale, estrazione Phar, report di envelope degli encoderUsa i livelli statici e il materiale di chiave disponibile; i payload commerciali con chiave del loader nativo restano sigillati
PowerShell, Bash, VBAPowerDecode, strumenti FLARE, olevbaDeoffuscamento di shell, sorgente/p-code VBA e stomping, formule XLM, azioni PDFshell colloca il ripristino degli script e i risultati sui documenti accanto al resto dell'analisi degli artefatti
BEAM / ActionScriptbeam_disasm di Erlang, RABCDAsmRipristino di debug-source/Core Erlang di BEAM e pseudocodice dei corpi dei metodi ABCConserva i chunk di debug quando disponibili; BEAM stripped ha un controllo separato di esecuzione con Erlang reale
Hermes / React Nativehermes-dec, hbctool, DroidSawEstrazione a runtime, struttura HBC, lifting pseudo-JavaScript supportatoIl parsing HBC copre da v60 a v96; il lifting del sorgente ha un confine misurato più ristretto. Il taint del bridge Hermes-to-DEX non è implementato
Flutter / Dart AOTreFlutter, Darter, blutterTabelle sorgente del Kernel, grafo delle dichiarazioni AOT, corpi ARM64, stringhe, parsing delle rename-mapSorgente Kernel e metadati AOT sono livelli di ripristino diversi; le versioni degli snapshot vincolano il parsing AOT
Container e firmwarebinwalk, unblob, 7-ZipEstrazione di formati registrati, routing ricorsivo dei figli, decodifica/carving del firmware, report di rifiuto per membroPassa i membri estratti direttamente ai pass dei linguaggi; confronta i byte dei membri invece di trattare una magic riconosciuta come estrazione riuscita
Segreti e indicatoriAPKLeaks, TruffleHog, Gitleaks, LinkFinderRisultati su albero recuperato/APK, offset dei token, stringhe statiche, report di segreti e IOCScansiona l'APK o l'albero recuperato; confronta APKLeaks con gli stessi segreti piantati di seguito
Identificazione di formato, packer, compilatoreDetect It Easy, TrID, PEiD, binwalkIdentificazione multi-segnale, simboli, firme e suggerimenti di routingUsa identify/detect per selezionare un percorso di ripristino, poi ispeziona il suo output effettivo
Capacità e taintcapa, script Ghidra, JoernRisultati ATT&CK/MBC con offset, query su IR normalizzato, report di flusso source-to-sinkEsegui il matching delle capacità e l'analisi source-to-sink sugli artefatti recuperati; il report di taint include la sua popolazione di test Juliet
Strumento e inputRisultato DisrobeRisultato dello strumento citatoCosa verifica la misurazione
JADX 1.5.5 · Android DEX157 / 228 regioni emesse compilano senza errori281 / 303 regioni emesse compilano senza erroriDEX EdgeCases committato; javac reale, compilazione dell'intero sorgente poi isolamento bounded delle regioni che bloccano l'attribuzione; popolazioni emesse diverse
CFR 0.152 · JVM classfile181 / 181 regioni emesse compilano senza errori152 / 166 regioni emesse compilano senza erroriJAR EdgeCases committato; la stessa procedura di compilatore/scorer; popolazioni emesse diverse
APKLeaks 2.6.3 · APK con segreti piantati8 / 8 segreti piantati5 / 8 segreti piantatiRecall a token esatto sullo stesso APK; Disrobe trova anche la chiave di accesso segreta AWS piantata, la credenziale Basic e il JWT
Input pacchettizzatoFunzioni Ghidra, pacchettizzato → ricostruitoIstruzioni, pacchettizzato → ricostruitoStringhe, pacchettizzato → ricostruitoRendering C completati, pacchettizzato → ricostruito
UPX · Rust hello4 → 287225 → 19.06023 → 1794 → 287
ASPack · Clockres5 → 24358 → 10.54448 → 1165 → 210
ASPack · AccessEnum5 → 10173 → 5.78162 → 1955 → 101
PECompact · Clockres2 → 306148 → 14.60327 → 271 → 267
PECompact · AccessEnum2 → 186155 → 9.27852 → 532 → 186
MEW · Clockres4 → 333125 → 20.9903 → 358Non misurato
MEW · AccessEnum4 → 152125 → 9.5923 → 802Non misurato
MEW · Autologon4 → 295125 → 19.5953 → 406Non misurato
kkrunchy classic · NASM hello4 → 1149 → 103 → 44 → 1
InputRegioni emesse da DisrobeRegioni emesse dallo strumento citatoConfine della popolazioneRiproduci
Android DEX157 / 228 regioni emesse compilano senza erroriJADX 1.5.5: 281 / 303 regioni emesse compilano senza errorinessuna classifica tra strumenti: ogni strumento ha la propria popolazione di regioni emessecargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
JVM classfile181 / 181 regioni emesse compilano senza erroriCFR 0.152: 152 / 166 regioni emesse compilano senza errorinessuna classifica tra strumenti: ogni strumento ha la propria popolazione di regioni emessecargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
RipristinoRisultato registratoRiferimento e limite
Python 3.14.5, moduli fissati6077 di 6286 code objectRicompilazione CPython con confronto normalizzato della struttura degli opcode; jump target, la maggior parte degli operandi e oggetti recuperati aggiuntivi non sono valutati. Risultato
Python 3.14.5, popolazione core fissa17396 di 18276 code object, misurazione localeLo stesso confronto normalizzato su 574 moduli; questo non è un risultato di equivalenza semantica. Risultato
Python legacy 1.0-3.7almeno 150 di 191 fixture (soglia di regressione)Ricompilazione con interprete del periodo o token strutturali rispetto al sorgente originale. Risultato
Classificazione Pickle102 / 102 fixture di classificazioneSemantica di pickletools. Risultato
Ricostruzione Pickle470 / 470 fixture ricostruite superano i controlli di uguaglianza alla riesecuzioneRiesecuzione CPython. Risultato
Compilazione sorgente JVM131 di 131 metodi compilanojavac reale. Risultato
Comportamento JVM117 / 131 metodi corrispondono all'esecuzione osservataJVM reale; otto metodi divergono e sei non sono pilotati in isolamento. Risultato
Android DEX118 / 118 classi presentate al verifierJVM -Xverify:all; 37 di 155 classi sono link-skipped e non valutate. Risultato
.NET C#18 / 35 tipi EdgeCases completi ricompilano standaloneRoslyn csc reale; sorgente legale non stabilisce comportamento equivalente. Risultato
Corpi VM .NETModello Eazfuscator: 67 / 67 istruzioni; KoiVM reale: 6 / 6 corpi sollevatiRiferimenti separati originali/clean-build; EazVM usa un virtualizer nel repository, KoiVM usa l'output di uno strumento reale. Evidenza
WebAssembly57 / 57 funzioni idoneewasmtime confronta return, trap e i primi 4.096 byte della memoria lineare sugli input di test. Risultato
BEAM senza chunk di debug19 / 19 moduliRicompilazione Erlang/OTP 27.3.4, confronto degli export e output/stato di uscita di test/0. Risultato
Lua IronBrew2Output reale 2.7.0 standard e MAX recuperato a esecuzione corrispondenteInterprete Lua reale rispetto ai programmi originali; una famiglia di VM. Risultato
Ruby YARVGreeter 100%; megafile 98,67% di recall dei nomi degli opcodeRicompilazione MRI; il recall multiset ignora ordine, operandi, branch target e istruzioni extra. Risultato
Nomi di tipo Go stripped838 di 838 nomiMetadati reali go1.26.3 dalla build di confronto. Risultato
Hermes HBC v968 di 8 funzioni, zero operazioni di fallbackCampione hermesc reale con sorgente originale e nomi delle funzioni. Risultato
Byte nativi pacchettizzatiUPX, FSG, NSPack, Petite, MPRESS .text byte-identico su coppie committate citate; risorse di Yoda's Crypter byte-identicheByte originali allineati a RVA; i residui di immagine intera e risorse restano riportati separatamente. Tabella per input
Indicatori piantati6 / 6 categorie IOC rappresentateEndpoint committati, risultati nel manifest, URL, IPv4, email e ground truth .onion. Risultato
Grafo di chiamata MCP5 / 5 archi diretti, tutti identificati correttamenteELF stripped confrontato con il suo gemello distinto non stripped della toolchain. Precisione, recall
Taint nativo93 / 190 flussi etichettati richiamati; zero falsi positivi, misurazione localeSlice NIST Juliet CWE-78 char/system, gcc 16.2.0 -O2; sette categorie di flusso dichiarate non hanno casi in questa slice. Risultato