Desofuscador de Java e assistente de descompilador
Detecte e decodifique padrões ofuscados em código-fonte Java. Identifica sequências de escape Unicode, codificações de strings hexadecimais, literais numéricos ofuscados, strings codificadas em Base64 e concatenação de arrays de caracteres. Mostra cada detecção com valores codificados e decodificados lado a lado, classificações de confiança e contexto do código-fonte. Grátis, privado e sem cadastro.
Detect and decode obfuscated patterns in Java source code. Identifies Unicode escapes, hex string encodings, obfuscated numeric literals, Base64 encoded strings, and char array concatenation. Shows encoded and decoded values side by side with detection confidence.
Paste Java code above and click Analyze Java Code to detect and decode obfuscated patterns. The tool identifies Unicode escapes, hex string encodings, obfuscated numeric literals, Base64 strings, and char array concatenation. Try loading an example to see how it works!
Recursos
- 5 detectores de padrões de ofuscação: detecta automaticamente sequências de escape Unicode (\\uXXXX), decodificação de strings hexadecimais, literais numéricos ofuscados (hexadecimal, octal, binário), strings codificadas em Base64 e concatenação de arrays de caracteres. Cada método usa seu próprio motor de detecção especializado com correspondência de padrões por regex e heurística.
- Visualização codificado e decodificado lado a lado: cada ofuscação detectada mostra o valor codificado original ao lado do resultado decodificado. Os valores codificados aparecem em monoespaçado com estatísticas de comprimento de caracteres, enquanto os valores decodificados são destacados visualmente para leitura e comparação rápidas.
- Desempacotamento de números ofuscados: detecta e decodifica literais numéricos ofuscados, incluindo hexadecimal (0xFF), octal (0377), binário (0b11111111) e expressões disfarçadas com operações bit a bit. Mostra o valor numérico original ao lado de sua representação ofuscada com o contexto completo.
- Privacidade local no navegador: todo o processamento de desofuscação de Java é executado inteiramente no seu navegador. Seu código-fonte Java, os padrões de ofuscação detectados e os valores decodificados nunca saem do seu dispositivo. Sem envios a servidores, sem coleta de dados, sem chamadas de API de qualquer tipo.
O que é ofuscação de Java?
A ofuscação de Java transforma o bytecode ou o código-fonte Java para torná-lo significativamente mais difícil de fazer engenharia reversa, preservando a funcionalidade. Diferentemente do C++ ou Rust compilados, o bytecode Java retém metadados ricos, incluindo nomes de classes, assinaturas de métodos, entradas do pool de constantes e tabelas de números de linha — todos exploráveis para engenharia reversa. As técnicas comuns de ofuscação incluem escapes Unicode (\u0048 em vez de "H"), strings hexadecimais (arrays de bytes a partir de literais hexadecimais), números ofuscados (hexadecimal, octal, binário, expressões bit a bit), codificação Base64 e concatenação de arrays de caracteres (construir strings a partir de caracteres individuais). Entender essas técnicas é o primeiro passo para desofuscar código Java de forma eficaz.
Como funciona nosso desofuscador de Java
O desofuscador examina o código-fonte Java usando detectores de padrões especializados para cada técnica de ofuscação conhecida. Para os escapes Unicode, extrai sequências \uXXXX e as converte nos caracteres Unicode correspondentes usando String.fromCodePoint(). Para as strings hexadecimais, detecta pares de dígitos hexadecimais e strings codificadas em Base64 dentro de literais de string e as converte em texto legível. Para os números ofuscados, identifica literais hexadecimais (0x), octais (prefixo 0) e binários (0b) e os avalia para seus equivalentes decimais. Para os arrays de caracteres, encontra inicializações sequenciais de arrays de caracteres e padrões de concatenação, coletando os caracteres para reconstruir strings ocultas. Cada detecção inclui o contexto do código-fonte ao redor e os números de linha.
Considerações específicas da desofuscação de Java
A ofuscação de Java tem várias características únicas. Os escapes Unicode são processados durante a fase do lexer do Java — antes mesmo de o compilador ver o código — o que significa que \u0048 equivale a 'H' no nível do código-fonte. As strings hexadecimais em Java costumam aparecer como new String(byte[]) ou construções semelhantes. Os números ofuscados em Java usam o prefixo 0x para hexadecimal, zero inicial para octal e 0b para binário. O ProGuard, o ofuscador de Java mais comum, renomeia principalmente classes, métodos e campos, mas também suporta criptografia de strings por meio de plugins de terceiros como Stringer ou DexGuard. A saída desofuscada ajuda você a entender como o código seria antes de a ofuscação ser aplicada.
Privacidade e segurança
Esta ferramenta é executada inteiramente no seu navegador. Seu código-fonte Java, os padrões de ofuscação detectados e os valores decodificados nunca são enviados a nenhum servidor, armazenados em nenhum banco de dados ou transmitidos por nenhuma rede. Toda a análise, correspondência de padrões e decodificação é executada localmente no seu dispositivo usando JavaScript do lado do cliente. Não há chamadas de API, rastreamento de analytics, cookies ou coleta de dados de qualquer tipo. Isso a torna totalmente segura para analisar código Java proprietário, fontes de APK descompiladas, amostras de malware ou aplicativos corporativos confidenciais.
Perguntas frequentes
A ferramenta detecta cinco técnicas comuns de ofuscação de Java: sequências de escape Unicode (padrões \uXXXX que o lexer do Java resolve em tempo de compilação), construções de strings hexadecimais (pares de dígitos hexadecimais decodificados para texto legível), literais numéricos ofuscados (hexadecimal 0xFF, octal 0377 e binário 0b11111111 convertidos para decimal), strings codificadas em Base64 dentro de literais de string e padrões de concatenação de arrays de caracteres em que caracteres individuais ou pequenas strings são combinados para formar texto oculto.
O ProGuard renomeia principalmente classes, métodos e campos para nomes curtos sem significado (a, b, c), que esta ferramenta não reverte. No entanto, a ferramenta pode detectar e decodificar as técnicas de ofuscação baseadas em strings que plugins compatíveis com ProGuard, como Stringer, DexGuard ou ofuscadores personalizados, adicionam por cima do ProGuard. Para a ofuscação de nomes do ProGuard, você precisaria do arquivo mapping.txt do ProGuard para mapear os nomes de volta aos originais.
O Java permite sequências de escape Unicode (\uXXXX) em qualquer lugar do código-fonte, inclusive dentro de identificadores e comentários. O compilador Java processa esses escapes durante a análise léxica antes da análise sintática, tornando \u0048 equivalente a 'H'. Os ofuscadores usam isso para ocultar strings, codificando-as como sequências de escapes Unicode que ferramentas sem decodificação Unicode não conseguem ler. Por exemplo, "Hello" se torna "\u0048\u0065\u006C\u006C\u006F".
Ofuscadores de Java frequentemente codificam strings como arrays de bytes hexadecimais e as constroem em tempo de execução usando métodos como new String(byte[]), StringBuilder.append((char)0x48) ou String.format(). A ferramenta detecta padrões de dígitos hexadecimais (0x48, \x48 ou pares hexadecimais simples) dentro de literais de string e construtores de bytes, convertendo-os para texto legível. Isso é comumente usado junto com a codificação Base64 para ofuscação em várias camadas.
O Java suporta vários formatos de literais inteiros: decimal, hexadecimal (prefixo 0x), octal (zero inicial) e binário (prefixo 0b, Java 7+). Os ofuscadores exploram isso para disfarçar valores numéricos. Por exemplo, o número de porta 8080 pode aparecer como 0x1F90, 017620 ou 0b1111110010000. A ferramenta detecta todos esses formatos dentro de expressões numéricas e os avalia para seus equivalentes decimais com o contexto completo do código-fonte.
Não. A ferramenta cobre as técnicas de codificação mais comuns, mas tem limitações. Ela não consegue decodificar algoritmos de criptografia personalizados, construção de strings baseada em reflexão, strings geradas em tempo de execução, strings construídas via código nativo (JNI) ou strings decodificadas por carregamento dinâmico de classes. Além disso, a ofuscação que usa várias camadas de codificação ou transformações criptográficas personalizadas pode exigir várias passagens ou análise manual.
Com certeza. O desofuscador de Java é executado inteiramente no seu navegador. Seu código-fonte Java, os padrões detectados e os valores decodificados nunca são enviados a nenhum servidor. Todo o processamento acontece localmente no seu dispositivo, sem chamadas de API, sem analytics e sem coleta de dados. É totalmente seguro para analisar código proprietário, amostras de malware ou aplicativos sensíveis.
Sim — 100% gratuita, sem cadastro, sem conta e sem limites de uso. Analise quanto código Java precisar, quantas vezes quiser. Não há planos premium, cobranças ocultas ou limites de taxa. A ferramenta é executada inteiramente no seu navegador — seu código nunca sai do seu dispositivo.