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
xtride — Outil de récupération de types basé sur N-gram pour binaires, récupérant les structures et les signatures de fonctions à partir de code décompilé avec un haut débit et des scores de confiance exploitables pour les pipelines automatisés. | Kitploit
Outils/GitHubGitHub/pr0me/xtride
Analyse StatiqueRétro-ingénierieDébogueursAnalyse de BinairesApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationAnalyse de Micrologiciel
GitHubpr0me/xtride

xtride

Outil de récupération de types basé sur N-gram pour binaires, récupérant les structures et les signatures de fonctions à partir de code décompilé avec un haut débit et des scores de confiance exploitables pour les pipelines automatisés.

Voir le dépôt
261il y a 1 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

XTRIDE : Récupération pratique de types basée sur les N-grammes

Introduction

article XTRIDE Nous présentons XTRIDE, une approche améliorée basée sur les N-grammes (cf. STRIDE) pour la récupération de types dans les binaires, qui met l'accent sur l'aspect pratique : un débit hautement optimisé et des scores de confiance exploitables permettent un déploiement dans des pipelines automatisés. Comparée à l'état de l'art en récupération de structures, notre méthode atteint des performances comparables tout en étant entre 70 et 2300 fois plus rapide.




Instructions de compilation

L'outil CLI dans ./bin nécessite une bibliothèque hdf5 version 1.8.4 ou ultérieure installée (selon la documentation de la crate). La compilation avec la dernière version échoue sur MacOS, nous recommandons d'installer hdf5 v1.10, par exemple avec

root@kitploit:~
brew install [email protected]

Comment utiliser l'outil CLI

  1. créez un ensemble de données tokenisées de la forme, voir Préparation des données.
  2. créez les divisions de l'ensemble de données
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. construisez le vocabulaire
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. construisez les bases de données de N-grammes pour n = {2, 4, 8, 12, 48} (spécifiez dans bin/src/db_creation.rs).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. Évaluez sur la division de test
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

Mode de récupération

Utilisez recover pour exécuter une récupération de types au mieux sur une seule fonction décompilée (entrée en texte brut).

Attentes concernant l'entrée

  • une fonction par fichier
  • les noms de symboles de style décompilateur sont recommandés (par ex., var*, param*, stack*, iVar*, sub_*)
  • les prédictions ne sont bonnes que dans la mesure où votre style d'entrée est aligné avec la distribution des données d'entraînement

Exemple d'utilisation de base

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

Drapeaux optionnels

  • --fn-vocab <path>: chemin explicite du vocabulaire des fonctions (si omis, recover essaie <vocab_stem>.fn.vocab)
  • --strip: activer le mode de suppression complète hérité (rétrocompatibilité DIRT / STRIDE, à utiliser avec précaution)
  • --threshold <float>: masquer les prédictions en dessous du seuil de score (1.0 désactive le filtrage)
  • --top-k <int>: nombre de candidats affichés par symbole (par défaut : 5)

Interprétation des sorties

Les scores présentés sont des scores de classement de type confiance issus du pipeline du modèle. Ils sont utiles pour le classement relatif et le filtrage, mais ne sont pas des probabilités calibrées. Le résumé rapporte les symboles détectés, les symboles filtrés et les symboles sans sortie du modèle.

Modèles fournis

Nous incluons les données prétraitées pour reproduire les modèles $XTRIDE_{PLUS}$ décrits dans notre article dans le répertoire ./data. Les fichiers JSONL peuvent être utilisés directement pour extraire un vocabulaire et entraîner le modèle (étapes 3 et suivantes, choisissez la configuration 16-db dans bin/src/db_creation.rs). Bien que l'ensemble d'entraînement contienne une grande quantité de données provenant d'une large variété de binaires, nous tenons à réitérer que la généralisabilité des approches basées sur les N-grammes est limitée. Nous recommandons toujours d'ajouter des échantillons spécifiques au domaine à l'ensemble de données, en fonction de l'endroit où vous prévoyez d'utiliser le modèle.

L'ensemble de données fourni contient des échantillons qui sont

  • débridés (stripped)
  • des binaires ELF
  • collectés depuis Ghidra

Essayer d'exécuter une inférence sur des échantillons qui divergent de cette distribution donnera très probablement des prédictions inutilisables.

Jeux de données

Des informations supplémentaires sur la façon d'extraire des données pour de nouveaux ensembles de données ou de réentraîner et évaluer sur l'ensemble de données DIRT sont incluses dans Documentation de préparation des données.

Intégration au décompilateur

Le module retyper présente une implémentation de référence pour une intégration profonde du système de récupération de types XTRIDE avec un décompilateur. La fonctionnalité est verrouillée derrière un drapeau de fonctionnalité et peut être activée avec cargo build --features retyper.

Nous utilisons le framework BIAS de Binarly pour l'analyse de programmes, publié dans le cadre de VulHunt. Le framework dispose d'un système de typage expressif qui s'intègre de manière transparente avec le fork du backend du décompilateur Ghidra utilisé pour relever les représentations internes récupérées en pseudo C. Nous avons étendu ce fork et son ffi avec des interfaces permettant de modifier directement les types de variables dans le décompilateur. Cela permet l'application directe des types inférés dans le contexte du décompilateur, y compris la propagation des types de champs et autres.

Avant :Après :
sans_typestypes_récupérés

Pour plus d'informations et d'exemples, consultez notre article de blog.

En général, toute intégration de décompilateur nécessite une couche de traduction entre les prédictions textuelles (provenant du vocabulaire) et une représentation spécifique à l'outil. Le format utilisé dans DIRT est suffisamment expressif pour permettre cela, mais nécessite une résolution récursive des types (par exemple, dans les structures) et un calcul manuel des décalages et des tailles (toutes les informations nécessaires sont présentes, y compris les annotations de padding). Pour le module retyper, les types dans le vocabulaire (et donc dans l'ensemble d'entraînement) doivent être des types BIAS sérialisés. Nous ne prévoyons actuellement pas de publier un pipeline complet pour l'extraction de données et la création d'ensembles de données, et considérons donc ceci comme une implémentation de référence plutôt qu'une preuve de concept complète.

Citation

Si vous utilisez le code, les techniques ou les résultats fournis avec ce dépôt et l'article correspondant, veuillez citer notre travail comme suit :

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
Télécharger l’outil