Pular para o conteúdo
Favoritos

Ofuscador de JavaScript (eval)

Atualizado:

Cole o JavaScript no campo de código para gerar uma versão empacotada baseada em eval. Copie o código resultante do campo Código Ofuscado.

Ferramenta de Ofuscação de JavaScript Baseada em Eval

Campos de entrada
Se ativado, o resultado é atualizado automaticamente quando você altera qualquer valor.

Fórmula do Ofuscador de JavaScript (eval)

Fórmula
\[O=\operatorname{Packer.pack}(S,\mathrm{true},\mathrm{true})\]

Onde:

  • \(S\) — o JavaScript digitado no campo de entrada.
  • \(O\) — o JavaScript empacotado exibido como resultado.
  • O primeiro \(\mathrm{true}\) ativa a codificação de tokens em base-62; o segundo ativa a redução de variáveis.

O empacotador também minifica a entrada antes de produzir um invólucro baseado em eval. A codificação de tokens em base-62 não é codificação Base64 nem hexadecimal.

Ofuscador de JavaScript (eval) – Exemplo de Cálculo

Exemplo: Deixe o padrão alert('Hello, world!'); no campo Código JavaScript a Ofuscar.

\[S=\texttt{alert('Hello, world!');},\qquad O=\operatorname{Packer.pack}(S,\mathrm{true},\mathrm{true})\]

Resultado: o campo Código Ofuscado contém um trecho de JavaScript empacotado e baseado em eval. Executá-lo em um ambiente que permite eval() executa o alerta original, exibindo “Hello, world!”. O campo de resultado contém código, e não a mensagem do alerta em si.

Como usar a calculadora

  1. Digite ou cole seu script em Código JavaScript a Ofuscar. O campo contém inicialmente alert('Hello, world!');, que você pode usar para um teste rápido.
  2. Execute a calculadora para processar o código. Se o campo estiver vazio, você verá uma mensagem “Digite o código” em vez de um resultado.
  3. Copie o script gerado do campo Código Ofuscado e teste-o onde pretende usá-lo.

Cole código JavaScript, e não tags HTML <script>. Não há configurações de codificação, compactação ou nível de segurança a selecionar: a ferramenta chama o empacotador com as duas opções disponíveis ativadas.

O que a ofuscação baseada em eval faz

Esta ferramenta transforma o código-fonte JavaScript em um script empacotado que reconstrói o código e o executa por meio de eval(). Seu objetivo é tornar o código-fonte menos imediatamente legível durante uma inspeção casual. Ao contrário de um cálculo convencional, ela não produz uma resposta numérica: o Código Ofuscado é outro programa JavaScript destinado a executar o trabalho da entrada.

O empacotador minifica o script, reduz variáveis onde sua transformação permite e substitui tokens por representações mais curtas em base-62. O invólucro resultante restaura o código empacotado quando é executado. Base-62 descreve o alfabeto de tokens usado por essa abordagem de empacotamento; não significa que todo o script foi convertido em uma string Base64. A ferramenta não oferece escolha de codificações.

Ofuscação não é criptografia. Qualquer pessoa que possa executar ou inspecionar o resultado pode trabalhar para recuperar o código subjacente, inclusive estudando a etapa de desempacotamento. Use essa abordagem para desencorajar a leitura casual, não para proteger senhas, segredos de API, verificações de licença ou outras informações que devam permanecer privadas. Para uma versão mais legível do código empacotado, experimente a ferramenta JavaScript Eval Decode.

Distinga também o empacotamento da otimização do tamanho do arquivo. Embora a minificação remova texto-fonte desnecessário, o invólucro de desempacotamento adiciona código próprio, de modo que um script curto pode ficar maior. Se o tamanho do download for sua principal preocupação, compare o resultado com a ferramenta JavaScript Compress.

Premissas e limitações práticas

  • A política de execução importa. Uma Content Security Policy que não permite eval() pode impedir a execução do script empacotado. Um site pode precisar usar um script não empacotado em vez de enfraquecer sua política.
  • Teste o resultado real. A redução de variáveis e o empacotamento podem afetar código que depende do texto-fonte, dos nomes de variáveis ou de um comportamento específico de escopo. Verifique o script gerado com o motor JavaScript e o conjunto de testes pretendidos antes de substituir código funcionando.
  • Não trate a saída como segura por parecer ilegível. JavaScript empacotado ainda pode executar quaisquer ações que seu código original executa. Revise entradas não confiáveis antes de executá-las.
  • Guarde o código-fonte original. A saída empacotada é mais difícil de editar e depurar. Mantenha sua versão legível para alterações, investigação de erros e builds futuros.

A melhor verificação é um teste lado a lado: execute os scripts original e empacotado nas mesmas condições, compare seu comportamento observável e confirme que seu ambiente de implantação permite avaliação dinâmica.

Perguntas frequentes

Como posso criar um empacotador de JavaScript baseado em eval manualmente?

Primeiro, minifique um script pequeno; em seguida, construa um dicionário de tokens repetidos e substitua-os por identificadores curtos. Por fim, escreva um invólucro que restaure esses tokens antes de passar o script reconstruído ao eval(). Fazer o escape correto de aspas, barras invertidas e tokens de substituição é difícil, por isso empacotadores feitos à mão são melhor tratados como experimentos, e não como ferramentas de produção.

O código empacotado funciona com módulos JavaScript?

Não necessariamente. Declarações estáticas de import e export exigem sintaxe de módulo e não podem simplesmente ser colocadas dentro de uma chamada eval(). Se seu código-fonte as utiliza, empacote o código apenas depois que uma etapa de build adequada tenha agrupado ou transformado os módulos. Teste o resultado na mesma configuração de navegador ou runtime que você usará na implantação.

Este ofuscador é compatível com a sintaxe JavaScript moderna?

O suporte depende do analisador e das regras de transformação do empacotador, e não apenas de o seu navegador entender o código-fonte. Recursos como template literals, optional chaining ou sintaxes de classe mais recentes podem fazer um empacotador antigo falhar ou mudar de comportamento. Experimente uma amostra representativa e compare seus resultados com o original antes de processar um projeto maior.

O empacotamento baseado em eval torna o JavaScript mais lento?

Ele pode adicionar trabalho de inicialização porque o invólucro precisa reconstruir o script antes que o eval() o execute. O efeito depende do tamanho do script, da frequência com que é executado e do motor JavaScript; código que executa repetidamente após o desempacotamento pode mostrar pouca diferença. Meça os tempos de carregamento e execução no seu ambiente de destino, em vez de assumir que um script de aparência menor é mais rápido.

Por que os caracteres especiais parecem diferentes na saída empacotada?

O invólucro pode fazer escape de aspas, barras invertidas, quebras de linha ou caracteres não ASCII para que possam ser representados com segurança dentro do JavaScript gerado. Um código-fonte de aparência diferente não é necessariamente um valor de string diferente. Verifique o valor produzido em tempo de execução, especialmente para emojis, caracteres acentuados, expressões regulares e strings que contenham barras invertidas.

Como saber se a ofuscação está boa?

Não há uma pontuação padrão nem um comprimento ideal de saída para esse tipo de empacotamento. Um resultado útil continua se comportando como o script original e torna a inspeção casual do código-fonte menos direta. Ele não deve ser julgado apenas pela aparência: um leitor determinado pode reconstruir código que precisa ser desempacotado para ser executado, portanto mantenha dados sensíveis fora do JavaScript do lado do cliente.

Como depurar um erro em JavaScript empacotado?

Reproduza primeiro o erro com o código-fonte original, onde os números de linha e os nomes de variáveis são mais úteis. Se ele aparecer apenas após o empacotamento, reduza a entrada ao menor script que ainda falha e compare as duas versões no mesmo ambiente. Erros relatados dentro do invólucro eval() podem não apontar para a linha correspondente no seu arquivo original.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *