Communitygithub.com

DQmyth/js-reverse-ops

Compétence de rétro-ingénierie JavaScript de qualité production : workflows basés sur les preuves, environnements de test reproduits à l'identique, 19 procédures éprouvées, 136 scripts, benchmarks publics.

Qu'est-ce que js-reverse-ops ?

Cette compétence fournit un workflow structuré et reproductible de rétro-ingénierie JavaScript, conçu pour une utilisation en production plutôt que pour des sessions de débogage ad hoc. Elle prend en charge les plates-formes agent (Claude, Cursor, Codex, etc.) et propose plus de 130 scripts et 19 procédures éprouvées, couvrant la classification de cibles, l'exécution locale de code JavaScript, la reconstruction d'environnements, la capture et la relecture d'exécution, ainsi que le diagnostic de défaillances. La compétence inclut des outils de validation de qualité publique, d'analyse des risques de publication, de comparaison externe avec d'autres solutions de rétro-ingénierie, et de génération de clients de relecture (Node et Python). Elle intègre également des profils de détection anti-analyse et des procédures spécialisées pour des scénarios complexes (signatures conditionnées par des jetons de courte durée, VM personnalisées, bibliothèques cryptographiques avec vérification d'environnement). L'approche privilégie les preuves d'exécution vérifiées sur navigateur aux méthodes statiques, et recommande l'utilisation d'outils spécialisés (webcrack, wakaru, ast-grep, Babel) pour des tâches précises sans remplacer les observations réelles.

Compatible avec~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add DQmyth/js-reverse-ops

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

JS Reverse Ops

Utilisez cette compétence comme un workflow structuré de rétro-ingénierie, et non comme une session de débogage ad hoc.

Pour commencer

  1. MAINTENANT : classifiez la demande (récupération de signature, désobfuscation hors ligne, traçage d'exécution, reconstruction d'environnement, ...) et chargez uniquement les fichiers référencés pour ce type de tâche.
  2. MAINTENANT : si le travail implique l'exécution locale de JS dans un navigateur, lisez d'abord references/env-rebuild-recipes.md — 10 fiches techniques (classes masquées natives, sondes de marquage de classe, absence de builtins d'hôte, vrais temporisateurs, proxy en ligne, oracles de calibrage) qui préviennent les erreurs les plus coûteuses d'environnement de test.
  3. MAINTENANT : en cas de doute sur les dépendances ou les outils, suivez references/toolchain-bootstrap.md avant d'écrire des sondes.
  4. SUIVANT : si un flux reconstruit "fonctionne presque" (premier jeton valide, échecs ultérieurs, réponses 200 mais erronées, divergence de clé inexpliquée), arrêtez les sondes et lisez references/misdiagnosis-patterns.md.
  5. AGISSEZ : entrez dans l'étape correspondante du Workflow Principal et exécutez — ne vous arrêtez pas à la confirmation.

Périmètre

Cette version publique conserve :

  • le routage par étapes pour Localiser, Exécution, Récupérer et Rejouer
  • des scripts réutilisables pour l'extraction, la normalisation des captures d'exécution, l'échafaudage de relecture et la génération d'artefacts
  • des références génériques, des règles et des modèles pour la rétro-ingénierie JavaScript exécutée par navigateur

Cette version publique exclut intentionnellement :

  • les bibliothèques de cas privés ou spécifiques à un site
  • les jeux de tests capturés et les corpus de validation
  • les cibles de benchmark concrètes, les identifiants et les notes de relecture liés à des sites nommés

Workflow Principal

Partez du contexte fiable le plus petit :

  • cible inconnue : exécutez node scripts/js_reverse_ops.js <cible-url-ou-fichier> [--json]
  • notes existantes, journaux de sondes ou résumés d'échecs : exécutez node scripts/map_case_to_pattern.js <notes.md> et passez --notes <notes.md> à scripts/js_reverse_ops.js
  • exécution réalisable d'une procédure : exécutez node scripts/run_playbook.js <cible> --notes <notes.md> --out runs/courant pour produire un cahier de route, un plan de routage, des artefacts de démarrage/provenance/risque/relecture et un échafaudage de sondes
  • commande d'opérateur suivante : exécutez node scripts/recommend_next_action.js runs/courant --json quand un répertoire d'exécution existe mais que des blocages d'exécution, de relecture ou de préparation rendent l'étape suivante floue
  • cible JS ou HTML locale : exécutez scripts/triage_js.sh <chemin> puis le plus petit extracteur correspondant à la famille de la cible
  • cible avec navigateur : vérifiez l'état du navigateur et du pont avant de collecter des preuves d'exécution
  • symptômes anti-analyse : exécutez node scripts/select_anti_detection_profile.js --symptoms "<symptômes>" avant de changer la stratégie de sondes ou de navigateur ; la sélection de profil modifie uniquement la stratégie d'observation et doit toujours être suivie d'une vérification d'exécution/relecture
  • contrôle qualité public : exécutez node scripts/run_public_benchmarks.js avant de publier ou après avoir modifié le routeur, la mémoire des motifs, les exemples ou les procédures
  • audit des risques de publication publique : exécutez node scripts/explain_public_release_risk.js --json --strict pour expliquer les risques liés aux fichiers suivis, secrets, chemins, captures et artefacts générés avant de pousser
  • résumé des capacités publiques : exécutez node scripts/generate_capability_scorecard.js pour comparer cette compétence à d'autres packages de rétro-ingénierie
  • résumé des lacunes du marché : exécutez node scripts/generate_market_gap_scorecard.js pour décider comment améliorer cette compétence par rapport aux compétences avancées de rétro-ingénierie et aux chaînes d'outils MCP
  • matrice de régression externe : exécutez node scripts/compare_external_skill_matrix.js --json pour comparer cette compétence aux profils de MCP navigateur, décompilateur statique, rétro-ingénierie JS agentique et rétro-ingénierie inter-domaines
  • planification des tests de fumée MCP navigateur : exécutez node scripts/plan_browser_mcp_smoke.js --server-family chrome_devtools_mcp --json avant d'exécuter des vérifications de fumée spécifiques à l'adaptateur
  • vérification des tests de fumée MCP navigateur : exécutez node scripts/verify_browser_mcp_smoke_record.js --record <mcp-execution.json> --json avant de déclarer des observations de fumée d'adaptateur
  • boucle de livraison MCP navigateur : exécutez node scripts/run_mcp_delivery_loop.js <cible> --record <mcp-execution.json> --out runs/courant --json pour échafauder, vérifier, promouvoir, valider et évaluer la préparation en un seul passage
  • diagnostic d'échec de relecture : exécutez node scripts/diagnose_replay_failure.js --run-dir runs/courant --json ou passez --replay-record <record.json> avant de modifier le code du signataire
  • génération de client de relecture : exécutez node scripts/generate_replay_delivery_client.js --record <relecture-acceptée.json> --out runs/courant/replay-client --json pour produire des clients de relecture Node et Python nettoyés
  • validation du client de relecture : exécutez node scripts/validate_replay_delivery_client.js runs/courant/replay-client --json avant de traiter les clients générés comme des artefacts de transfert
  • porte de vérité statique : exécutez node scripts/assess_static_recovery_truth.js --original <input.js> --restauré <output.js> --json avant de promouvoir une sortie statique lisible
  • planification statique prioritaire aux source maps : si un bundle contient sourceMappingURL, sourceURL, des maps en ligne ou des notes X-SourceMap, exécutez node scripts/plan_static_toolchain.js <bundle.js> --json avant le nettoyage AST
  • validation de transfert de domaine : exécutez node scripts/validate_domain_handoff_record.js --record <transfert-record.json> --json --strict avant de fusionner les résultats WASM, paquets, mobiles, natifs ou débogueur dans les preuves JS
  • interface CLI : utilisez node scripts/jsro.js <commande> ou le binaire du package jsro pour les commandes route, run, validate, next, benchmark, scorecard, marketgap, releaserisk, externalmatrix, mcpsmoke, mcpsmokeverify, mcploop, replaydiagnose, replayclient, replayclientcheck, statictruth, handoff, handoffcheck, install et publish
  • installation ou publication en une commande : utilisez bash scripts/install_local.sh et bash scripts/publish_release.sh
  • réponse acceptée plus valeurs visibles par le navigateur confuses : inspectez la logique de rendu et de suppression côté page avant d'escalader vers la récupération du signataire, et utilisez playbooks/accepted-response-hidden-dom.md
  • réponse acceptée plus entités de police ou de glyphes intégrées à la page : extrayez la police de la réponse actuelle, résolvez la carte des glyphes au niveau de la page, et utilisez playbooks/embedded-runtime-font-mapping.md
  • la relecture échoue encore même après qu'un condensé accepté a été récupéré : inspectez l'ordre d'écriture des cookies au démarrage, les collecteurs de condensés et l'assemblage des cookies enveloppés, puis utilisez playbooks/bootstrap-digest-ladder.md
  • un point d'accès renvoie systématiquement du JavaScript en premier et ne renvoie des tableaux qu'après exécution du script et relecture sur le même chemin : traitez-le comme une chaîne de préchauffage itérative au lieu de chercher un second point d'accès caché, et utilisez playbooks/iterative-script-warmup-same-endpoint.md
  • le signataire dépend d'une heure émise par le serveur et d'un assistant wasm ou module : figez la source temporelle, prouvez la forme exacte de l'entrée du signataire, et utilisez playbooks/server-time-gated-wasm-signer.md
  • le nom de l'assistant de condensé semble standard, mais la sortie du navigateur diverge à la fois de la bibliothèque standard et de l'assistant local brut : isolez d'abord la plus petite surface de correctif d'exécution, et utilisez playbooks/patched-runtime-digest-branch.md
  • un gros bundle cache un petit assistant d'exécution dont vous avez réellement besoin pour la relecture : extrayez d'abord cet assistant au lieu d'émuler toute la page, et utilisez playbooks/runtime-bundle-signer-extraction.md
  • les assistants de jeton globaux sont absents ou trompeurs, mais XMLHttpRequest.open réécrit l'URL protégée avec le champ du signataire : traitez l'URL réécrite comme la sortie du signataire, préservez l'ordre des scripts et l'état d'exécution, et utilisez playbooks/xhr-open-url-rewrite-runtime-replay.md
  • le contrat de requête visible est stable mais différents clients HTTP divergent : escaladez via une échelle de transport avant d'inventer plus d'état du signataire, et utilisez playbooks/transport-profile-ladder.md
  • la réponse de vérification semble bruyante ou pessimiste alors que les requêtes de données réussissent toujours : traitez le point d'accès de données comme l'oracle d'acceptation, et utilisez playbooks/lenient-verify-data-gate.md
  • la page expose une simple requête ou un champ d'assistant, mais les pages suivantes échouent avec une porte en forme de jeton : prouvez si la requête visible est un leurre avant d'élargir à la récupération complète de la VM, et utilisez playbooks/decoy-page-request-hidden-token-gate.md
  • une image de défi est une petite grille fixe avec un glyphe ou un symbole par cellule : résolvez d'abord le chemin d'affectation de la grille, et utilisez playbooks/grid-challenge-template-matching.md
  • un défi en plusieurs étapes nécessite un rechargement frais, une preuve de signataire ensemencée, puis utilise une valeur d'étape acceptée comme clé suivante : validez la première requête de base avant de résoudre les décryptages en aval, et utilisez playbooks/fresh-reload-seeded-signer-step-key-ladder.md
  • un chemin de relecture fonctionne pour le premier tour, mais les tours suivants ne retrouvent la parité qu'après la relecture du tour précédent : préservez l'échelle explicite des tours sur la même page, et utilisez playbooks/same-page-prior-round-signer-replay.md
  • le HTML de bureau est instable mais un profil de requête mobile ou d'application aboutit à une page coque avec une hydratation JSON ultérieure : récupérez d'abord l'enveloppe de requête coque et la carte de routage, puis utilisez playbooks/mobile-shell-api-pivot.md
  • Pour les bibliothèques cryptographiques groupées dont les primitives sont conditionnées par l'environnement (branches navigateur vs. bac à sable, alphabets base64 ou constantes de hachage modifiés, jetons de bac à sable rejetés alors que les jetons navigateur passent), acheminez vers playbooks/env-gated-crypto-differential.md.
  • Pour les signataires VM avec état dont les URL de jetons capturés se rejouent avec succès, acheminez vers playbooks/browser-assisted-token-replay.md avant de tenter une récupération sémantique de la VM.
  • Pour les signataires VM personnalisée nécessitant un oracle local sans navigateur, acheminez vers playbooks/jsdom-native-vm-differential.md et différenciez les flux d'instructions et de constantes par rapport à une vérité de base de navigateur instrumentée.
  • Pour les jetons à courte durée de vie, acheminez vers playbooks/short-ttl-inline-proxy.md : envoyez la vraie requête depuis l'environnement de calcul du jeton via un intercepteur de ressources basé sur Promise.
  • code empaqueté ou de type VM : préservez l'artefact original, récupérez la structure de manière incrémentielle et étiquetez la sémantique vérifiée
  • transfert de relecture : exportez un ensemble d'artefacts stable avant d'écrire le code de livraison Node ou Python

Référence des meilleurs outils

Utilisez les scripts intégrés pour le routage, les preuves, les artefacts et la répétabilité. Utilisez des outils spécialisés uniquement pour la tâche précise pour laquelle ils sont compétents :

  • source maps ou modules originaux d'abord, avant toute passe de désobfuscation
  • webcrack pour les bundles obfuscator.io courants, les paquets de type webpack, les tableaux de chaînes et le premier dépaquetage
  • wakaru pour les sorties modernes minifiées où la normalisation de la syntaxe et la lisibilité comptent plus que la vérité d'exécution
  • ast-grep, Babel ou recast pour de petites transformations structurelles ciblées
  • humanify ou un autre renommeur LLM uniquement après avoir assaini le code et uniquement lorsque la récupération d'identifiants vaut la peine d'envoyer des extraits en dehors de l'espace de travail

Ne laissez pas les désobfuscateurs externes remplacer les preuves. Chaque champ, cookie, entrée de signataire ou assistant de relecture récupéré a encore besoin d'une observation de navigateur vérifiée ou d'un artefact de relecture locale.

Pour une comparaison plus large avec les compétences et outils de rétro-ingénierie adjacents, utilisez references/external-skill-comparison-2026-06-04.md.

Porte de sécurité de publication

Avant de publier cette compétence publique, exécutez bash scripts/check_public_release.sh depuis la racine du dépôt public. Le package public ne doit pas contenir :

  • notes de site privées, captures en direct, identifiants, cookies, jetons ou chemins spécifiques à un client
  • répertoires tmp/, cache, __pycache__, .pyc générés ou sorties de benchmark locales suivies par git
  • chemins utilisateur absolus locaux, jetons d'authentification, jetons GitHub, clés cloud, JWT ou clés privées
  • extraits non assainis qui identifient une cible active au-delà d'exemples génériques

Conservez les corpus privés et les bundles de validation locaux dans l'espace de travail privé. Publiez uniquement des procédures, scripts, modèles et exemples assainis génériques.

Références principales

  • references/env-rebuild-recipes.md
  • references/misdiagnosis-patterns.md
  • references/toolchain-bootstrap.md
  • references/standard-workflow-cookbook.md
  • references/stage-gates.md — conditions d'entrée/sortie strictes, boîtes de temps, chaîne de repli
  • references/decision-handoff.md — protocole de transfert delta uniquement entre étapes/sessions
  • references/task-types.md
  • examples/case-walkthrough-combinatorial-gates.md — récit assaini : portes environnementales combinatoires + oracles de calibrage
  • examples/case-walkthrough-timer-selfcheck-and-fake-200s.md — récit assaini : auto-vérifications de temporisateurs, clés dérivées du temps, labyrinthe de fausses données 200

Remarque : le générateur d'échafaudage d'environnement de test à l'identique référencé dans l'édition complète est distribué uniquement avec l'espace de travail privé ; ce package public documente les règles équivalentes dans references/env-rebuild-recipes.md.

  • references/stages/locate.md
  • references/stages/runtime.md
  • references/stages/recover.md
  • references/stages/replay.md
  • references/rules/evidence-rules.md
  • references/rules/runtime-first.md
  • references/rules/routing-rules.md
  • references/rules/replay-rules.md

Note de publication

Cette variante publique est destinée à être partagée comme un package de compétence réutilisable. Conservez les jeux de tests privés, les captures en direct et les notes clients ou spécifiques à un site dans un espace de travail ou dépôt privé séparé.

Skills associés