Injetor de predicados opacos
Injete predicados opacos sempre verdadeiros e sempre falsos no código-fonte para confundir ferramentas de análise estática e leitores humanos. Compatível com 6 tipos de predicado e 12 linguagens de programação, com densidade de injeção configurável. Todo o processamento é local e privado.
Inject always-true and always-false opaque predicates into your code to confuse static analysis tools and human readers. Supports 6 predicate types, 12 programming languages, and configurable injection density. All processing is local and private.
Try an example:
Paste source code and click Inject Opaque Predicates to add always-true and always-false conditions that confuse static analysis. Supports 6 predicate types and 12 programming languages. Configure type, language, and density in the settings above.
Por que usar nosso injetor de predicados opacos?
- Vários tipos de predicado: escolha entre seis tipos distintos de predicado opaco: aritmético invariante (expressões sempre verdadeiras/falsas), truques XOR e bit a bit, predicados de coerção de tipo, invariantes sensíveis ao fluxo, verificações autorreferenciais e predicados de código morto. Cada tipo usa propriedades matemáticas diferentes que resistem à detecção por padrões.
- Várias linguagens de saída: gere predicados opacos para JavaScript, Python, TypeScript, Java, C, C++, C#, Go, Rust, PHP, Ruby e Swift. O injetor adapta a sintaxe do predicado aos operadores e ao sistema de tipos de cada linguagem, preservando o invariante matemático que torna o predicado opaco.
- Densidade de injeção configurável: controle quantos predicados opacos injetar: leve (1-2 predicados), média (3-5 predicados) ou intensa (6-10+ predicados). Aumente a densidade para ofuscação mais forte ou mantenha leve para minimizar o crescimento do código. Os predicados são distribuídos aleatoriamente pelo código.
- Processamento local e privado: toda a geração de predicados e a transformação do código ocorrem inteiramente no seu navegador. Seu código-fonte nunca sai do seu dispositivo. Sem chamadas de API, sem análises e sem coleta de dados — privacidade total para o seu código proprietário. Sem cadastro nem conta.
O que é um predicado opaco?
Um predicado opaco é uma expressão condicional no código cujo resultado é conhecido (sempre verdadeiro ou sempre falso), mas que parece uma condição legítima de execução. Diferentemente das condicionais normais, os predicados opacos são projetados para dificultar a avaliação em tempo de compilação por ferramentas de análise estática. Por exemplo, em aritmética inteira é sempre verdadeiro (já que elevar qualquer inteiro ao quadrado produz um resultado não negativo), mas um descompilador ingênuo pode não reconhecer esse invariante. Os predicados opacos são um bloco fundamental da ofuscação de código: adicionam caminhos de código morto que nunca executam (predicados sempre falsos) ou garantem que certos blocos sempre executem (predicados sempre verdadeiros), confundindo tanto leitores humanos quanto ferramentas de análise automatizada.
Como funciona o injetor de predicados opacos
- Análise da entrada: a ferramenta aceita código-fonte como entrada. O código é analisado como texto simples para identificar possíveis pontos de injeção: antes de definições de funções, antes de blocos if/else, dentro de corpos de funções em limites de instruções e ao final das funções. Os limites de instrução são identificados por quebras de linha e ponto e vírgula.
- Seleção do predicado: com base no tipo de predicado e na linguagem de destino escolhidos, a ferramenta gera expressões de predicado opaco com a sintaxe específica da linguagem. Para JavaScript, pode ser if ((a + a) / 2 === a) (sempre verdadeiro para números). Para Python, pode usar truques de coerção como if (True == 1) (sempre verdadeiro).
- Geração de variáveis: para que os predicados pareçam legítimos, o injetor gera nomes de variáveis aleatórios que combinam com o estilo de codificação da linguagem de entrada. As variáveis são declaradas com os tipos adequados e inicializadas com valores que fazem o predicado avaliar corretamente.
- Injeção: os predicados são injetados em locais válidos aleatórios ao longo do código. Cada predicado envolve um bloco de código (para sempre verdadeiros) ou insere um bloco de código morto (para sempre falsos). O injetor aplica uma densidade configurável para controlar quantos predicados são adicionados.
Tipos de predicados opacos
- Aritmético invariante: usa propriedades matemáticas que sempre se mantêm. Exemplos: x * 0 === 0 (sempre verdadeiro), x * x >= 0 (sempre verdadeiro para inteiros), y - y === 0 (sempre verdadeiro). Exploram invariantes algébricos.
- Truques XOR e bit a bit: usa propriedades das operações bit a bit. Exemplos: x ^ x === 0 (sempre verdadeiro para qualquer x), (x & ~x) === 0 (sempre verdadeiro), x | x === x (sempre verdadeiro). Difíceis de analisar estaticamente.
- Predicados de coerção de tipo: exploram conversões implícitas de tipo. Exemplos: 1 + 1 !== "11" (sempre verdadeiro — soma numérica contra concatenação de string), [] == false (sempre verdadeiro em JS). Específicos da linguagem e muito confusos.
- Invariantes sensíveis ao fluxo: usam propriedades válidas em pontos específicos do código. Exemplo: typeof x === typeof x (sempre verdadeiro), x === x (sempre verdadeiro exceto NaN). Simples, mas eficazes.
- Predicados de código morto: condições sempre falsas que envolvem código que nunca executa. Criam blocos inalcançáveis que confundem a análise de fluxo de controle. Exemplo: if (false && complexCondition), quando o compilador não consegue provar facilmente que a condição é sempre falsa.
Privacidade e segurança
Esta ferramenta roda inteiramente no seu navegador com JavaScript do lado do cliente. Seu código-fonte, os predicados gerados e a saída ofuscada nunca são enviados a nenhum servidor, armazenados em nenhum banco de dados nem transmitidos pela rede. Toda a geração de predicados, a análise do código, a renomeação de variáveis e a formatação da saída são executadas localmente no seu dispositivo. Não há chamadas de API, rastreamento analítico, cookies nem coleta de dados de qualquer tipo. Isso a torna totalmente segura para ofuscar código proprietário, software licenciado ou algoritmos sensíveis.
Perguntas frequentes
Um predicado opaco é uma expressão condicional que sempre resulta no mesmo valor (sempre verdadeiro ou sempre falso), mas parece uma condição legítima de execução. Exemplos: `x * 0 === 0` (sempre verdadeiro) ou `x !== x` (sempre falso para números). São usados para confundir ferramentas de análise estática e leitores humanos.
Seis tipos: aritmético invariante (ex.: `x * 0 === 0`), truques XOR e bit a bit (ex.: `x ^ x === 0`), coerção de tipo (ex.: `[] == false`), invariantes sensíveis ao fluxo (ex.: `typeof x === typeof x`), predicados de código morto (sempre falsos) e combinado (mistura todos os tipos para complexidade máxima).
JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby e Swift. Os predicados são adaptados a cada linguagem com os operadores, sistemas de tipos e convenções de sintaxe adequados.
Não. Predicados sempre verdadeiros garantem que o código envolvido sempre execute. Predicados sempre falsos envolvem código morto inalcançável. A lógica e o comportamento do programa permanecem completamente inalterados. Só o tamanho do código aumenta e há uma sobrecarga mínima de execução ao avaliar as condições.
Descompiladores básicos não detectam a maioria dos predicados opacos. A execução simbólica avançada pode avaliar predicados aritméticos simples. Usar vários tipos de predicado juntos oferece proteção mais forte do que qualquer tipo isolado.
Com certeza. O injetor roda inteiramente no seu navegador. Seu código-fonte, os predicados gerados e a saída ofuscada nunca são enviados a nenhum servidor nem transmitidos pela rede. Todo o processamento é local, sem chamadas de API nem coleta de dados.
A densidade leve adiciona 1-2 predicados (~10-30 linhas). A média adiciona 3-5 predicados (~30-80 linhas). A intensa adiciona 6-10+ predicados (~80-200+ linhas). Cada predicado costuma adicionar 2-5 linhas, incluindo as declarações de variáveis.
Sim — 100% grátis, sem cadastro, sem conta e sem limites de uso. Ofusque quanto código precisar. Sem planos premium, cobranças ocultas ou limites de uso. Seu código nunca sai do seu dispositivo.