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. 1

    Cole a fonte ofuscada

    Minificado, empacotado ou resultado de ferramentas do estilo `javascript-obfuscator.io`.

  2. 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. 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. 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 para a, 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

Ferramenta disponível em outros idiomas