Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jsdeob-workbench — Rétro-ingénierie de JavaScript obfusqué visuellement. Enchaînez les transformations, inspectez les changements AST, écrivez des plugins de désobfuscation réutilisables. | Kitploit
Outils/GitHubGitHub/owl4444/jsdeob-workbench
Analyse StatiqueAnalyse de CodeRétro-ingénierieScripting et AutomatisationDébogueursAnalyse de MalwareAnalyse de BinairesApprentissage et Éducation
GitHubowl4444/jsdeob-workbench

jsdeob-workbench

Rétro-ingénierie de JavaScript obfusqué visuellement. Enchaînez les transformations, inspectez les changements AST, écrivez des plugins de désobfuscation réutilisables.

Voir le dépôt
11810il y a 6 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

jsdeob-workbench

Un atelier visuel pour désobfusquer du JavaScript. Construisez des chaînes de transformations, parcourez-les, écrivez vos propres plugins.

img

img

Démo YouTube

  • https://www.youtube.com/watch?v=7zuqKoJT2BM
  • https://www.youtube.com/watch?v=bOVnPIfjoco

Qu'est-ce que c'est ?

Cette application révèle l'arbre syntaxique abstrait (AST) d'un programme JavaScript. L'idée est venue lors de l'analyse d'un échantillon de malware lié à obfuscator.io, qui m'a amené à en apprendre davantage sur BabelJS pour la désobfuscation. Si vous avez déjà essayé de rétro-ingénierer du JS obfusqué (pensez : bundles webpack, sortie d'obfuscator.io, échantillons de malware packagés), vous savez à quel point c'est pénible. Cet outil vous permet de :

  • Écrire des scripts de transformation basés sur BabelJS
  • Référencer rapidement l'AST depuis le ASTViewer
  • Enchaîner plusieurs transformations visuellement et obtenir un résumé des changements.
  • Partager des plugins avec des collaborateurs (manuellement) et exporter des configurations.
  • Écrire des motifs que vous pourrez réutiliser comme plugins.
  • Sauvegarder des projets pendant que vous analysez d'autres échantillons JS.

Démarrage rapide

root@kitploit:~
npm install
npm start
# Ouvrir http://localhost:3000

C'est tout.

L'interface

Barre latérale gauche - Toutes les transformations disponibles (intégrées + votre recette sous forme de plugins), y compris la chaîne de recettes. (Pensez à Cyberchef)

Milieu - Éditeurs d'entrée/sortie. Collez votre code obfusqué à gauche et visualisez le code transformé à droite.

Panneaux de droite - Visualiseur AST, analyseur de portée, résumé facile à consulter.

img

Analyse de portée

BabelJS nous permet de visualiser la portée et les liaisons. Cela est particulièrement utile pour repérer d'éventuelles variables inutilisées, par exemple. Cette vue permet également de rechercher les endroits où une variable est référencée.

img

Écrire des transformations

Cliquez sur le bouton + ou appuyez sur Ctrl+N pour ouvrir l'éditeur de script. Les transformations sont simplement du code JS avec accès à :

root@kitploit:~
// Variables globales disponibles :
ast        // L'AST Babel parsé
traverse   // Parcourir l'arbre : traverse({ Identifier(path) { ... } })
t          // Types Babel : t.isStringLiteral(node), t.identifier('x')
config     // Configuration utilisateur depuis la carte de recette
stats      // Suivre vos modifications : stats.replaced = 5
parser     // Parser du code : parser.parse('var x = 1')
generate   // Générer du code : generate(node).code
run        // Helper d'évaluation : run('1+1') => 2 (DANGEREUX. C'EST PRÉVU POUR ÊTRE EXÉCUTÉ SUR VOTRE PROPRE MACHINE DANS UN BAC À SABLE)

Exemple - supprimer toutes les chaînes "debug" (StringLiteral) :

root@kitploit:~
// Les deux suivants apparaîtront comme paramètres dans la chaîne de recette, comme dans la capture d'écran suivante
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;

traverse({
  StringLiteral(path) {
    if (path.node.value === targetValue) {
      if (removeMatches) {
        path.remove();
        stats.removed = (stats.removed || 0) + 1;
      }
    }
  }
});

Vous pouvez choisir de :

  • Exécuter ce script directement via (CTRL + ENTER) pour un test rapide
  • Ajouter le script écrit à la chaîne de recette sans le sauvegarder en tant que plugin (comme montré dans la capture d'écran). Vous pourrez le sauvegarder ensuite
  • Le sauvegarder comme plugin une fois que vous savez qu'il fonctionne et que vous souhaitez partager ce plugin avec d'autres.

La capture d'écran ci-dessous montre :

  1. L'éditeur de script (Cliquez sur le nouveau bouton en haut à gauche OU raccourci Ctrl+E)
  2. Après avoir écrit le script BabelJS, ajoutez-le à la chaîne de recette.
  3. Dans la recette, avec le paramètre détecté, vous pouvez modifier le comportement du plugin.
  4. L'éditeur de sortie montre la transformation réussie.

img

Transformations intégrées

Notez qu'elles peuvent échouer selon la technique d'obfuscation et peuvent nécessiter des scripts personnalisés. Vous pouvez également les modifier et les sauvegarder comme nouveau script personnalisé.

Plugins

Déposez vos propres fichiers .js dans les sous-dossiers plugins/<catégorie>/. Ils apparaîtront dans la barre latérale groupés par dossier.

img

Par exemple :

  • Nom : Dérivé du nom du fichier (Bracket-to-dot-notation.js → "Decode Strings")
  • Catégorie : Le nom du sous-dossier (plugins/Utilities/ → catégorie "nyx")
root@kitploit:~
/**
 * Bracket to Dot Notation
 * Change des choses comme console["log"] en console.log
 * 
 * Category: utilities
 */

// Script Editor - Ctrl+Enter pour exécuter, Ctrl+E pour fermer
// Utilisez traverse(visitor) pour modifier l'AST
// Accédez à 't' pour les types Babel

traverse({
  MemberExpression(path) {
    if(path.node.computed === true){
      // c'est la notation crochet
      
      prop = path.node.property
      if(t.isStringLiteral(prop)  &&
          /^[a-zA-Z_][a-zA-Z_0-9]*$/.test(prop.value)
       ){

        path.node.computed = false; // étape 1

      // étape 2 changer le littéral en identifiant
        path.node.property = t.identifier(prop.value)
      

      }
    }
  }

});

Il existe deux méthodes pour ajouter des paramètres :

  1. (Cette méthode a priorité et est hautement recommandée) En suivant ce format dans le code, l'éditeur de script tentera de créer deux paramètres (targetValue et removeMatches)
root@kitploit:~
const targetValue = config.targetValue || 'debug';
const removeMatches = config.removeMatches !== false;
  1. Si des paramètres sont manqués à cause de cas particuliers, la sauvegarde en tant que plugin permet d'ajouter des paramètres supplémentaires qui pourraient avoir été oubliés.

img

Résumé principal

Inclut :

  • Temps pris par chaque plugin pour s'exécuter
  • Statistiques de changement de taille du code
  • Graphique pour visualisation des changements

img

Raccourcis clavier

ToucheAction
Ctrl+EActiver/désactiver l'éditeur de script
Ctrl+Shift+EActiver/désactiver le panneau d'évaluation (DANGEREUX)
Ctrl+SSauvegarder le projet

Construction d'un exécutable autonome

NOTEZ QUE LA VERSION AUTONOME PEUT AVOIR DES PROBLÈMES S'IL Y A BEAUCOUP DE NŒUDS IMBRIQUÉS. LA SOLUTION DE CONTOURNEMENT PEUT NE PAS FONCTIONNER PARFOIS.

Pour construire avec npm, nous pouvons utiliser la commande suivante

root@kitploit:~
npm run build        # Windows uniquement

La sortie va dans dist/. Copiez le dossier plugins/ à côté de l'exécutable si vous voulez vos transformations personnalisées.

Problèmes de taille de pile

Le code profondément imbriqué (comme JSFuck) peut faire sauter la pile. Le script de build tente de l'augmenter automatiquement sous Windows. Si vous obtenez des débordements de pile, essayez de lancer depuis la source avec npm start (utilise --stack-size=65536)

Je n'ai pas trouvé comment augmenter la taille de pile lors de la construction en un exécutable autonome. Si vous savez comment faire, merci de me le faire savoir !

Crédits

Construit avec :

  • Babel - Parsing AST et transformations
  • Monaco Editor - Éditeur de code
  • Express - Serveur backend

img

Des questions ? Des problèmes ? Ouvrez un ticket GitHub.

Télécharger l’outil
NomCe qu'il fait
BeautifierFormate le code joliment
Pliage de constantes1 + 2 → 3, "a" + "b" → "ab"
Décode les chaînesDécode \x48\x65\x6c\x6c\x6f → "Hello"
Intègre les valeurs de tableauIntègre les accès simples aux éléments de tableau
Intègre les tableaux de chaînesIntègre les tableaux de chaînes utilisés par les obfuscateurs
Suppression des prédicats opaquesSupprime les conditions toujours vraies/fausses
Supprimer les commentairesSupprime tous les commentaires du code
Supprimer les IIFEDésenveloppe les wrappers (function(){...})()
Supprimer le code inutiliséSupprime les variables et fonctions mortes
Simplifier les littéraux!0 → true, void 0 → undefined