Saltar al contenido
Aback Tools Logo

Desofuscador de Java y asistente de descompilador

Detecta y decodifica patrones ofuscados en código fuente Java. Identifica secuencias de escape Unicode, codificaciones de cadenas hexadecimales, literales numéricos ofuscados, cadenas codificadas en Base64 y concatenación de arreglos de caracteres. Muestra cada detección con los valores codificados y decodificados uno al lado del otro, calificaciones de confianza y contexto del código fuente. Gratis, privado y sin registro.

Java Deobfuscator & Decompiler Helper

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.

Examples:

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!

Características

  • 5 detectores de patrones de ofuscación: detecta automáticamente secuencias de escape Unicode (\\uXXXX), decodificación de cadenas hexadecimales, literales numéricos ofuscados (hexadecimal, octal, binario), cadenas codificadas en Base64 y concatenación de arreglos de caracteres. Cada método usa su propio motor de detección especializado con coincidencia de patrones por regex y heurística.
  • Vista codificado y decodificado en paralelo: cada ofuscación detectada muestra el valor codificado original junto al resultado decodificado. Los valores codificados aparecen en monoespaciado con estadísticas de longitud de caracteres, mientras que los valores decodificados se resaltan visualmente para un escaneo y comparación rápidos.
  • Desempaquetado de números ofuscados: detecta y decodifica literales numéricos ofuscados, incluidos hexadecimal (0xFF), octal (0377), binario (0b11111111) y expresiones disfrazadas con operaciones bit a bit. Muestra el valor numérico original junto a su representación ofuscada con el contexto completo.
  • Privacidad local en el navegador: todo el procesamiento de desofuscación de Java se ejecuta por completo en tu navegador. Tu código fuente Java, los patrones de ofuscación detectados y los valores decodificados nunca salen de tu dispositivo. Sin subidas a servidores, sin recopilación de datos, sin llamadas a API de ningún tipo.

¿Qué es la ofuscación de Java?

La ofuscación de Java transforma el bytecode o el código fuente de Java para hacer mucho más difícil su ingeniería inversa, conservando la funcionalidad. A diferencia del C++ o Rust compilados, el bytecode de Java conserva metadatos muy ricos, como nombres de clases, firmas de métodos, entradas del pool de constantes y tablas de números de línea, todo lo cual puede aprovecharse para la ingeniería inversa. Las técnicas de ofuscación comunes incluyen escapes Unicode (\u0048 en lugar de "H"), cadenas hexadecimales (arreglos de bytes a partir de literales hexadecimales), números ofuscados (hexadecimal, octal, binario, expresiones bit a bit), codificación Base64 y concatenación de arreglos de caracteres (construir cadenas a partir de caracteres individuales). Comprender estas técnicas es el primer paso para desofuscar código Java de forma eficaz.

Cómo funciona nuestro desofuscador de Java

El desofuscador escanea el código fuente Java usando detectores de patrones especializados para cada técnica de ofuscación conocida. Para los escapes Unicode, extrae secuencias \uXXXX y las convierte a los caracteres Unicode correspondientes usando String.fromCodePoint(). Para las cadenas hexadecimales, detecta pares de dígitos hexadecimales y cadenas codificadas en Base64 dentro de literales de cadena y las convierte a texto legible. Para los números ofuscados, identifica literales hexadecimales (0x), octales (prefijo 0) y binarios (0b) y los evalúa a sus equivalentes decimales. Para los arreglos de caracteres, encuentra inicializaciones secuenciales de arreglos de caracteres y patrones de concatenación, recopilando los caracteres para reconstruir cadenas ocultas. Cada detección incluye el contexto del código fuente circundante y los números de línea.

Consideraciones específicas de la desofuscación de Java

La ofuscación de Java tiene varias características únicas. Los escapes Unicode se procesan durante la fase del lexer de Java, antes de que el compilador vea siquiera el código, lo que significa que \u0048 equivale a 'H' a nivel del código fuente. Las cadenas hexadecimales en Java suelen aparecer como new String(byte[]) o construcciones similares. Los números ofuscados en Java usan el prefijo 0x para hexadecimal, el cero inicial para octal y 0b para binario. ProGuard, el ofuscador de Java más común, principalmente renombra clases, métodos y campos, pero también admite el cifrado de cadenas mediante complementos de terceros como Stringer o DexGuard. La salida desofuscada te ayuda a entender cómo se vería el código antes de que se aplicara la ofuscación.

Privacidad y seguridad

Esta herramienta se ejecuta por completo en tu navegador. Tu código fuente Java, los patrones de ofuscación detectados y los valores decodificados nunca se suben a ningún servidor, se almacenan en ninguna base de datos ni se transmiten por ninguna red. Todo el análisis, la coincidencia de patrones y la decodificación se ejecutan localmente en tu dispositivo usando JavaScript del lado del cliente. No hay llamadas a API, seguimiento analítico, cookies ni recopilación de datos de ningún tipo. Esto la hace totalmente segura para analizar código Java propietario, fuentes de APK descompiladas, muestras de malware o aplicaciones empresariales confidenciales.

Preguntas frecuentes

La herramienta detecta cinco técnicas comunes de ofuscación de Java: secuencias de escape Unicode (patrones \uXXXX que el lexer de Java resuelve en tiempo de compilación), construcciones de cadenas hexadecimales (pares de dígitos hexadecimales decodificados a texto legible), literales numéricos ofuscados (hexadecimal 0xFF, octal 0377 y binario 0b11111111 convertidos a decimal), cadenas codificadas en Base64 dentro de literales de cadena y patrones de concatenación de arreglos de caracteres donde se combinan caracteres individuales o cadenas pequeñas para formar texto oculto.

ProGuard principalmente renombra clases, métodos y campos a nombres cortos sin significado (a, b, c), que esta herramienta no revierte. Sin embargo, la herramienta puede detectar y decodificar las técnicas de ofuscación basadas en cadenas que añaden complementos compatibles con ProGuard como Stringer, DexGuard u ofuscadores personalizados. Para la ofuscación de nombres de ProGuard, necesitarías el archivo mapping.txt de ProGuard para asignar los nombres a sus originales.

Java permite secuencias de escape Unicode (\uXXXX) en cualquier parte del código fuente, incluso dentro de identificadores y comentarios. El compilador de Java procesa estos escapes durante el análisis léxico antes del análisis sintáctico, por lo que \u0048 equivale a 'H'. Los ofuscadores usan esto para ocultar cadenas codificándolas como secuencias de escapes Unicode que las herramientas sin decodificación Unicode no pueden leer. Por ejemplo, "Hello" se convierte en "\u0048\u0065\u006C\u006C\u006F".

Los ofuscadores de Java suelen codificar cadenas como arreglos de bytes hexadecimales y construirlas en tiempo de ejecución usando métodos como new String(byte[]), StringBuilder.append((char)0x48) o String.format(). La herramienta detecta patrones de dígitos hexadecimales (0x48, \x48 o pares hexadecimales simples) dentro de literales de cadena y constructores de bytes, convirtiéndolos a texto legible. Esto se usa comúnmente junto con la codificación Base64 para ofuscación de varias capas.

Java admite varios formatos de literales enteros: decimal, hexadecimal (prefijo 0x), octal (cero inicial) y binario (prefijo 0b, Java 7+). Los ofuscadores los aprovechan para disfrazar valores numéricos. Por ejemplo, el número de puerto 8080 puede aparecer como 0x1F90, 017620 o 0b1111110010000. La herramienta detecta todos estos formatos dentro de expresiones numéricas y los evalúa a sus equivalentes decimales con el contexto completo del código fuente.

No. La herramienta cubre las técnicas de codificación más comunes pero tiene limitaciones. No puede decodificar algoritmos de cifrado personalizados, construcción de cadenas basada en reflexión, cadenas generadas en tiempo de ejecución, cadenas construidas mediante código nativo (JNI) ni cadenas decodificadas mediante carga dinámica de clases. Además, la ofuscación que usa varias capas de codificación o transformaciones criptográficas personalizadas puede requerir varias pasadas o análisis manual.

Por supuesto. El desofuscador de Java se ejecuta por completo en tu navegador. Tu código fuente Java, los patrones detectados y los valores decodificados nunca se suben a ningún servidor. Todo el procesamiento ocurre localmente en tu dispositivo sin llamadas a API, sin analíticas y sin recopilación de datos. Esto es totalmente seguro para analizar código propietario, muestras de malware o aplicaciones sensibles.

Sí, 100 % gratis, sin registro, sin cuenta y sin límites de uso. Analiza todo el código Java que necesites, tantas veces como quieras. No hay planes premium, cargos ocultos ni límites de velocidad. La herramienta se ejecuta por completo en tu navegador: tu código nunca sale de tu dispositivo.