Documentação
/

Primeiros passos

Primeiros passos

O Obfuscator.io transforma seu código-fonte legível em uma versão protegida, difícil de entender e de submeter a engenharia reversa. É perfeito para proteger algoritmos proprietários, lógica de licenciamento e código crítico para o negócio.

Bem-vindo ao Obfuscator.io

Este guia mostra como ofuscar seu primeiro arquivo, escolher uma predefinição e entender o painel de opções. Para se aprofundar, veja as seções Ofuscação VM, Ofuscação básica e Boas práticas.

Início rápido

  • 1. Cole seu código

    Insira seu código JavaScript no painel do editor à esquerda. Você pode colar o código diretamente ou usar o recurso de envio de arquivos para processamento em lote.

  • 2. Escolha uma predefinição

    Selecione uma predefinição na lista suspensa do painel de opções. Comece com Low Obfuscation para mudanças mínimas ou Medium Obfuscation para uma proteção equilibrada. As predefinições VM oferecem a segurança mais forte.

  • 3. Clique em "Obfuscate"

    Pressione o botão Obfuscate para transformar seu código. A saída protegida aparece no painel à direita.

  • 4. Copie ou baixe

    Use o botão Copiar ou Baixar para obter seu código ofuscado. A saída está pronta para uso em produção.

Compatibilidade do código Importante

A ofuscação (tanto VM quanto não VM) transforma seu código de maneiras que afetam certos comportamentos do JavaScript em tempo de execução. Seu código não pode depender destes recursos:

  • function.toString() / class.toString()

    A ofuscação muda completamente a representação do código-fonte. Código que analisa ou compara o código-fonte de funções vai quebrar.

  • function.name / class.name

    Nomes de funções e classes são renomeados para identificadores aleatórios. Código que depende de .name para logs, serialização ou reflexão vai receber nomes ofuscados.

// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name);     // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"

// After obfuscation
console.log(calculatePrice.name);     // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code

Opções básicas

Antes de ofuscar, configure estas opções básicas de acordo com o ambiente de destino.

Target target

Especifica o ambiente de execução do código ofuscado:

  • browser (padrão) - ambiente padrão de página web. O código de saída é idêntico ao de node, mas algumas opções específicas de navegador não podem ser usadas com o target node.
  • browser-no-eval - igual a browser, mas a saída não usa eval(). Use quando a página de destino tiver uma Content Security Policy que proíbe eval/unsafe-eval.
  • node - ambiente Node.js. As opções específicas de navegador são desativadas (elas exigem window/document e não teriam efeito ou lançariam erro no Node). Algumas defesas do vmSelfDefending que dependem de APIs exclusivas do navegador - detecção de navegador headless, recuperação de realm limpo via iframe, verificações anti-inspector/DOM - não são geradas para este target.
  • service-worker - contexto de Service Worker. Sem window, sem document, com um global self diferente.
  • userscript - sandbox de gerenciador de userscripts (por exemplo, Tampermonkey). As defesas do vmSelfDefending são ajustadas de acordo. Requer o obfuscator v6.9.0+.
  • bytenode - para código que será compilado para .jsc com o bytenode. Requer o obfuscator v6.13.0+.

Strict Mode strictMode

Controla como o obfuscator lida com o modo estrito do JavaScript:

  • Auto (padrão) - Detecta o modo estrito automaticamente a partir do código. O obfuscator analisa seu código em busca de diretivas "use strict"
  • Enable - Força o tratamento em modo estrito para todo o código, independentemente de haver ou não "use strict"
  • Disable - Apenas diretivas "use strict" explícitas no código-fonte são tratadas como modo estrito

Entendendo as predefinições

Predefinições são combinações de opções pré-configuradas. Existem dois grupos separados:

Predefinições VM Pro (virtualização em bytecode)

PredefiniçãoSegurançaDesempenhoRecursos
VM LowBoa~10xVM básica, dispatch indireto
VM MediumForte~12-15x+ Embaralhamento de opcodes, codificação, iscas
VM HighMuito forte~15-18x+ Dead code, opcodes com estado, codificação da pilha
VM Ultra HighMáximo~20x++ Camadas de ofuscação não VM

Os números de desempenho são médias - o impacto real depende muito do código (por exemplo, código com muita recursão ou com loops críticos fica visivelmente mais lento).

Predefinições não VM (ofuscação padrão)

PredefiniçãoProteçãoDesempenhoRecursos
DefaultBásicaMínimoString array, simplify
LowLeve~1.1x+ Self-defending, desativar console
MediumModerada~1.5x+ Control flow, dead code, base64
HighForte~2x+ Proteção contra depuração, codificação rc4

Visão geral da interface

  • Editor de entrada - Cole ou digite seu código-fonte JavaScript. Arraste e solte arquivos ou use o botão de envio. Arquivos HTML com scripts inline também são suportados Pro.
  • Painel de saída - Exibe o resultado ofuscado. Use os botões Copiar ou Baixar para obter o código protegido.
  • Seletor de predefinição - Escolha predefinições VM ou não VM. As predefinições VM ficam agrupadas no topo. A predefinição determina as opções base que você pode personalizar.
  • Painel de opções - Ajuste as configurações de ofuscação em detalhe. Clique no ícone ? ao lado de qualquer opção para ver a documentação dela.
  • Botão Obfuscate - Transforma seu código usando as opções selecionadas. As predefinições VM são processadas no servidor; as predefinições não VM rodam no seu navegador.
  • Envio de vários arquivos Pro - Processe vários arquivos de uma vez e baixe como ZIP.
  • Painel de histórico Pro - Acesse suas ofuscações anteriores e restaure a entrada/saída.