Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
disrobe — Suíte CLI em Rust que descompila estaticamente, desofusca e desempacota código nativo, bytecode, scripts, firmware e pacotes de aplicativos em mais de 15 ecossistemas por meio de um único pipeline automático. | Kitploit
Ferramentas/GitHubGitHub/1-3-7/disrobe
Segurança AndroidAnálise EstáticaEngenharia ReversaAnálise de MalwareSegurança MóvelAnálise de BináriosAnálise de Firmware
GitHub1-3-7/disrobe

disrobe

Suíte CLI em Rust que descompila estaticamente, desofusca e desempacota código nativo, bytecode, scripts, firmware e pacotes de aplicativos em mais de 15 ecossistemas por meio de um único pipeline automático.

Ver Repositório
11362há 5 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site
disrobe: recupere código-fonte, estrutura e bytes de software compilado

Começar · Entradas suportadas · Recuperação automática · Comparação de ferramentas · Evidências · Documentação

Veja o software por baixo

Disrobe é uma suíte de linha de comando em Rust para descompilar, desofuscar e desempacotar software. Use-a para triagem de um arquivo desconhecido, recuperar código para engenharia reversa, extrair indicadores para uma investigação ou preparar artefatos para um desassemblador.

Recupere Python de bytecode e aplicações congeladas, Java de classfiles e DEX, C# de CIL, JavaScript de bundles, Lua de máquinas virtuais personalizadas e C ou Rust de código nativo. Extraia arquivos de instaladores, firmware, pacotes móveis e aplicações Electron, Tauri ou Wails. Mantenha código-fonte recuperado, símbolos, strings, tipos e proveniência juntos para análises posteriores.

A compilação completa cataloga 170 famílias em 15 ecossistemas e detecta 103 formatos de contêiner. disrobe auto identifica cada camada, executa uma passagem correspondente e segue os filhos recuperados em seus próprios caminhos de recuperação. Comandos dedicados expõem controles mais refinados, relatórios de análise e backends opcionais. A recuperação é executada estaticamente por padrão; código-fonte, estrutura, saída parcial e limites de chaves ausentes permanecem distinguíveis no resultado.

Se o Disrobe for útil para você, considere dar uma estrela ao repositório.

Veja em ação

Disrobe CLI: desempacote, recupere e inspecione software

Assista ao vídeo completo · Leia a transcrição

Vinte comandos de CLI em 2 minutos e 12 segundos: desempacote um executável nativo, recupere Python e Lua, divida módulos JavaScript, restaure source maps, inspecione WebAssembly e recursos Android, extraia indicadores e preserve relatórios e hashes de artefatos. O capítulo final mostra configuração de projeto, configuração de IDE, anotações de analista e completions de shell. A transcrição inclui o inventário completo de comandos da compilação gravada; o mapa de capacidades explica seus limites de suporte.

Começar

Baixe o arquivo para sua plataforma em GitHub Releases, verifique-o em relação ao SHA256SUMS da release e coloque disrobe no seu PATH. Os arquivos de release incluem pacotes de assinatura; o guia de verificação explica como inspecioná-los.

PlataformaAlvos de release
Windowsx86-64, ARM64
macOSx86-64, ARM64
Linuxx86-64 e ARM64 com glibc; x86-64 com musl

Verifique o binário que você instalou:```sh disrobe --version disrobe --help

root@kitploit:~
Para compilar a CLI a partir de um clone, instale o toolchain Rust do repositório e os [pré-requisitos de compilação nativos](https://github.com/1-3-7/disrobe/blob/main/docs/src/installation.md), depois execute:```sh
cargo build --locked --release -p disrobe-cli --bin disrobe

O executável é target/release/disrobe, ou target/release/disrobe.exe no Windows. Consulte o guia de instalação para sinalizadores de recursos e builds enxutos.

Recuperar uma aplicação

Comece com uma aplicação, biblioteca ou pacote. Identifique-a, recupere suas camadas reconhecidas e, em seguida, inspecione o resumo da recuperação:```sh disrobe identify path/to/application disrobe auto path/to/application --out recovered/ --capture-stages disrobe context --out recovered/

root@kitploit:~
`identify` reporta o formato e os sinais disponíveis. `auto` extrai e recupera as camadas reconhecidas. `context` resume as passagens resultantes, a confiança e a proveniência. Com `--capture-stages`, inspecione cada estágio em `recovered/01-*/`, `recovered/02-*/` e `recovered/final/`; `chain.json` registra a topologia e os hashes, e `recovery.json` registra os resultados e os tempos.

Use um comando dedicado quando você souber a saída de que precisa:```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/

O decompilador nativo emite C por padrão em x86-64; --format rust seleciona Rust. AArch64, ARM32 e MIPS32 emitem pseudo-C. native export reconstrói imagens PE empacotadas suportadas para uma ferramenta de análise externa; webview grava a árvore de recursos do frontend recuperada sem iniciar a aplicação.

Experimente um artefato pequeno e inspecionável

O repositório inclui um pequeno módulo WebAssembly para o playground do navegador. A partir de um clone, com a CLI completa no seu 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:~
O primeiro comando grava `add.summary.json`; o segundo grava texto WebAssembly em `add.lifted.wat`. A recuperação automática
seleciona uma cadeia disponível e grava seus artefatos em `recovered/`; `--capture-stages` retém
resultados intermediários. Essas operações inspecionam o módulo sem executar sua função exportada.

Inspecione os arquivos recuperados junto com o relatório: a identificação por si só não estabelece a recuperação. Constructos não suportados, material de chave ausente e cadeias indisponíveis aparecem no resultado. O [guia de resultados](https://github.com/1-3-7/disrobe/blob/main/docs/src/reading-a-result.md) explica artefatos, diagnósticos, resultados parciais e proveniência.

[Abra o playground no navegador](https://1-3-7.github.io/disrobe/playground/) · [Siga o guia de início rápido](https://github.com/1-3-7/disrobe/blob/main/docs/src/quickstart.md)

## Encontre sua entrada

**Recuperar** significa que um caminho alcançável emite código-fonte, bytes ou estrutura. **Parcial** significa que recupera apenas parte dessa informação. **Somente detecção** significa que identifica a família sem recuperar seu corpo protegido. Esses níveis descrevem operações sobre entradas suportadas; um nome de família por si só não é garantia de que toda versão ou configuração seja recuperada. As listas abaixo incluem o catálogo completo de famílias e formatos adicionais expostos por comandos e extratores dedicados.

| Entrada | Recuperação e saída | Comandos e guia |
|---|---|---|
| Python | Bytecode CPython 1.0 a 3.15 e marshal para código-fonte; desmontagem de PyPy, MicroPython `.mpy` v0 a v6, Jython, IronPython e Brython; extração de payload congelado; nomes, assinaturas e fallback estrutural de 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 | Desofuscação de código-fonte, reversão de minificação, divisão de módulos, source maps, inspeção de dados em cache do V8 e de runtime empacotado | `js` · [JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) |
| WebAssembly | `.wasm` para WAT, Rust, TypeScript, pseudo-código C ou JSON; inspeção de Component Model e grafo de tipos GC; reversão de ofuscação suportada | `wasm` · [WebAssembly](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) |
| JVM / Android | `.class`, JAR, DEX, APK, AAB; código-fonte Java, idiomas Kotlin/Scala, informações de manifesto e assinatura, relatórios de protetores e sidecars de mapeamento | `jvm`, `apk` · [JVM e Android](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/jvm-android.md) |
| .NET | Metadados PE/CLR e CIL para pseudo-código C#, F# ou VB; inspeção de ReadyToRun e Native AOT; extração de bundle de arquivo único | `dotnet` · [.NET](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/dotnet.md) |
| Nativo | Identificação ou análise de PE32/PE64, EFI PE, ELF32/ELF64, módulos de kernel, Mach-O thin/fat, COFF, MZ, NE, LE, LX e código bruto; emissão de código-fonte nos caminhos específicos de arquitetura acima | `native`, `macho`, `semdiff` · [Nativo](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md), [decompilação](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-decompile.md) |
| Go | Metadados de runtime PE/ELF/Mach-O, nomes de funções e tipos removidos, arquivos `embed.FS`, relatórios de garble e literais recuperáveis | `go` · [Go](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/go.md) |
| Swift / Objective-C | Classes, protocolos, campos, seletores, símbolos desmangled de Mach-O; slices universais; dylibs de cache compartilhado 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); código-fonte e relatórios de fidelidade por entrada; recuperação de VM e strings suportada | `lua` · [Lua](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/lua.md) |
| PHP | Descasque de cadeia de código-fonte/eval, loops de decodificação de chave literal e camadas AES, extração de Phar, recuperação de `op_array` serializado; envelopes de codificadores comerciais permanecem limitados por chave | `php` · [PHP](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/php.md) |
| Ruby | Binários InstructionSequence MRI/YARV 2.6 a 3.4 e bytecode mruby RITE para Ruby; classificação de freezer e AOT | `ruby` · [Ruby](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/ruby.md) |
| Erlang / Elixir | Módulos BEAM e arquivos EZ; código abstrato sobrevivente ou `Dbgi` para código-fonte, fallback para Core Erlang, listagem de instruções | `beam` · [BEAM](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/beam.md) |
| ActionScript 3 | Blocos `DoABC` de SWF FWS/CWS/ZWS e bytecode ABC bruto para desmontagem e pseudocódigo AS3 | `as3` · [ActionScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/as3.md) |
| Runtimes móveis | Análise de cabeçalho Hermes v60 a v96, lift de pseudo-JavaScript v62/v71/v74/v76/v83/v84/v89/v96; corpos de código-fonte do kernel Dart do Flutter; declarações, strings e desmontagem de AOT ARM64 | `hermes`, `flutter`, `mobile` · [Móvel](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md) |
| Shell / documentos | PowerShell, Bash, Batch, VBScript, WSH; p-code e stomping de VBA3/5/6/7; código-fonte de macros do Office, fórmulas XLM BIFF8/BIFF12, scripts/ações incorporados em PDF | `shell` · [Shell e documentos](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md) |
| Outros artefatos de linguagem | Op-trees/bytecode de Perl, metadados RDS e Rcpp de R, starkits de Tcl, saídas JS/SWF/HashLink/Neko de Haxe; impressões digitais, símbolos e estrutura parcial de Nim, Zig, Crystal e D | `auto`, APIs de biblioteca · [Linguagens de script](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/shell.md), [nativo](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) |
| Python pickle | Desmontagem de protocolo, rastreamento simbólico, reconstrução e classificação sem chamar redutores de pickle | `pickle` · [Pickle](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/pickle.md) |
| Arquivos / firmware / frontends | A lista completa de contêineres abaixo; Electron ASAR, mapas incorporados Tauri v1/v2, árvores `embed.FS` do Wails v2 | `extract`, `webview`, `auto` · [Contêineres](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: todos os freezers, protetores e ofuscadores de código-fonte nomeados</strong></summary>

| Família ou formato | Suporte e pré-requisito |
|---|---|
| PyInstaller 2.x a 6.20+ | Recupera arquivos incorporados e bytecode, incluindo camadas AES-CTR/CFB suportadas |
| Nuitka onefile, standalone, module, wheel | Extrai payloads onefile; recupera símbolos e estrutura visível ao Python a partir de formas compiladas |
| cx_Freeze, py2exe, shiv, pex, Briefcase | Extração de empacotadores via `pyfreeze`; o comando permanece experimental |
| PyOxidizer | Extração experimental, não validada |
| SourceDefender `.pye` | Descriptografia estática via `py sourcedefender` e `sourcedefender.decrypt` |
| PyArmor v3 (DES legado), PyArmor v4 (misto legado), PyArmor v5 (AES legado) | Somente detecção: limite de chave encapsulada em RSA |
| PyArmor v6, PyArmor v7 | Recuperação estática parcial; modo super e chaves indisponíveis restringem a saída |
| PyArmor v8, PyArmor v9 / 9-Pro | Recuperação estática de wrapper onde o material de chave está disponível. O resultado publicado <!-- m:pyarmor_frac -->72 / 72<!-- /m --> conta apenas a decodificação completa do `CodeObject` raiz para wrappers nomeados v8/v9 de teste padrão; não estabelece equivalência de código-fonte nem cobre licença registrada/pro, BCC ou modo super |
| Kramer / Specter, Berserker, BlankOBF, PlusOBF, Wodx, pyobfuscate.com, pyobfuscate.com (2026 XOR/lambda), PyObfuscator (mauricelambert), Manglify, Oxyry, pyminifier, família de ofuscadores online, Xindex, Patchwork, pyc-zipper | Recuperação estática de código-fonte/loader via avaliador AST; camadas individuais e resíduos são reportados |
| Jawbreaker, ObfuXtreme | Recupera o corpo presente no artefato; payloads buscados em tempo de execução permanecem ausentes |
| python-obfuscator (PyPI), pyobfus, Pypacker | Descasque parcial de wrapper e classificação |

PyArmor pode precisar do arquivo de runtime correspondente ao lado do wrapper. Seu caminho BCC dedicado requer `--allow-bcc` e emite lifts nativos estáticos mais esqueletos Python para corpos modelados; a recuperação automática ciente do caminho pode publicar os mesmos artefatos BCC. Apenas o hook dinâmico do PyArmor v6/v7 executa código de amostra, atrás de `--allow-dynamic` com um watchdog. `--allow-bcc` permite apenas análise estática in-tree e não executa a amostra nem invoca ferramentas externas. [Detalhes de versão e modo](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/python.md#pyarmor).

</details>

<details>
<summary><strong>JavaScript, WebAssembly e aplicações web empacotadas</strong></summary>

| Família ou formato | Suporte e rota |
|---|---|
| obfuscator.io / javascript-obfuscator, JS-Confuser | Recupera arrays de strings suportados, transformações de dispatcher/controle de fluxo, predicados opacos e camadas de loader; comandos diretos e `js.deob` |
| Jscrambler, js-obfuscator (jsobfu) | Recuperação parcial de templates e transformações estáticas |
| JSFuck, aaencode, jjencode, JSFiretruck, Dean Edwards Packer | Decodificação estática via operações dedicadas e rotas de cadeia reconhecidas |
| JSDefender, Arxan / Digital.ai | Detecção e descasque parcial de transformações estáticas; operações de JS comercial protegido requerem a opção de autorização do comando |
| PACE | Somente detecção |
| webpack 4, webpack 5, Vite, Rollup, Rolldown, esbuild, Turbopack, Bun, Parcel, Browserify, SystemJS; módulos AMD | Desbundling/recuperação de módulos direta. A cadeia despacha webpack e Vite; marcadores de catálogo para outros bundlers não tornam essas rotas automáticas por si só |
| bytenode `.jsc`, Node SEA, nexe, nw.js | Inspeção/carving de dados V8 empacotados; Node SEA e bytenode têm ramificações de cadeia explícitas |
| Electron ASAR, Tauri v1/v2, Wails v2 | Recupera árvores de frontend incorporadas; Electron/Tauri usam `webview.carve`, Wails usa `go.classify`; `webview` direto lida com todos os três |
| Bun standalone, Deno eszip v2 a v2.3 / `deno compile` | Recupera grafos de módulos incorporados através dos respectivos leitores de contêiner; eszip também expõe um leitor Rust direto |
| Wobfuscator, Jscrambler WASM, wasm-mixer / Wasmixer | Reversão parcial de transformações suportadas via `wasm.deob`; fixtures em forma de ferramenta avaliam as transformações, sem saída comprometida dos próprios ofuscadores |
| Tigress → Emscripten, wasm-name-obfuscator | Detecta e classifica; o auxiliar Tigress está fora do caminho de execução do `wasm deob`, e nomes originais destruídos permanecem indisponíveis |

[Rotas JavaScript](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/javascript.md) · [Limites do Wasm](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/wasm.md) · [Layouts de frontend incorporado](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/webview.md).

</details>

<details>
<summary><strong>Packers, protetores e famílias de ofuscação nativos</strong></summary>

| Família | Suporte e rota |
|---|---|
| Donut, sRDI | Recupera o módulo incorporado a partir de layouts de shellcode-loader suportados |
| UPX, ASPack, Petite, MPRESS, FSG, PECompact, Yoda's Crypter, NSPack, MEW, kkrunchy | Rotinas de desempacotamento implementadas, acessíveis via `native unpack` e a cadeia de packers; a fidelidade varia por família e espécime |
| ASProtect, Morphine, nPack, NeoLite, PolyCryptor, Warzone Crypter | `StubEvalPending`: o comportamento do emulador tem evidência de stub construída por especificação; a recuperação real de packers de fornecedores não é validada e nenhum despacho de desempacotamento é anunciado |
| Yoda's Protector, VMProtect, Themida / WinLicense | CLI e auto somente detecção. Auxiliares Rust separados expõem carving assistido por original ou recuperação de seção protegida; eles não estabelecem devirtualização de programa inteiro |
| PE-Protector, PELock, Enigma Protector, Armadillo, Obsidium, WinLicense | Somente detecção |
| DotNetPatcher, NetCryptor | Delegam a camada gerenciada para a passagem .NET |
| OLLVM flattening, fluxo de controle falso, substituição de instruções; Tigress CFF | Transformações de desofuscação estática suportadas e relatórios via APIs Rust nativas; a análise aplicável aparece em relatórios de recuperação nativa |
| Alcatraz, Emotet CFF, Mirai, Dridex, Trickbot, obfus.h, Cryptify (rust-obfuscator), guardian-rs, obfusheader.h, obfuscxx, Amice | Assinaturas de ofuscação nativa nomeadas; auxiliares individuais de string/controle de fluxo têm recuperação mais restrita que a família detectada completa |

A análise nativa também recupera símbolos Rust/C++, RTTI e vtables de C++, modelos de objetos Delphi/C++Builder e recursos DFM, informações DWARF/PDB/STABS, imports, grafos de chamadas, assinaturas de criptografia e correspondências FLIRT. A análise de instruções abrange x86, ARM, RISC-V, MIPS, PowerPC, SPARC, eBPF e AVR; a emissão de código-fonte é o conjunto menor de arquiteturas listado acima. [Análise nativa](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native.md) · [Evidências de desempacotamento e recuperação de bytes](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/native-unpack.md) · [Desofuscação](https://github.com/1-3-7/disrobe/blob/main/docs/src/anti-analysis.md).

</details>

<details>
<summary><strong>Famílias de pacotes JVM, Android, .NET e móveis</strong></summary>

| Família | Suporte e pré-requisito |
|---|---|
| Zelix KlassMaster, Allatori, Stringer, DashO | Recuperação de strings para padrões suportados, seguida de descompilação de classfile |
| DexGuard | Detecção, descasque estrutural e emulação de descriptografia de strings em classe para constantes com chave suportadas |
| BlackObfuscator | Reconhecimento de dispatcher DEX e anotação de ordem de blocos |
| ProGuard / R8 | Reprodução de mapeamento para um sidecar de restauração de nomes; nomes originais requerem `mapping.txt` |
| yGuard, SkidSuite2, JBCO | Somente detecção |
| Promon SHIELD, Guardsquare DexGuard RASP, Guardsquare ThreatCast, Appdome, OneSpan, Arxan / Digital.ai, Zimperium zShield, Licel DexProtector | Identificação de RASP Android e relatórios estruturais |
| ConfuserEx2 | Recuperação de constantes em amostras reais e desflattening de controle de fluxo; recursos criptografados podem reter um limite de chave em tempo de execução |
| Eazfuscator.NET | Descriptografia de strings e lifting de VM avaliados por modelo; a fixture de VM vem de um virtualizador no repositório, não do produto comercial |
| KoiVM (ConfuserEx VM) | Corpos virtualizados elevados a CIL em saída comprometida de ferramenta real |
| ConfuserEx, Dotfuscator, Dotfuscator CE, SmartAssembly, Babel, DeepSea, Spices.Net, Goliath, Skater, .NET Reactor, CryptoObfuscator, ArmDot, Agile.NET, Obfuscar, DotNetPatcher, NetCryptor, BitMono | Detecção e recuperação parcial específica da família: nomes, strings, recursos ou estruturas de métodos. BitMono está no detector de protetores além do catálogo de cadeia .NET de 22 entradas |
| Themida (wrapper .NET), ILProtector, MaxToCode | Somente detecção para corpos com chave de loader nativo |
| React Native APK, React Native IPA; bytecode React Native Hermes | Extrai payloads JS/Hermes e encaminha bytecode suportado para o lift Hermes |
| Kernel Dart do Flutter; snapshot AOT do Flutter (`libapp.so`) | Recuperação de tabela de código-fonte do kernel; declarações AOT, metadados e desmontagem ARM64. A versão do snapshot e os nomes disponíveis restringem a recuperação |
| Xamarin / .NET MAUI APK, Apache Cordova APK, Capacitor APK, NativeScript APK | Identificação de runtime e extração de pacote/membro suportada |
| Android APK (`classes.dex`), Android app bundle (AAB / APKM / XAPK), IPA | Inspeção de pacote e extração de filhos; a recuperação downstream depende do runtime incorporado |

Os decodificadores de strings .NET para SmartAssembly, Spices.Net, Skater, .NET Reactor, Eazfuscator.NET e CryptoObfuscator são avaliados em algoritmos modelados, não em assemblies produzidos por fornecedores comprometidos. ConfuserEx2, Obfuscar e BitMono têm evidência real de assembly protegido. [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) · [Móvel](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/mobile.md).

</details>

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

| Família | Suporte e pré-requisito |
|---|---|
| IronBrew2 | Recuperação de VM, verificada diferencialmente por execução em saída real 2.7.0 standard e MAX |
| Prometheus | Recuperação parcial, incluindo árvores de despacho `Vmify` empilhadas suportadas |
| MoonSec V1, MoonSec V2, MoonSec V3, AztupBrew, DarkSec, Boronide, PSU, WeAreDevs LuaU, luaobfuscator.com, SLua (Unity Lua 5.3), Hercules | Recuperação parcial de Lua; evidência de VM em forma MoonSec usa um bootstrap sintético |
| Luraph | Somente detecção |
| Bytecode Luau, Garry's Mod Lua (GLua) | Reconhecimento de dialeto; lifting de Luau e recuperação parcial de GLua |
| ionCube, SourceGuardian, Zend Guard | Detecção de envelope PHP comercial; chaves residentes no loader permanecem um limite. Casos legados de chave estática podem produzir estrutura parcial de `op_array` |
| FOPO, Better PHP Obfuscator | Descasque estático de cadeia eval PHP, com requisitos de chave literal para camadas criptografadas |
| Invoke-Obfuscation (token), Invoke-Obfuscation (AST), Invoke-Obfuscation (string), Invoke-Obfuscation (encoding), Invoke-Obfuscation (compress); Invoke-Stealth, PowerHell, Chameleon, psobf | Recuperação estática de PowerShell |
| Invoke-Obfuscation (launcher), ISESteroids | Recuperação parcial de PowerShell |
| Bashfuscator (token), Bashfuscator (string), Bashfuscator (obfuscate), Bashfuscator (compress); indireção Bash (IFS/eval); node-bash-obfuscate (eval de tabela de chunks) | Recuperação estática de Bash |
| Ofuscação Batch (`%random%`), ofuscação Batch (indireção set); macro VBA (descompilação de p-code + stomping) | Descasque de Batch e recuperação de código-fonte/p-code de VBA |
| YARV InstructionSequence (`.rb` compilado), bytecode mruby RITE | Recuperação de código-fonte Ruby |
| Executável autoextraível OCRA, pacote RubyScript2Exe | Classificação/recuperação parcial de freezer |
| Classe compilada JRuby, imagem nativa TruffleRuby | Somente detecção através do catálogo Ruby |
| Arquivo BEAM (módulo compilado Erlang / Elixir), arquivo EZ (módulos `.beam` encapsulados em ZIP) | Extração de módulos, recuperação de código-fonte/chunk de depuração ou fallback para Core Erlang |
| garble | Metadados Go e literais suportados; o hash de nomes originais não pode ser revertido sem a seed ausente |
| Metadados Swift / Objective-C de Mach-O, binário Mach-O fat (universal), cache compartilhado dyld | Metadados de runtime, recuperação de slice e dylib |
| SwiftShield | Analisador de mapeamento; o mapeamento deve ser fornecido para recuperar nomes originais |
| SWF (Flash, FWS/CWS/ZWS) DoABC, bytecode ABC bruto | Desmontagem e pseudocódigo de corpo de método |
| secureSWF, DoSWF, Kindi, Irrfuscator, swfLock | Somente detecção |

[Catálogo de famílias](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>Todos os 103 formatos de contêiner registrados</strong></summary>

| Categoria | Formatos |
|---|---|
| Arquivos gerais | 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 |
| Arquivos de aplicação e linguagem | JAR, WAR, APK, XPI, WHL, EGG, CRX, NUPKG, VSIX, PYZ, Electron ASAR |
| Instaladores e imagens de aplicação | PKG, DMG, DEB, RPM, AppImage, Snap, Flatpak, MSIX/APPX, MSI, NSIS, Squirrel, Inno Setup, InstallShield, Enigma Virtual Box |
| Sistemas de arquivos e streams de sistemas de arquivos | SquashFS, cramfs, ext4, romfs, MinixFS, Android sparse, btrfs-send, EROFS, JFFS2, NTFS, UBI/UBIFS, YAFFS2, QNX, partclone |
| Imagens de disco e implantação | ISO, OCI, imagem Docker, VHD, VHDX, WIM, GPT, MBR, FAT12/16/32 |
| Streams de compressão | XZ, gzip, bzip2, zstd, LZMA, lzip, LZ4, zlib, Unix compress (`.Z`) |
| Dados de aplicação incorporados | Bun standalone, UnityFS, bundle de arquivo único .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 de firmware UEFI |
| Memória e volumes criptografados | Windows minidump, LUKS1 |

O registro declara detecção para todas as entradas. Dessas rotas, 102 usam o extrator genérico; <!-- roster-breadth:containers-exercised -->42<!-- /roster-breadth --> têm entradas comprometidas que alcançam bytes de membros, DMG tem evidência comprometida apenas de detecção, e 59 não têm entrada comprometida. LUKS1 é avaliado separadamente contra texto simples e requer uma chave de volume bruta `aes-cbc-plain` para descriptografia; sem uma, ele reporta o limite de chave. Métodos de compressão individuais, membros criptografados, volumes divididos e recursos de sistemas de arquivos têm limites mais restritos. StuffIt 5 atualmente retorna o blob do arquivo através da extração, embora seus decodificadores de fork existam. Conteúdo Airoha OTP-AES é extraído verbatim.

Leitores Rust adicionais expõem estruturas Deno eszip, Apple APFS/HFS+, overlays anexados a ELF e Blazor WebCIL; eles não são entradas extras na contagem de 103 formatos. [Rotas de extração, versões de métodos e limites](https://github.com/1-3-7/disrobe/blob/main/docs/src/languages/containers.md) · [Registro de contêineres](https://github.com/1-3-7/disrobe/blob/main/crates/disrobe-binfmt/src/container.rs).

</details>

## Recuperação automática`auto` escolhe um passe do registro compilado, executa-o e, em seguida, reidentifica sua saída e os filhos extraídos. Ele para no limite de confiança, em um hash de conteúdo repetido ou no limite de profundidade (oito por padrão). Relatórios e arquivos-fonte marcados como terminais permanecem como saídas em vez de serem realimentados na detecção. A tabela a seguir contabiliza todos os passes registrados por uma compilação completa; uma compilação enxuta pode omitir linhas controladas por recursos.

| Camada de entrada | IDs de passe registrados | Saída automática | Controles dedicados ou pré-requisito |
|---|---|---|---|
| Arquivos, instaladores, firmware, volumes | `binfmt.container` | Filhos extraídos, seguidos recursivamente em passes de linguagem/nativos | `extract` para relatórios de membros e a opção explícita de chave bruta LUKS1 |
| PyInstaller | `pyinstaller.extract` | Membros incorporados e filhos `.pyc` | `pyinstaller extract` para opções específicas de arquivo |
| Congeladores Python | `pyfreeze.extract`, `nuitka.extract` | Payloads extraídos ou estrutura de pacote compilado suportada | `pyfreeze` experimental; o sabor do Nuitka determina o que sobrevive |
| Python protegido | `pyarmor.unpack`, `sourcedefender.decrypt` | Texto simples/bytecode disponível, metadados ou relatórios de limite de chave | Material de runtime/chave correspondente; modo PyArmor dedicado e opções de rigor |
| Código-fonte e bytecode Python | `py.deob`, `py.decompile`, `py.disasm` | Código-fonte descascado, código-fonte descompilado ou rastreamento de instruções | `py decompile --emit source,disasm,ast`; um interpretador correspondente é necessário para verificações de recompilação |
| Pickle | `pickle.classify` | Análise simbólica e classificação | `pickle` para as operações individuais de inspeção/reconstrução |
| JavaScript | `js.deob` | Desofuscação suportada, recuperação de módulos webpack/Vite, tratamento de Node SEA/bytenode | `js unbundle` expõe o conjunto mais amplo de bundlers; source maps e opções de renomeação são controles diretos |
| WebAssembly | `wasm.deob` | WAT recuperado ou elevado, além de sidecars de detecção, resumo e recuperação | `wasm decompile --target` escolhe Rust, TypeScript, C, WAT ou JSON |
| Electron / Tauri | `webview.carve` | Membros de frontend incorporados | `webview` também suporta Wails; a recuperação automática de Wails usa `go.classify` |
| PHP / Phar | `php.peel` | Código-fonte descascado, saída `op_array`, filhos de arquivo, relatórios de resíduos/chaves | Chaves e IVs devem estar estaticamente disponíveis para camadas criptografadas |
| JVM / DEX | `jvm.classify` | Código-fonte Java, manifestos de protetor e recuperação, filhos de classe/arquivo | `jvm`/`apk` para mapeamento, assinaturas e backends externos opcionais |
| .NET | `dotnet.classify` | C# e análise, constantes/recursos/CIL recuperados ou metadados Native AOT | `dotnet` para outros formatos de código-fonte e backends de renderização instalados |
| Pacotes móveis / bytecode | `mobile.classify` | Extração de runtime/membros, elevação Hermes, código-fonte do kernel Dart ou relatórios AOT | `hermes`, `flutter`, `mobile` para controles específicos de formato |
| Lua | `lua.deob` | Lua recuperado e sidecars de dialeto/fidelidade | `lua` para controles explícitos de família e saída |
| Shell / Office / PDF | `shell.deob` | Scripts descascados, código-fonte/p-code de macro, relatórios XLM e de documento | `shell` para operações específicas de documento |
| Ruby | `ruby.classify` | Análise mais código-fonte YARV/mruby recuperado quando disponível | `ruby` para relatórios específicos de sabor; a classificação JRuby/TruffleRuby não é recuperação de código-fonte Ruby |
| BEAM / EZ | `beam.classify` | Erlang/Elixir/Core Erlang, desmontagem, filhos de arquivo | Chunks de depuração sobreviventes determinam a fidelidade do código-fonte |
| SWF / ABC | `as3.classify` | Estrutura ABC, listagens de instruções, pseudocódigo AS3 | Ofuscadores comerciais nomeados permanecem apenas para detecção |
| Go | `go.classify` | Símbolos, tipos, análise de garble e membros de sistema de arquivos incorporados | `go` para DWARF, BuildInfo e outros relatórios dedicados |
| Swift / Objective-C | `swift-objc.classify` | Metadados, fatias universais e dylibs de cache compartilhado | Arquivos irmãos de sub-cache/símbolos podem ser necessários; controles diretos `swift`/`macho` |
| Packers nativos | `native.packer-unpack` | Imagem desempacotada disponível ou módulo incorporado, símbolos, assinaturas, relatórios de recuperação | Apenas dispatches de packers implementados desempacotam; camadas comerciais de VM podem parar na detecção |
| Imagens nativas | `native.image-classify` | Identidade, símbolos, assinaturas, descobertas e um relatório limitado de pseudo-código x86-64/AArch64 | `native decompile` seleciona um comando completo de saída de código-fonte; caminhos de código-fonte ARM32/MIPS32 são diretos |
| Windows / OS/2 NE | `native.ne-structure` | Segmentos, entradas, importações e recursos | Recuperação estrutural em vez de descompilação de código-fonte |
| Perl / R / Tcl / Haxe / WSH | `scriptlang.classify` | Relatórios de linguagem, estruturas recuperadas e artefatos filhos suportados | APIs de biblioteca por formato expõem operações mais refinadas |
| Nim / Zig / Crystal / D | `nativelang.classify` | Impressões digitais de linguagem, símbolos e estrutura nativa parcial | A classificação requer marcadores de linguagem sobreviventes suficientes |

Por exemplo, um aplicativo PyInstaller reconhecido pode progredir por `pyinstaller.extract` → `pyarmor.unpack` → `py.decompile`; um APK por extração de membros → DEX → Java; e uma imagem nativa empacotada por desempacotamento → análise de linguagem ou imagem. Cada seta depende do que aquela camada específica realmente produz.```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, seleção explícita de origem-destino, reprodução de mapeamento e invocação opcional de backend externo permanecem operações dedicadas. Registro de passes · Seleção de cadeia e layout de saída.

Analisar e exportar o resultado

O mapa de capacidades cobre grupos de comandos e integrações. Seu inventário legível por máquina vincula código-fonte, testes, documentação, status de suporte e demos. A referência da CLI cobre comandos aninhados; flags globais cobrem opções compartilhadas. Use disrobe <command> --help para a interface da sua build instalada.

Comandos de projeto e serviço também estão indexados ali: serve, plugin, init, config, catalog, passes, doctor, install, install-deps, self-update, completions, man, explain e bug-report. Use doctor para sondar de 46 a 51 ferramentas externas dependendo da plataforma e identificar backends opcionais ausentes.

Use a mesma recuperação no seu fluxo de trabalho

Comparar ferramentas

A tabela mapeia cada tarefa de recuperação para os comandos do Disrobe e ferramentas relacionadas. Descompiladores instalados e artefatos exportados fornecem os pontos de integração mostrados abaixo.

O inventário de comparação nomeia as comparações pendentes de entrada compartilhada. As opções de backend estão documentadas em instalação e nos guias de linguagem vinculados acima.

Comparações de ferramentas medidas

As medições usam as entradas fixadas, versões de ferramentas e regras de pontuação vinculadas abaixo. As contagens de DEX e JAR medem a compilação das regiões emitidas por cada ferramenta. Essas populações diferem, então suas contagens não classificam a qualidade da recuperação. A recordação de segredos em APK usa a mesma verdade fundamental de oito tokens.

Entradas, resultados brutos das ferramentas e comandos de reprodução.

Dê ao Ghidra o executável recuperado

A mesma análise do Ghidra 12.1.2 vê código diferente depois que o Disrobe exporta um executável empacotado como PE reconstruído. Esses snapshots locais usam fixtures empacotados benignos reais e registram tanto aumentos quanto diminuições. As colunas de função/instrução/string vêm do snapshot de análise de nove entradas; renderizações C concluídas vêm do snapshot separado de descompilador de seis entradas. Uma renderização concluída é saída não vazia, não uma nota de correção de código-fonte.

As contagens do kkrunchy diminuem. Mais funções descobertas não são necessariamente mais funções corretas, e essas contagens de análise não substituem uma comparação de bytes. Leia o snapshot de análise, o snapshot do descompilador e as medições separadas de recuperação de bytes nativos.

Inspecione as evidências

O índice de evidências vincula medições de recuperação aos seus fixtures, métodos de comparação, comandos e resultados.

Os resultados distinguem recuperação de bytes, aceitação do compilador e verificações comportamentais. Aceitação do compilador e contagens de cobertura não são pontuações de equivalência.

Detalhes de pontuação JADX/CFR e comandos de reprodução

Recuperação verificada contra referências independentes

Essas verificações medem o Disrobe contra um artefato original, compilador, interpretador ou corpus rotulado. Elas são distintas de comparar dois descompiladores. Cada resultado vinculado registra a população de entrada, pré-requisitos e comando de reprodução.

Contagens de cobertura e suas populações de correção menores| Superfície | Contagem | O que estabelece | |---|---|---| | PyArmor | 72 / 72 wrappers nomeados v8/v9 default-trial | Desencriptação estática e análise completa do `CodeObject` raiz, sem uma comparação externa de correção | | Android, três APKs reais | 83662 / 83943 métodos lowered, local | Cobertura de corpo auto-reportada. A população separada do verificador é 2988 de 2998 corpos apresentados em carriers isolados | | Inventário de instruções Wasm | 1034 de 1034 instruções | Denominador externo `wasm-tools` e WAT re-montável; o numerador de lowering é auto-contado | | Tabela de instruções Luau | 86 de 88 entradas lifted | Tabela declarada do Disrobe; `BREAK` e `NEWCLASSMEMBER` permanecem descodificados mas não resolvidos | | Símbolos Swift | População de símbolos committed renderiza para strings fixadas | Consistência de regressão, sem comparação externa de demangler exigida | | OLLVM flattening | 9 estados alcançados de 9 estados derivados | Cobertura de estados do dispatcher sobre duas funções committed; ambas as contagens são derivadas in-process | | Aritmética booleana mista | 316 entradas; execução de referência respondeu 247 e recusou 69; solver externo provou 236 respostas e refutou nenhuma | Recuperação com orçamento e originais held-out; entradas não respondidas ou não provadas não se tornam resultados provados pelo solver | | Contentores | 42 rotas genéricas escrevem bytes de membros | Amplitude exercida dentro dos 103 formatos detetados; LUKS1 tem a sua própria comparação de plaintext |

Registos de evidência completos descrevem cada população e regra de classificação.

Os rótulos dos gráficos usam strong para uma referência de correção independente, recompile-only para aceitação do compilador, e coverage-self-reported para os próprios contadores de cobertura do Disrobe. O método de comparação e a população definem o âmbito de cada resultado.

Consulte os resultados, comparações de ferramentas, e pré-requisitos de reprodução para medições individuais.

Conheça os limites

  • O output compilado perde informação. Comentários originais, formatação, nomes, e alguma informação de tipos podem estar ausentes.
  • O reconhecimento de família é mais amplo que a recuperação. Uma correspondência de catálogo ou um parser bem-sucedido pode coexistir com emissão parcial de código-fonte. Leia o nível da família e o resultado real.
  • A recuperação nativa depende da arquitetura e da linguagem de output. O guia nativo lista os caminhos suportados e os seus testes.
  • A deteção de protetores de VM comerciais não é uma promessa geral de recuperação de código-fonte. Helpers internos e artefactos de secções protegidas não estabelecem um caminho completo de recuperação de CLI. Ver native unpacking.
  • Chaves em falta permanecem em falta. Chaves derivadas em runtime e seeds de name-hashing ausentes não podem ser inferidas a partir de um artefacto não suportado. Os guias de Python, PHP, e contentores indicam os limites específicos de cada formato.
  • Os backends externos têm os seus próprios requisitos. Alguns comandos podem selecionar ferramentas instaladas através de --backend auto. Consulte a ajuda do comando e o guia de instalação antes de escolher um backend.
  • A análise é estática por omissão. Isto não torna input não confiável inofensivo. Limites de recursos, operações dinâmicas explicitamente selecionadas, e fronteiras de processos externos são descritos em forensics safety.

Compreenda o pipeline

Representações intermédias do Disrobe, dos bytes à estrutura do programa até ao código-fonte

O chain runner liga passes de propósito único através de artefactos partilhados e representações intermédias. Um pass contribui com o output que consegue justificar; os consumidores a jusante retêm a proveniência e reportam fronteiras não suportadas. Explore a arquitetura, o modelo de passes, a escada de IR, e o chain runner.

Documentação e contribuição

Comece pela documentação, quickstart, e guia de resultados. Use disrobe explain <code> para consultar um diagnóstico. Para alterações ao projeto, leia o guia de contribuição e os testes e evidências da funcionalidade relevante.

O modelo de ameaças descreve fronteiras de confiança e tratamento de input. Reporte preocupações de segurança através de SECURITY.md. LEGAL.md descreve as considerações legais do projeto; a permissão para analisar um artefacto depende das suas circunstâncias.

Licença

License: Disrobe Source-Available

Todas as versões do Disrobe são proprietárias e source-available sob a Disrobe Source-Available License, Version 1.1, que substitui a Elastic License 2.0 e a Version 1.0 para todas as versões e revoga todas as concessões anteriores conforme declarado no aviso de relicenciamento.

Projetos pessoais de hobby, aprendizagem pessoal, e investigação de segurança independente não remunerada por indivíduos, educação e investigação sem fins lucrativos, e jornalismo de boa-fé são gratuitos, conforme definido na licença.

Qualquer utilização por ou para uma empresa requer uma licença paga. Ver licenciamento comercial.

Crédito obrigatório: Este trabalho utilizou o Disrobe, criado por 1-3-7: https://github.com/1-3-7/disrobe

Forks que não sejam forks de contribuição, republicação, rebranding, revenda, alojamento, e desenvolvimento concorrente são proibidos. O software é fornecido tal como está, por conta e risco do utilizador.

Ver atribuição, termos para contribuidores, resumo, e avisos de terceiros.

Copyright (c) 2025-2026 1-3-7. Todos os direitos reservados.

Commits de desenvolvimento anteriores foram consolidados numa única baseline como parte da atualização de documentação e visual.

Baixar ferramenta
TarefaComandosSaída ou próximo passo
Encontrar indicadores, segredos e achados estáticosscan, frisk, strings, ioc, indicators, behaviorAchados e deslocamentos
Inspecionar funções, fluxos e comportamentoquery, capabilities, taint, vulnmatchIR consultável, mapeamentos ATT&CK/MBC e relatórios de origem a destino
Manter anotações e artefatos estruturadosannot, rename, envelope, verify, yaraEnvelopes de artefatos e estado do analista
Seguir proveniência e comparar execuçõeschain, context, status, report, diff, guard, semdiffRelatórios, hashes e diferenças de recuperação
Coletar dados de rede públicosprowlColeta de rede explícita, separada da recuperação offline
SuperfíciePonto de entradaGuia
RustTipos centrais compartilhados e crates de passes individuaisAPIs de biblioteca
PythonBindings tipados via import disrobeBindings Python
HTTP, gRPC e LSPdisrobe serveServiço
Model Context Protocoldisrobe-mcp ou disrobe serve --mcpIntegração MCP
Editores e ferramentas de análiseVS Code, IDA Pro, Ghidra, Binary NinjaIntegrações de editor
GitHub ActionsAction do repositório e saída SARIFGitHub Action
Verificações de commit locaisID do hook disrobepre-commit
NavegadorWorker Wasm do lado do clientePlayground
Contexto de projeto para ferramentas de codificaçãodisrobe init --ideSidecar de metadados
Tarefa de recuperaçãoFerramentas nomeadasCaminho do DisrobeComo escolher ou combiná-las
Bytecode Python para código-fontepycdc, PyLingual, uncompyle6, decompyle3Descompilador CPython 1.0 a 3.15 em processo, recuperação de code-object aninhado, saída de código-fonte/desmontagem/ASTInspecione código-fonte recuperado, desmontagem e AST do descompilador Python integrado
Extração de Python congeladopyinstxtractor-ng, pydecipherExtração de PyInstaller, Nuitka e freezer seguida de recuperação de bytecodeauto pode continuar do membro extraído através de um protetor e entrar no descompilador Python
PyArmorPyarmor-Static-Unpack-1shotRecuperação estática de wrapper/runtime, relatórios de modo, lifting BCC estático opcionalForneça o runtime correspondente para recuperar dados do wrapper e inspecionar resultados específicos de modo
Inspeção de Picklefickling, pickletools do PythonRastreamento de instruções, redutores simbólicos, classificação e reconstrução de valoresInspecione sem executar redutores; pickletools avalia a inspeção, e o CPython verifica a reconstrução em 470 fixtures gerados
Desofuscação de JavaScriptwebcrack, synchrony, REstringerobfuscator.io, JS-Confuser, padrões Jscrambler suportados, decodificadores esotéricos, recuperação de constantes/fluxo de controleUse js deob para opções explícitas ou auto quando JS está dentro de um pacote
Desbundling de JS e source mapswakaru, webcrack, sourcemapperExtração de módulos, tratamento de source-map, renomeação com reconhecimento de escopo, inspeção de V8 empacotadojs unbundle expõe mais rotas de bundler do que o despacho automático de cadeia
WebAssemblyWABT wasm-decompile, BinaryenPseudo-código WAT e C/Rust/TypeScript, resumos JSON, reversão de ofuscação suportadaInspecione um alvo de código-fonte selecionado; a execução via wasmtime verifica o comportamento recuperado de forma independente abaixo
Código-fonte JVMCFR, Vineflower, Procyon, FernflowerRecuperação nativa de classfile mais tratamento de protetor/stringsjvm decompile grava artefatos do Disrobe junto com a saída de um backend instalado; o CFR tem um resultado medido de rendimento de compilação abaixo
Pacotes Android e DEXJADX, apktool, androguard, dex2jarRecuperação Dalvik em processo, metadados/assinaturas de APK, extração em runtime, saída JavaA descompilação de DEX/APK usa o caminho nativo por padrão; um backend Android é selecionado explicitamente. O JADX tem uma etapa medida abaixo
Assemblies .NETILSpy, dnSpy, dnSpyEx, de4dotRecuperação CIL mais constantes específicas de protetor, recursos, corpos de VM e metadados Native AOTdotnet decompile grava a saída CIL do Disrobe junto com um renderizador instalado; --backend auto seleciona ILSpy, dnSpyEx, dnSpy ou de4dot
Descompilação nativaGhidra, IDA, Binary NinjaPseudo-C x86-64 C/Rust e AArch64/ARM32/MIPS32 em processo; relatórios de símbolos/tipos recuperadosSelecione Ghidra em modo headless com --backend ghidra, ou use integrações de editor e símbolos exportados em uma sessão de análise interativa
Executáveis nativos empacotadosupx -d, unipacker, Detect It EasyDesempacotadores implementados e emulação de stub limitada, imagens PE reconstruídas, módulos loader embutidosExporte imagens PE recuperadas para Ghidra/IDA. As medições do Ghidra abaixo comparam as entradas empacotadas e reconstruídas
Ofuscação nativaGhidra, IDA, Binary Ninja e scripts de desofuscaçãoTransformações OLLVM/Tigress, simplificação MBA, stack strings, metadados nativos e relatórios de recuperaçãoSelecione a operação/API nativa relevante; uma impressão digital de protetor de VM sozinha não implica recuperação de corpo
Metadados Go e garbleGoReSym, redress, gorepclntab, metadados de módulo/tipo, arquivos embutidos e literais garble recuperáveisgo reporta nomes/tipos; native decompile trata o caminho de código-fonte de código de máquina separadamente
Swift / Objective-Cswift-demangle, class-dump, jtool2Dados de classe/protocolo/seletor em runtime, renderização de símbolos, fat slices, dylibs de cache compartilhadoForneça mapeamentos sobreviventes e arquivos de sub-cache; nomes originais apagados por renomeação precisam de um mapa externo
Bytecode e VMs Luaunluac, luadec, LuaDec51Código-fonte Lua/LuaJIT/Luau mais recuperação de ofuscador suportado e VM personalizadaIronBrew2 tem evidência de diferencial de execução com ferramenta real; recuperação comum de .luac e recuperação de VM são operações diferentes
Bytecode RubyDesmontagem MRICódigo-fonte YARV e mruby, listagens de opcode, classificação freezer/AOTA recompilação MRI avalia a recordação de nomes de opcode; essa medida não estabelece equivalência de execução
Camadas PHPphp-malware-finderDescascamento de cadeia eval e loop/cifra de chave literal, extração Phar, relatórios de envelope de encoderUse camadas estáticas e material de chave disponível; payloads comerciais com chave de loader nativo permanecem selados
PowerShell, Bash, VBAPowerDecode, ferramentas FLARE, olevbaDesofuscação de shell, código-fonte/p-code VBA e stomping, fórmulas XLM, ações PDFshell coloca a recuperação de script e achados de documento ao lado do restante da análise de artefatos
BEAM / ActionScriptbeam_disasm do Erlang, RABCDAsmRecuperação de debug-source/Core Erlang do BEAM e pseudocódigo de corpo de método ABCPreserve chunks de debug quando disponíveis; BEAM sem símbolos tem uma verificação separada de execução Erlang real
Hermes / React Nativehermes-dec, hbctool, DroidSawExtração em runtime, estrutura HBC, lifting pseudo-JavaScript suportadoO parsing HBC cobre v60 a v96; o lifting de código-fonte tem um limite medido mais estreito. Taint de ponte Hermes-para-DEX não está implementado
Flutter / Dart AOTreFlutter, Darter, blutterTabelas de código-fonte Kernel, grafo de declaração AOT, corpos ARM64, strings, parsing de rename-mapCódigo-fonte Kernel e metadados AOT são níveis de recuperação diferentes; versões de snapshot restringem o parsing AOT
Contêineres e firmwarebinwalk, unblob, 7-ZipExtração de formato registrado, roteamento recursivo de filhos, decodificação/carving de firmware, relatórios de recusa por membroAlimente membros extraídos diretamente nos passes de linguagem; compare bytes de membros em vez de tratar um magic reconhecido como extração bem-sucedida
Segredos e indicadoresAPKLeaks, TruffleHog, Gitleaks, LinkFinderAchados de árvore/APK recuperados, deslocamentos de token, strings estáticas, relatórios de segredos e IOCEscaneie o APK ou a árvore recuperada; compare o APKLeaks com os mesmos segredos plantados abaixo
Identificação de formato, packer, compiladorDetect It Easy, TrID, PEiD, binwalkIdentificação multi-sinal, símbolos, assinaturas e dicas de roteamentoUse identify/detect para selecionar um caminho de recuperação, depois inspecione sua saída real
Capacidades e taintcapa, scripts Ghidra, JoernAchados ATT&CK/MBC com deslocamentos, consultas de IR normalizada, relatórios de fluxo de origem a destinoExecute correspondência de capacidades e análise de origem a destino em artefatos recuperados; o relatório de taint inclui sua população de testes Juliet
Ferramenta e entradaResultado do DisrobeResultado da ferramenta nomeadaO que a medição verifica
JADX 1.5.5 · Android DEX157 / 228 regiões emitidas compilam limpas281 / 303 regiões emitidas compilam limpasDEX EdgeCases commitado; javac real, compilação de código-fonte completo e então isolamento limitado de regiões que bloqueiam a atribuição; populações emitidas diferentes
CFR 0.152 · classfile JVM181 / 181 regiões emitidas compilam limpas152 / 166 regiões emitidas compilam limpasJAR EdgeCases commitado; o mesmo procedimento de compilador/pontuador; populações emitidas diferentes
APKLeaks 2.6.3 · APK com segredos plantados8 / 8 segredos plantados5 / 8 segredos plantadosRecordação de token exato no mesmo APK; o Disrobe também encontra a chave de acesso secreta AWS plantada, credencial Basic e JWT
Entrada empacotadaFunções Ghidra, empacotado → reconstruídoInstruções, empacotado → reconstruídoStrings, empacotado → reconstruídoRenderizações C concluídas, empacotado → reconstruído
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 → 358Não medido
MEW · AccessEnum4 → 152125 → 9.5923 → 802Não medido
MEW · Autologon4 → 295125 → 19.5953 → 406Não medido
kkrunchy classic · NASM hello4 → 1149 → 103 → 44 → 1
EntradaRegiões emitidas pelo DisrobeRegiões emitidas pela ferramenta nomeadaLimite da populaçãoReproduzir
Android DEX157 / 228 regiões emitidas compilam limpasJADX 1.5.5: 281 / 303 regiões emitidas compilam limpassem classificação entre ferramentas: cada ferramenta tem sua própria população de regiões emitidascargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
classfile JVM181 / 181 regiões emitidas compilam limpasCFR 0.152: 152 / 166 regiões emitidas compilam limpassem classificação entre ferramentas: cada ferramenta tem sua própria população de regiões emitidascargo run --locked -p disrobe-bench-head-to-head -- --check --only apk-jadx-cfr
RecuperaçãoResultado registradoReferência e limite
Python 3.14.5, módulos fixados6077 de 6286 code objectsRecompilação CPython com comparação normalizada de estrutura de opcode; destinos de salto, a maioria dos operandos e objetos recuperados adicionais não são avaliados. Resultado
Python 3.14.5, população central fixa17396 de 18276 code objects, medição localA mesma comparação normalizada em 574 módulos; este não é um resultado de equivalência semântica. Resultado
Python legado 1.0 a 3.7pelo menos 150 de 191 fixtures (piso de regressão)Recompilação com interpretador da época ou tokens estruturais contra o código-fonte original. Resultado
Classificação de Pickle102 / 102 fixtures de classificaçãoSemântica do pickletools. Resultado
Reconstrução de Pickle470 / 470 fixtures reconstruídos passam em verificações de igualdade de reexecuçãoReexecução CPython. Resultado
Compilação de código-fonte JVM131 de 131 métodos compilamjavac real. Resultado
Comportamento JVM117 / 131 métodos correspondem à execução observadaJVM real; oito métodos divergem e seis não são acionados isoladamente. Resultado
Android DEX118 / 118 classes apresentadas ao verificadorJVM -Xverify:all; 37 de 155 classes são ignoradas na ligação e não avaliadas. Resultado
.NET C#18 / 35 tipos EdgeCases completos recompilam de forma autônomaRoslyn csc real; código-fonte legal não estabelece comportamento equivalente. Resultado
Corpos de VM .NETModelo Eazfuscator: 67 / 67 instruções; KoiVM real: 6 / 6 corpos levantadosReferências separadas de original/build limpo; EazVM usa um virtualizador no repositório, KoiVM usa saída de ferramenta real. Evidência
WebAssembly57 / 57 funções elegíveiswasmtime compara retornos, traps e os primeiros 4.096 bytes de memória linear nas entradas de teste. Resultado
BEAM sem chunks de debug19 / 19 módulosRecompilação Erlang/OTP 27.3.4, comparação de exportação e saída/status de saída de test/0. Resultado
Lua IronBrew2Saída real 2.7.0 standard e MAX recupera para execução correspondenteInterpretador Lua real contra programas originais; uma família de VM. Resultado
Ruby YARVGreeter 100%; megafile 98,67% de recordação de nomes de opcodeRecompilação MRI; recordação de multiconjunto ignora ordem, operandos, destinos de salto e instruções extras. Resultado
Nomes de tipo Go sem símbolos838 de 838 nomesMetadados reais do go1.26.3 da build de comparação. Resultado
Hermes HBC v968 de 8 funções, zero operações de fallbackAmostra real de hermesc com código-fonte original e nomes de função. Resultado
Bytes nativos empacotadosUPX, FSG, NSPack, Petite, MPRESS .text byte a byte idêntico em pares commitados nomeados; recursos do Yoda's Crypter byte a byte idênticosBytes originais alinhados por RVA; resíduos de imagem completa e de recursos permanecem reportados separadamente. Tabela por entrada
Indicadores plantados6 / 6 categorias de IOC representadasEndpoints commitados, achados de manifesto, URLs, IPv4, email e verdade fundamental .onion. Resultado
Grafo de chamadas MCP5 / 5 arestas diretas, todas corretamente identificadasELF sem símbolos comparado com seu gêmeo distinto de toolchain com símbolos. Precisão, recordação
Taint nativo93 / 190 fluxos rotulados recordados; zero falsos positivos, medição localFatia NIST Juliet CWE-78 char/system, gcc 16.2.0 -O2; sete categorias de fluxo declaradas não têm casos nesta fatia. Resultado