Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
xtride — Strumento di recupero dei tipi basato su N-gram per binari, che recupera strutture e firme di funzioni da codice decompilato con alta resa e punteggi di confidenza utilizzabili per pipeline automatizzate. | Kitploit
Strumenti/GitHubGitHub/pr0me/xtride
Analisi StaticaReverse EngineeringDebuggerAnalisi di BinariMachine LearningPaper e RicercaApprendimento e FormazioneAnalisi del Firmware
GitHubpr0me/xtride

xtride

Strumento di recupero dei tipi basato su N-gram per binari, che recupera strutture e firme di funzioni da codice decompilato con alta resa e punteggi di confidenza utilizzabili per pipeline automatizzate.

Vedi Repository
2611 mese faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

XTRIDE: Recupero Pratico dei Tipi Basato su N-grammi

Introduzione

articolo xtride Presentiamo XTRIDE, un approccio migliorato basato su n-grammi (cfr. STRIDE) per il recupero dei tipi nei binari, focalizzato sulla praticità: un throughput altamente ottimizzato e punteggi di confidenza utilizzabili ne consentono l'implementazione in pipeline automatizzate. Rispetto allo stato dell'arte nel recupero delle struct, il nostro metodo raggiunge prestazioni comparabili pur essendo da 70 a 2300 volte più veloce.




Istruzioni di Compilazione

Lo strumento CLI in ./bin richiede una libreria di versione 1.8.4 o successiva per hdf5 installata (come da documentazione del crate). La compilazione con l'ultima versione fallisce su MacOS, raccomandiamo di installare hdf5 v1.10, ad esempio con

root@kitploit:~
brew install [email protected]

Come usare lo Strumento CLI

  1. creare un dataset tokenizzato del formato, vedere Preparazione del Dataset.
  2. creare le suddivisioni del dataset
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. costruire il vocabolario
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. costruire i database ngram per n = {2, 4, 8, 12, 48} (specificare in 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. Valutare sulla suddivisione del test set
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

Modalità di Recupero

Usa recover per eseguire il recupero dei tipi (best-effort) su un singolo elenco di funzioni decompilate (input in testo semplice).

Requisiti di Input

  • una funzione per file
  • i nomi dei simboli in stile decompilatore sono raccomandati (es., var*, param*, stack*, iVar*, sub_*)
  • le previsioni sono valide solo quanto l'allineamento tra lo stile di input e la distribuzione dei dati di addestramento

Esempio di utilizzo base

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

Flag opzionali

  • --fn-vocab <path>: percorso esplicito del vocabolario delle funzioni (se omesso, recover prova <vocab_stem>.fn.vocab)
  • --strip: abilita la modalità legacy di strip completa (retrocompatibilità DIRT / STRIDE, usare con cautela)
  • --threshold <float>: nasconde le previsioni al di sotto del cutoff del punteggio (1.0 disabilita il filtraggio)
  • --top-k <int>: numero di candidati mostrati per simbolo (default: 5)

Interpretazione dell'Output

I punteggi presentati sono punteggi di ranking in stile confidenza dalla pipeline del modello. Sono utili per ranking relativo e filtraggio, non sono probabilità calibrate. Il riepilogo riporta i simboli rilevati, i simboli filtrati e i simboli senza output del modello.

Modelli Forniti

Includiamo i dati preprocessati per replicare i modelli $XTRIDE_{PLUS}$ descritti nel nostro articolo nella directory ./data. I file JSONL possono essere utilizzati direttamente per estrarre un vocabolario e addestrare il modello (passaggi 3 e successivi, scegliere la configurazione a 16 db in bin/src/db_creation.rs). Sebbene il dataset di addestramento includa una grande quantità di dati provenienti da un'ampia varietà di binari, vogliamo ribadire che la generalizzabilità degli approcci basati su n-grammi è limitata. Raccomandiamo sempre di aggiungere campioni specifici del dominio al dataset, a seconda di dove si prevede di impiegare il modello.

Il dataset fornito contiene campioni che sono

  • stripped
  • binari ELF
  • raccolti da Ghidra

Tentare di eseguire l'inferenza su campioni che divergono da questa distribuzione molto probabilmente produrrà previsioni inutilizzabili.

Dataset

Ulteriori informazioni su come estrarre dati per nuovi dataset o per riaddestrare e valutare sul dataset DIRT sono incluse in Documentazione Preparazione Dataset.

Integrazione con il Decompilatore

Il modulo retyper mostra un'implementazione di riferimento per un'integrazione profonda del sistema di recupero dei tipi XTRIDE con un decompilatore. La funzionalità è protetta da un feature flag e può essere attivata con cargo build --features retyper.

Utilizziamo il framework BIAS di Binarly per l'analisi dei programmi, pubblicato come parte di VulHunt. Il framework presenta un sistema di tipi espressivo che si integra perfettamente con il fork del backend del decompilatore Ghidra utilizzato per sollevare le rappresentazioni recuperate internamente in pseudo C. Abbiamo esteso questo fork e la sua ffi con interfacce che consentono di modificare direttamente i tipi delle variabili nel decompilatore. Ciò consente l'applicazione diretta dei tipi inferiti nel contesto del decompilatore, inclusa la propagazione dei tipi di campo e simili.

Prima:Dopo:
senza_tipitipi_recuperati

Per ulteriori informazioni ed esempi, consulta il nostro post sul blog.

In generale, qualsiasi integrazione con un decompilatore richiede un livello di traduzione dalle previsioni testuali (dal vocabolario) a una rappresentazione specifica dello strumento. Il formato utilizzato in DIRT è abbastanza espressivo da consentirlo, ma richiede la risoluzione ricorsiva dei tipi (ad esempio, nelle struct) e il calcolo manuale di offset e dimensioni (tutte le informazioni necessarie sono presenti, incluse le annotazioni di padding). Per il modulo retyper, i tipi nel vocabolario (e quindi nel dataset di addestramento) devono essere serializzati tipi BIAS. Al momento non prevediamo di pubblicare una pipeline completa per l'estrazione dei dati e la creazione del dataset, e pertanto riteniamo che questa sia un'implementazione di riferimento piuttosto che un PoC completo.

Citazione

Se utilizzi il codice, le tecniche o i risultati forniti con questo repository e il relativo articolo, ti preghiamo di citare il nostro lavoro come segue:

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},
}
Scarica lo strumento