Desofuscador de JavaScript
Cole um bloco de JavaScript ofuscado, strings codificadas em hex, nomes de variáveis de uma letra, um loop decodificador no topo, e a ferramenta remove as camadas: desescapa strings, insere o array de busca, renomeia variáveis para marcadores legíveis, achata wrappers triviais e embeleza o resultado. Útil para analisar trechos suspeitos que você extraiu de uma página ou de um link colado do pastebin.
Como desofuscar JavaScript
-
1
Cole a fonte ofuscada
Minificado, empacotado ou resultado de ferramentas do estilo `javascript-obfuscator.io`.
-
2
Deixe o parser processar
Arrays de strings são decodificados, sequências numéricas são avaliadas e ramos de código morto são eliminados.
-
3
Aplique renomeação
Variáveis de uma letra `a`/`b`/`c` são renomeadas para `var1`, `var2`, etc. marcadores legíveis, não necessariamente nomes significativos.
-
4
Embelezar
Indente, adicione quebras de linha e produza um código que você realmente pode ler e entender.
Técnicas que o desofuscador reverte
| Ofuscação | Reversão |
|---|---|
| Literais de string hex-escapados | Decodifica \x48\x69 de volta para "Oi" |
| Identificadores unicode-escapados | \u006E\u0061\u006D\u0065 -> nome |
| Array de strings + função decodificadora | Insere o array, chama o decodificador no tempo de análise |
| Dobra de constantes numéricas | 0x1F3 + 5 -> 504 |
Wrappers eval(...) |
Eleva o código interno para o nível superior |
| Achatamento de fluxo de controle (máquina de estados) | Detecta o switch-case, reconstrói o fluxo |
| Código morto / ternários inúteis | Remove ramos que nunca são executados |
Nomes do estilo _0x1a2b3c() |
Substitui por var1, var2 incrementais |
Limitações: o que a ferramenta não faz
- Recuperar nomes de variáveis originais. Uma vez que
userEmailé renomeado paraa, nenhuma ferramenta pode adivinhar de volta. Você obtém uma estrutura legível, não a semântica original. - Desempacotar virtualizadores personalizados. Ofuscadores comerciais pesados (JScrambler, níveis empresariais do Obfuscator.io) introduzem uma VM personalizada que interpreta bytecode. Derrotar isso requer engenharia reversa manual.
- Executar código arbitrário. O desofuscador avalia expressões puras estaticamente. Ele não buscará recursos remotos, criará elementos DOM ou se comunicará com a rede.
Casos de uso típicos
- Pesquisa de segurança: desmontando um script suspeito que chegou em um e-mail ou foi servido por um CDN comprometido.
- Arqueologia de código: recuperando código legado onde o único artefato sobrevivente é um pacote minificado.
- Aprendizado: entendendo o que uma ofuscação de nível tutorial realmente faz nos bastidores.
Segurança e ética
Nunca execute JavaScript não confiável em uma aba do navegador logada em algo importante, o código pode ler cookies, chamar APIs internas e exfiltrar estado. O desofuscador em si opera no código-fonte como texto; ele não executa o código que você cola.
Desofusque apenas o código que você está autorizado a analisar. A engenharia reversa de software licenciado pode ser restrita em sua jurisdição.
Perguntas frequentes
Não. Uma vez que o ofuscador renomeia userEmail para _0x1a2b3c, o nome original é perdido. O desofuscador fornece marcadores legíveis (var1, var2) e estrutura correta, mas não os nomes semânticos originais.
Não. Ela analisa o código como um AST e aplica transformações estáticas. Expressões puras (como 0x1F3 + 5) são dobradas, mas nada toca a rede, cookies ou o DOM.
Sim, mas a saída do bundler é minificada em vez de deliberadamente ofuscada, então o resultado é apenas um código embelezado com wrappers de módulo restaurados. Mapas de origem, se disponíveis separadamente, fornecem nomes muito melhores.
Ferramentas comerciais pesadas (JScrambler empresarial, VMs personalizadas) introduzem um interpretador de bytecode que a análise estática não consegue desfazer. A ferramenta obterá a camada superficial, mas a lógica central permanece opaca sem reversão manual.
Ferramentas relacionadas
Gerador de cards CSS
Crie um card com seu título, texto e link opcional. Ajuste cores, borda, espaçamento, sombra e efeito ao passar o mouse. Depois copie ou baixe o HTML e o CSS.
Gerador de textura de ruído
Gere uma textura de ruído em SVG que se repete sem emendas, com opacidade, frequência do grão, tipo de ruído e cor de fundo ajustáveis, e copie o CSS já pronto.
Gerador de Configuração Webpack
Crie um webpack.config.js para webpack 5 a partir de um formulário curto: defina o entry, a pasta de saída e o modo, e ative TypeScript, Babel, um loader CSS, HtmlWebpackPlugin e um servidor de desenvolvimento.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Ferramenta disponível em outros idiomas
- เครื่องถอดรหัส JavaScript [TH]
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- Deobfuscator JavaScript [ID]
- Deobfuskator JavaScriptu [PL]
- JavaScriptデオブファスカータ [JA]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- JavaScript-Deobfuscator [DE]
- 자바스크립트 디오프스버커 [KO]
- Desofuscador de JavaScript [ES]
- Déobfuscateur JavaScript [FR]
- JavaScript-deobfuscator [SV]
- JavaScript-deobfuscator [NL]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]
- JavaScript反混淆工具 [ZH]