Déobfuscateur JavaScript
Collez un blob de JavaScript obfusqué, chaînes encodées en hexadécimal, noms de variables à une lettre, une boucle de décodeur en haut, et l’outil déplie les couches : déséchapper les chaînes, intégrer le tableau de recherche, renommer les variables en espaces réservés lisibles, aplatir les wrappers triviaux et embellir le résultat. Utile pour analyser des extraits suspects que vous avez extraits d’une page ou d’un lien pastebin collé.
Comment déobfusquer JavaScript
-
1
Collez la source obfusquée
Minifié, empaqueté, ou sorti d'outils de style `javascript-obfuscator.io`.
-
2
Laissez le parseur le traiter
Les tableaux de chaînes sont décodés, les séquences numériques sont évaluées, et les branches de code mort sont élaguées.
-
3
Appliquer le renommage
Les variables à une lettre `a`/`b`/`c` sont renommées en `var1`, `var2`, etc. des espaces réservés lisibles, pas nécessairement des noms significatifs.
-
4
Embellir
Indentez, ajoutez des nouvelles lignes, et sortez un code que vous pouvez réellement lire et comprendre.
Techniques que le déobfuscateur inverse
| Obfuscation | Inversion |
|---|---|
| Littéraux de chaînes échappés en hex | Décodez \x48\x69 en "Hi" |
| Identifiants échappés en Unicode | \u006E\u0061\u006D\u0065 -> name |
| Tableau de chaînes + fonction de décodeur | Intégrez le tableau, appelez le décodeur au moment de l’analyse |
| Pliage de constantes numériques | 0x1F3 + 5 -> 504 |
Wrappers eval(...) |
Remontez le code interne au niveau supérieur |
| Aplatissement du flux de contrôle (machine à états) | Détectez le switch-case, reconstruisez le flux |
| Code mort / ternaires inutiles | Supprimez les branches qui ne s’exécutent jamais |
Noms de style _0x1a2b3c() |
Remplacez par var1, var2 incrémentés |
Limites : ce que l’outil ne fait pas
- Récupérer les noms de variables d’origine. Une fois que
userEmailest renommé ena, aucun outil ne peut le deviner. Vous obtenez une structure lisible, pas une sémantique d’origine. - Déballer des virtualisateurs personnalisés. Les obfuscateurs commerciaux lourds (JScrambler, niveaux entreprise d’Obfuscator.io) introduisent une VM personnalisée qui interprète le bytecode. Les vaincre nécessite une ingénierie inverse manuelle.
- Exécuter du code arbitraire. Le déobfuscateur évalue des expressions pures statiquement. Il ne récupérera pas de ressources distantes, ne créera pas d’éléments DOM ou ne communiquera pas avec le réseau.
Cas d’utilisation typiques
- Recherche en sécurité informatique : décomposer un script suspect arrivé par e-mail ou servi par un CDN compromis.
- Archéologie de code : récupérer du code hérité où le seul artefact survivant est un bundle minifié.
- Apprentissage : comprendre ce qu’une obfuscation de niveau tutoriel fait réellement en coulisses.
Sécurité et éthique
Ne jamais exécuter de JavaScript non fiable dans un onglet de navigateur connecté à quoi que ce soit d’important, le code peut lire des cookies, appeler des API internes et exfiltrer l’état. Le déobfuscateur lui-même opère sur la source en tant que texte ; il n’exécute pas le code que vous collez.
Déobfusquez uniquement le code que vous êtes autorisé à analyser. L’ingénierie inverse de logiciels sous licence peut être restreinte dans votre juridiction.
Questions fréquentes
Non. Une fois que l’obfuscateur renomme userEmail en _0x1a2b3c, le nom d’origine est perdu. Le déobfuscateur vous donne des espaces réservés lisibles (var1, var2) et une structure correcte, mais pas les noms sémantiques d’origine.
Non. Il analyse le code en tant qu’AST et applique des transformations statiques. Les expressions pures (comme 0x1F3 + 5) sont pliées, mais rien ne touche le réseau, les cookies ou le DOM.
Oui, mais la sortie du bundler est minifiée plutôt que délibérément obfusquée, donc le résultat est juste un code embelli avec des wrappers de module restaurés. Les cartes sources, si disponibles séparément, vous donnent des noms bien meilleurs.
Les outils commerciaux lourds (JScrambler entreprise, VMs personnalisées) introduisent un interpréteur de bytecode que l’analyse statique ne peut pas déchiffrer. L’outil obtiendra la couche de surface mais la logique centrale reste opaque sans inversion manuelle.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Compteur de FPS
Mesurez les FPS du navigateur avec requestAnimationFrame : lissage, fréquence d'images min et max, seuil d'alerte et graphique facultatif. Tout se passe en local, sans envoi ni API.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Générateur de flèches CSS
Créez localement une flèche CSS avec direction, couleur, taille et épaisseur de bordure, puis copiez la règle.
Outil disponible dans d’autres langues
- เครื่องถอดรหัส JavaScript [TH]
- 자바스크립트 디오프스버커 [KO]
- Deobfuscator JavaScript [ID]
- Desofuscador de JavaScript [PT]
- JavaScript-deobfuscator [NL]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- JavaScript-Deobfuscator [DE]
- Desofuscador de JavaScript [ES]
- JavaScript-deobfuscator [SV]
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- JavaScriptデオブファスカータ [JA]
- Deobfuskator JavaScriptu [PL]
- JavaScript反混淆工具 [ZH]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]