Aller au contenu
Aback Tools Logo

Désobfuscateur Java & assistant de décompilation

Détectez et décodez les motifs obfusqués dans le code source Java. Identifie les séquences d'échappement Unicode, les encodages de chaînes hexadécimales, les littéraux numériques obfusqués, les chaînes encodées en Base64 et la concaténation de tableaux de caractères. Affiche chaque détection avec les valeurs encodées et décodées côte à côte, des scores de confiance et le contexte source. Gratuit, privé et sans inscription.

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!

Fonctionnalités

  • 5 détecteurs de motifs d'obfuscation : détecte automatiquement les séquences d'échappement Unicode (\\uXXXX), le décodage des chaînes hexadécimales, les littéraux numériques obfusqués (hexadécimal, octal, binaire), les chaînes encodées en Base64 et la concaténation de tableaux de caractères. Chaque méthode utilise son propre moteur de détection spécialisé avec appariement de motifs par regex et heuristique.
  • Vue encodé et décodé côte à côte : chaque obfuscation détectée affiche la valeur encodée d'origine à côté du résultat décodé. Les valeurs encodées apparaissent en monospace avec des statistiques de longueur de caractères, tandis que les valeurs décodées sont mises en évidence visuellement pour un balayage et une comparaison rapides.
  • Dépaquetage des nombres obfusqués : détecte et décode les littéraux numériques obfusqués, notamment l'hexadécimal (0xFF), l'octal (0377), le binaire (0b11111111) et les expressions déguisées par opérations binaires. Affiche la valeur numérique d'origine à côté de sa représentation obfusquée avec le contexte complet.
  • Confidentialité locale dans le navigateur : tout le traitement de désobfuscation Java s'exécute entièrement dans votre navigateur. Votre code source Java, les motifs d'obfuscation détectés et les valeurs décodées ne quittent jamais votre appareil. Aucun envoi à un serveur, aucune collecte de données, aucun appel d'API.

Qu'est-ce que l'obfuscation Java ?

L'obfuscation Java transforme le bytecode ou le code source Java pour le rendre nettement plus difficile à rétro-concevoir tout en préservant la fonctionnalité. Contrairement au C++ ou au Rust compilés, le bytecode Java conserve de riches métadonnées, notamment les noms de classes, les signatures de méthodes, les entrées du pool de constantes et les tables de numéros de ligne — autant d'éléments exploitables pour le reverse engineering. Les techniques d'obfuscation courantes incluent les échappements Unicode (\u0048 au lieu de "H"), les chaînes hexadécimales (tableaux d'octets à partir de littéraux hexadécimaux), les nombres obfusqués (hexadécimal, octal, binaire, expressions binaires), l'encodage Base64 et la concaténation de tableaux de caractères (construire des chaînes à partir de caractères individuels). Comprendre ces techniques est la première étape pour désobfusquer efficacement du code Java.

Comment fonctionne notre désobfuscateur Java

Le désobfuscateur analyse le code source Java à l'aide de détecteurs de motifs spécialisés pour chaque technique d'obfuscation connue. Pour les échappements Unicode, il extrait les séquences \uXXXX et les convertit en caractères Unicode correspondants via String.fromCodePoint(). Pour les chaînes hexadécimales, il détecte les paires de chiffres hexadécimaux et les chaînes encodées en Base64 dans les littéraux de chaîne et les convertit en texte lisible. Pour les nombres obfusqués, il identifie les littéraux hexadécimaux (0x), octaux (préfixe 0) et binaires (0b) et les évalue en leurs équivalents décimaux. Pour les tableaux de caractères, il repère les initialisations séquentielles de tableaux de caractères et les motifs de concaténation, en collectant les caractères pour reconstruire les chaînes cachées. Chaque détection inclut le contexte source environnant et les numéros de ligne.

Considérations spécifiques à la désobfuscation Java

L'obfuscation Java présente plusieurs caractéristiques uniques. Les échappements Unicode sont traités lors de la phase du lexer Java — avant même que le compilateur ne voie le code — ce qui signifie que \u0048 équivaut à 'H' au niveau source. Les chaînes hexadécimales en Java apparaissent souvent sous la forme new String(byte[]) ou de constructions similaires. Les nombres obfusqués en Java utilisent le préfixe 0x pour l'hexadécimal, un zéro initial pour l'octal et 0b pour le binaire. ProGuard, l'obfuscateur Java le plus courant, renomme principalement les classes, méthodes et champs, mais prend aussi en charge le chiffrement de chaînes via des plugins tiers comme Stringer ou DexGuard. La sortie désobfusquée vous aide à comprendre à quoi ressemblerait le code avant l'application de l'obfuscation.

Confidentialité et sécurité

Cet outil s'exécute entièrement dans votre navigateur. Votre code source Java, les motifs d'obfuscation détectés et les valeurs décodées ne sont jamais envoyés à un serveur, stockés dans une base de données ni transmis sur un réseau. Toute l'analyse, l'appariement de motifs et le décodage s'exécutent localement sur votre appareil via JavaScript côté client. Il n'y a aucun appel d'API, aucun suivi analytique, aucun cookie ni aucune collecte de données. Cela le rend totalement sûr pour analyser du code Java propriétaire, des sources d'APK décompilées, des échantillons de malware ou des applications d'entreprise confidentielles.

Foire aux questions

L'outil détecte cinq techniques d'obfuscation Java courantes : les séquences d'échappement Unicode (motifs \uXXXX que le lexer Java résout à la compilation), les constructions de chaînes hexadécimales (paires de chiffres hexadécimaux décodées en texte lisible), les littéraux numériques obfusqués (hexadécimal 0xFF, octal 0377 et binaire 0b11111111 convertis en décimal), les chaînes encodées en Base64 dans les littéraux de chaîne, et les motifs de concaténation de tableaux de caractères où des caractères individuels ou de petites chaînes sont combinés pour former un texte caché.

ProGuard renomme principalement les classes, méthodes et champs en noms courts et dénués de sens (a, b, c), que cet outil ne reconstitue pas. Toutefois, l'outil peut détecter et décoder les techniques d'obfuscation basées sur les chaînes ajoutées par des plugins compatibles ProGuard comme Stringer, DexGuard ou des obfuscateurs personnalisés. Pour l'obfuscation des noms de ProGuard, il vous faudrait le fichier mapping.txt de ProGuard pour associer les noms à leurs originaux.

Java autorise les séquences d'échappement Unicode (\uXXXX) n'importe où dans le code source, y compris dans les identifiants et les commentaires. Le compilateur Java traite ces échappements lors de l'analyse lexicale avant l'analyse syntaxique, ce qui fait que \u0048 équivaut à 'H'. Les obfuscateurs s'en servent pour cacher des chaînes en les encodant sous forme de séquences d'échappements Unicode que les outils sans décodage Unicode ne peuvent pas lire. Par exemple, "Hello" devient "\u0048\u0065\u006C\u006C\u006F".

Les obfuscateurs Java encodent souvent les chaînes sous forme de tableaux d'octets hexadécimaux et les construisent à l'exécution à l'aide de méthodes comme new String(byte[]), StringBuilder.append((char)0x48) ou String.format(). L'outil détecte les motifs de chiffres hexadécimaux (0x48, \x48 ou simples paires hexadécimales) dans les littéraux de chaîne et les constructeurs d'octets, en les convertissant en texte lisible. Cela est couramment utilisé avec l'encodage Base64 pour une obfuscation multicouche.

Java prend en charge plusieurs formats de littéraux entiers : décimal, hexadécimal (préfixe 0x), octal (zéro initial) et binaire (préfixe 0b, Java 7+). Les obfuscateurs les exploitent pour déguiser des valeurs numériques. Par exemple, le numéro de port 8080 peut apparaître sous la forme 0x1F90, 017620 ou 0b1111110010000. L'outil détecte tous ces formats dans les expressions numériques et les évalue en leurs équivalents décimaux avec le contexte source complet.

Non. L'outil couvre les techniques d'encodage les plus courantes mais présente des limites. Il ne peut pas décoder les algorithmes de chiffrement personnalisés, la construction de chaînes par réflexion, les chaînes générées à l'exécution, les chaînes construites via du code natif (JNI) ou les chaînes décodées par chargement dynamique de classes. De plus, une obfuscation utilisant plusieurs couches d'encodage ou des transformations cryptographiques personnalisées peut nécessiter plusieurs passes ou une analyse manuelle.

Absolument. Le désobfuscateur Java s'exécute entièrement dans votre navigateur. Votre code source Java, les motifs détectés et les valeurs décodées ne sont jamais envoyés à un serveur. Tout le traitement se fait localement sur votre appareil, sans appel d'API, sans analyse et sans collecte de données. C'est totalement sûr pour analyser du code propriétaire, des échantillons de malware ou des applications sensibles.

Oui — 100 % gratuit, sans inscription, sans compte et sans limite d'utilisation. Analysez autant de code Java que nécessaire, autant de fois que vous le souhaitez. Aucune offre premium, aucun frais caché, aucune limitation de débit. L'outil s'exécute entièrement dans votre navigateur — votre code ne quitte jamais votre appareil.