O que esta ferramenta reverte
Muitos ofuscadores de JavaScript — incluindo o deste mesmo site — reescrevem o código através de um pequeno conjunto de transformações estáticas mecânicas: movem cada string literal para um único array e substituem cada uso por uma chamada a uma função getter, escapam caracteres normais como sequências \xNN ou \uNNNN, expandem aritmética simples em expressões equivalentes porém mais longas, envolvem código real num if sempre verdadeiro ou sempre falso, e reescrevem a.b como a['b']. Esta ferramenta reverte exatamente essas cinco coisas:
- Inlining de array de strings — encontra
var _s = ["foo", "bar"]; function _g(i){ return _s[i]; }e substitui cada chamada tipo_g(0)cujo índice seja um número literal pela string real, depois remove o array e a função se mais nada os usar. - Decodificação de escapes — mostra
\x48\x69comoHiem vez da forma escapada. - Redução de constantes — transforma
1 + 2em3,"a" + "b"em"ab"e aritmética literal semelhante, evitando qualquer coisa que exigisse adivinhação (como dividir por um literal zero). - Remoção de ramos mortos —
if (true) { A } else { B }torna-se apenasA; umwhile (false) {}desaparece por completo. - Colchete para ponto —
obj['nome']torna-seobj.nomequandonomeé um identificador válido.
O que não faz
Isto é correspondência de padrões estática sobre uma AST, não um desofuscador geral. Não executa nenhum código, por isso não consegue desempacotar um carregador baseado em eval, resolver um predicado opaco que dependa de um valor em tempo de execução, nem reverter o achatamento de fluxo de controlo além do caso literal único de if/while/ternário acima. Os nomes das variáveis são deixados exatamente como estão — _0x1a2b continua _0x1a2b. Se o seu ficheiro não corresponder exatamente à forma array-de-strings + função getter, essa fase simplesmente reporta zero chamadas embutidas em vez de adivinhar outro padrão.
Como funciona
O código é analisado numa AST com acorn, percorrido e reescrito com transformações escritas à mão que só atuam quando um valor já é comprovadamente literal, e regenerado com astring. Nada é enviado a nenhum servidor: a análise e a reescrita acontecem no seu navegador.
Como usar
Cole ou escreva JavaScript no editor e execute. O resumo mostra exatamente quantas vezes cada fase foi acionada, para que veja o que mudou e o que não mudou. Copie o resultado ou descarregue-o como ficheiro .js.
Tiny Online Tools







