Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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
Outils/GitHubGitHub/chris1sflaggin/lcsajdump
Analyse StatiqueExploitationRétro-ingénierieShellcodeAnalyse de BinairesApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Une approche multi-architecture basée sur les graphes et alimentée par le ML pour la détection des gadgets ROP

Voir le dépôtSite web
27262il y a 3 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

Logo LCSAJdump

LCSAJdump

PyPI Downloads

Cadre universel basé sur les graphes pour la découverte automatisée de gadgets

Status License: MIT



LCSAJdump est un cadre d'analyse statique conçu pour découvrir les gadgets de programmation orientée retour (ROP) et de programmation orientée saut (JOP). Contrairement aux scanners traditionnels, LCSAJdump est indépendant de l'architecture et utilise une approche basée sur les graphes pour révéler des vulnérabilités invisibles aux outils linéaires courants.


Pourquoi LCSAJdump ?

Les scanners ROP courants utilisent une approche linéaire de « fenêtre glissante » sur les octets exécutables du binaire. Cette méthode échoue systématiquement à identifier les Shadow Gadgets : des chaînes d'exécution qui traversent des blocs mémoire non contigus reliés par des sauts inconditionnels ou des branches conditionnelles.

LCSAJdump surmonte cette limitation en reconstruisant le graphe de flot de contrôle (CFG) via l'analyse LCSAJ (Linear Code Sequence and Jump) . En modélisant le binaire comme un graphe orienté de blocs de base, l'outil identifie :

  1. Gadgets contigus : Séquences linéaires standards se terminant par un transfert de contrôle.
  2. Gadgets fantômes (non contigus) : Chaînes complexes qui contournent les « mauvais octets » (par exemple, les octets nuls) en utilisant des instructions qui seraient autrement inaccessibles via un balayage linéaire.

Fonctionnalités clés

  • Support multi-architecture : Prise en charge native de RISC‑V (64GC), x86‑64 et ARM64, facilement extensible à d'autres architectures via des profils modulaires.
  • Analyse basée sur les graphes : Segmente la section .text en blocs de base LCSAJ et reconstruit les relations de flot via un graphe de flot de contrôle inversé maison (représentation d'adjacence légère, aucune dépendance lourde de graphe).
  • Algorithme Rainbow BFS : Parcours en largeur inversé propriétaire partant des puits de flot de contrôle. Il intègre désormais un filtre d'unicité O(1) à abandon précoce et des limites d'instructions à plafond dur pour éviter l'explosion d'état et garantir une analyse ultra-rapide même sur des binaires CISC denses.
  • Construction paresseuse du graphe : La construction du graphe ne conserve que les nœuds accessibles depuis les queues de gadget dans la limite de --depth sauts, réduisant considérablement la mémoire et le temps de construction sur les gros binaires (par ex. libc) tout en produisant des résultats identiques.
  • Moteur de classement en deux étapes : Combine une ligne de base heuristique hyper-rapide (optimisée par Bayes via Optuna) avec un modèle de deep learning LightGBM qui affine la qualité des gadgets à l'aide de caractéristiques structurelles et sémantiques.
  • Inférence sans surcoût : Le modèle ML est intégré nativement et s'exécute par défaut, traitant des dizaines de milliers de nœuds en quelques secondes. Il agit comme un filtre très efficace, rejetant les sauts parasites et renvoyant des chaînes de gadgets propres et hautement contrôlables. Hébergé sur Hugging Face.
  • Paramètres d'élagage : Facteur d'« obscurité » configurable pour équilibrer la profondeur d'analyse et les performances, évitant les boucles infinies dans les graphes cycliques.

Architectures supportées

(voir Benchmarks).

LCSAJdump est conçu pour être universel. Actuellement supporté :

  • RISC‑V 64‑bit (RV64GC) : Support complet des instructions compressées 16 bits.
  • x86‑64 : Gère les instructions superposées de longueur variable. Navigue en toute sécurité dans les graphes denses sans explosion mémoire.
  • ARM64 : Gère les instructions 32 bits et filtre profondément les gadgets gonflés via des pénalités heuristiques strictes.
  • Autres architectures : Peuvent être facilement implémentées en définissant de nouveaux profils dans config.py.

Installation

Via Pip (recommandé)

pip install lcsajdump

Depuis les sources (développement)

git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt


Utilisation

LCSAJdump offre une puissante interface en ligne de commande pour une analyse binaire précise :

Analyse standard (RISC‑V par défaut) :

python LCSAJdump.py <chemin_vers_le_binaire>

Analyse avancée (spécification de l'architecture et du fichier de sortie) :

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <chemin_vers_le_binaire>

Exportation en JSON avec filtre de mauvais caractères :

lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <chemin_vers_le_binaire>

Remarque : Utilisez -o après --json pour enregistrer le JSON dans un fichier. Sans --json, -o enregistre en texte brut.

Enregistrer la sortie en texte brut :

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <chemin_vers_le_binaire>

Analyser toutes les sections exécutables :

lcsajdump --all-exec -d 25 -k 10 -l 30 <chemin_vers_le_binaire>

Forcer le classement strictement algorithmique (contourner le ML) :

lcsajdump --algo <chemin_vers_le_binaire>

Options CLI

OptionTypeDéfautDescription
-a, --archTEXTEautoArchitecture cible (auto, riscv64, x86_64, arm64). Détectée automatiquement depuis l'en-tête ELF.
-d, --depthENTIER20Profondeur de recherche maximale en blocs LCSAJ. Contrôle la longueur des chaînes.
-k, --darknessENTIER5Seuil d'élagage — nombre maximum de visites par nœud. Plus élevé = plus de gadgets, analyse plus lente.
-l, --limitENTIER10Nombre maximum de gadgets à afficher dans la sortie.
-s, --min-scoreENTIER0Score heuristique minimum pour qu'un gadget apparaisse dans les résultats.
-i, --instructionsENTIER15Nombre maximum d'instructions contenues dans un seul nœud LCSAJ.
-v, --verboseDRAPEAU—Active la sortie détaillée pour des résultats par gadget.
-o, --outputCHEMIN—Écrit la sortie dans un fichier. Texte brut par défaut ; à utiliser avec --json pour une sortie JSON.
-b, --bad-charsTEXTE—Octets hexadécimaux à filtrer des adresses de gadgets (par ex. "000a0d").
--jsonDRAPEAU—Produit les gadgets au format JSON structuré. Combiner avec -o pour enregistrer dans un fichier.
--all-execDRAPEAU—Analyse toutes les sections exécutables, pas seulement .text.
-al, --algoDRAPEAU—Utilise strictement le classement algorithmique (contourne le ML).
--versionDRAPEAU—Affiche la version installée et quitte.
--helpDRAPEAU—Affiche le message d'aide et quitte.


Précision et benchmarks

Télécharger l’outil