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
LCSAJdump — Un approccio multi-architettura basato su grafi potenziato da ML per il rilevamento di gadget ROP | Kitploit
Strumenti/GitHubGitHub/chris1sflaggin/lcsajdump
Analisi StaticaExploitReverse EngineeringShellcodeAnalisi di BinariMachine LearningPaper e RicercaApprendimento e FormazioneSviluppo Payload
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Un approccio multi-architettura basato su grafi potenziato da ML per il rilevamento di gadget ROP

2721 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
Vedi RepositorySito web

LCSAJdump Logo

LCSAJdump

PyPI Downloads

Framework universale basato su grafi per la scoperta automatica di gadget

Status License: MIT



LCSAJdump è un framework di analisi statica progettato per scoprire gadget di Return-Oriented Programming (ROP) e Jump-Oriented Programming (JOP). A differenza degli scanner tradizionali, LCSAJdump è agnostico rispetto all'architettura e utilizza un approccio basato su grafi per scoprire vulnerabilità invisibili ai comuni strumenti lineari.


Perché LCSAJdump?

I comuni scanner ROP utilizzano un approccio lineare a "finestra scorrevole" sui byte eseguibili del binario. Questo metodo fallisce sistematicamente nell'identificare i Shadow Gadget: catene di esecuzione che attraversano blocchi di memoria non contigui collegati da salti incondizionati o rami condizionali.

LCSAJdump supera questo limite ricostruendo il Control-Flow Graph (CFG) attraverso l'analisi LCSAJ (Linear Code Sequence and Jump). Modellando il binario come un grafo diretto di blocchi base, lo strumento identifica:

  1. Gadget contigui: Sequenze lineari standard che terminano con un trasferimento di controllo.
  2. Shadow Gadget (non contigui): Catene complesse che bypassano i "bad byte" (es. byte nulli) utilizzando istruzioni altrimenti irraggiungibili tramite scansione lineare.

Caratteristiche principali

  • Supporto multi-architettura: Supporto nativo per RISC-V (64GC), x86-64 e ARM64, facilmente estendibile ad altre architetture tramite profili modulari.
  • Analisi basata su grafi: Segmenta la sezione .text in blocchi base LCSAJ e ricostruisce le relazioni di flusso attraverso un grafo di controllo inverso costruito su misura (rappresentazione di adiacenza leggera, nessuna dipendenza da grafi pesanti).
  • Algoritmo Rainbow BFS: Backward Breadth-First Search proprietaria a partire dai sink di controllo. Ora dotata di un filtro di unicità O(1) Early-Drop e limiti di istruzioni Hard-Cap per prevenire l'esplosione degli stati e garantire un'analisi ultra-veloce anche su binari CISC densi.
  • Costruzione pigra del grafo: La costruzione del grafo trattiene solo i nodi raggiungibili dalle code dei gadget entro --depth salti, riducendo drasticamente la memoria e i tempi di costruzione su binari di grandi dimensioni (es. libc) producendo risultati identici.
  • Motore di ranking a due stadi: Combina una baseline euristica iper-veloce (ottimizzata con Bayesian Optimization via Optuna) con un modello di deep learning LightGBM ML che affina la qualità dei gadget utilizzando caratteristiche strutturali e semantiche.
  • Inferenza a overhead zero: Il modello ML è integrato in modo nativo e viene eseguito per impostazione predefinita, elaborando decine di migliaia di nodi in pochi secondi. Agisce come un filtro altamente efficace, rifiutando salti rumorosi e restituendo catene di gadget pulite e altamente controllabili. Ospitato su Hugging Face.
  • Parametri di potatura: Fattore di "oscurità" configurabile per bilanciare profondità di analisi e prestazioni, prevenendo loop infiniti in grafi ciclici.

Architetture supportate

(vedi Benchmarks).

LCSAJdump è progettato per essere universale. Attualmente supportate:

  • RISC-V 64-bit (RV64GC): Supporto completo per istruzioni compresse a 16 bit.
  • x86-64: Gestisce istruzioni sovrapposte a lunghezza variabile. Naviga in modo sicuro grafi densi senza esplosione di memoria.
  • ARM64: Gestisce istruzioni a 32 bit e filtra profondamente i gadget gonfiati tramite rigorose penalità euristiche.
  • Altre architetture: Possono essere facilmente implementate definendo nuovi profili in config.py.

Installazione

Via Pip (consigliato)

root@kitploit:~
pip install lcsajdump

Da sorgente (sviluppo)

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


Utilizzo

LCSAJdump offre una potente CLI per l'analisi precisa dei binari:

Analisi standard (RISC-V predefinito):

root@kitploit:~
python LCSAJdump.py <percorso_del_binario>

Analisi avanzata (specificando architettura e file di output):

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <percorso_del_binario>

Esportazione come JSON con filtro bad-char:

root@kitploit:~
lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <percorso_del_binario>

Nota: Usa -o dopo --json per salvare il JSON su file. Senza --json, -o salva testo normale.

Salva output in testo normale:

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <percorso_del_binario>

Analizza tutte le sezioni eseguibili:

root@kitploit:~
lcsajdump --all-exec -d 25 -k 10 -l 30 <percorso_del_binario>

Forza ranking strettamente algoritmico (bypassa ML):

root@kitploit:~
lcsajdump --algo <percorso_del_binario>

Opzioni CLI



Accuratezza e benchmark

LCSAJdump è supportato da una suite di test rigorosa e convalidata incrementalmente situata nella directory benchmarkTests/.

Attraverso 14 iterazioni principali di ingegneria delle caratteristiche semantiche, il modello ibrido ha imparato a discriminare i gadget in base agli effetti collaterali effettivi sulla memoria (estratti tramite esecuzione simbolica angr) piuttosto che a euristiche puramente sintattiche.

Valutato con cross-validazione a 5 fold con raggruppamento (binari di test mai visti durante l'addestramento), il ranker raggiunge NDCG@1 = 0,914 ± 0,047 e NDCG@10 = 0,922 ± 0,052, il che significa che i gadget più utili vengono costantemente posizionati all'inizio dell'output. Il motore a due stadi riesce a dare priorità a sequenze pulite di pop-stack e chiamate ret2csu, penalizzando pesantemente i salti a offset fisso soggetti a crash che ingannano gli scanner statici tradizionali.


Guida per sviluppatori e ML

Il repository è strutturato per supportare sia utenti finali che ricercatori ML.

  • Motore di produzione: La CLI principale integra perfettamente il motore di inferenza utilizzando modelli ospitati su Hugging Face, senza richiedere il caricamento manuale dei modelli.
  • Pipeline ML: La directory lcsajdump/ml_study/ contiene la pipeline completa utilizzata per addestrare i modelli:
    • build_dataset.py: Estrae caratteristiche strutturali e semantiche da un corpus di binari CTF.
    • train_model.py: Addestra il modello LightGBM LambdaRank e produce i modelli .pkl.
    • kfold_cv.py: Convalida il dataset utilizzando la convalida incrociata K-Fold.

Contribuire (aperto ai fork!)

Il framework è aperto a nuove implementazioni. Per aggiungere una nuova architettura:

  1. Fork il repository.
  2. Apri lcsajdump/core/config.py.
  3. Aggiungi un nuovo profilo al dizionario ARCH_PROFILES, definendo i mnemonici di salto, i mnemonici di ritorno e i registri per l'architettura desiderata (es. x86_64).
  4. Invia una Pull Request.

Licenza

Questo progetto è rilasciato sotto la licenza MIT. Vedi il file LICENSE per i dettagli.


Link al progetto

Visita la pagina web del progetto: Pagina web LCSAJdump


Realizzato da Chris1sflaggin come progetto di ricerca per la scoperta automatica di gadget.
Scarica lo strumento
FlagTipoPredefinitoDescrizione
-a, --archTESTOautoArchitettura target (auto, riscv64, x86_64, arm64). Rilevata automaticamente dall'header ELF.
-d, --depthINTERO20Profondità massima di ricerca nei blocchi LCSAJ. Controlla la lunghezza della catena.
-k, --darknessINTERO5Soglia di potatura — numero massimo di visite per nodo. Più alto = più gadget, scansione più lenta.
-l, --limitINTERO10Numero massimo di gadget da visualizzare nell'output.
-s, --min-scoreINTERO0Punteggio euristico minimo per un gadget per apparire nei risultati.
-i, --instructionsINTERO15Numero massimo di istruzioni contenute in un singolo nodo LCSAJ.
-v, --verboseFLAG—Abilita output verbose per risultati dettagliati per gadget.
-o, --outputPERCORSO—Scrive l'output su file. Testo normale per impostazione predefinita; usare con --json per output JSON.
-b, --bad-charsTESTO—Byte esadecimali da filtrare dagli indirizzi dei gadget (es. "000a0d").
--jsonFLAG—Output dei gadget come JSON strutturato. Combina con -o per salvare su file.
--all-execFLAG—Analizza tutte le sezioni eseguibili, non solo .text.
-al, --algoFLAG—Usa strettamente il ranking algoritmico (bypassa ML).
--versionFLAG—Mostra la versione installata ed esce.
--helpFLAG—Mostra il messaggio di aiuto ed esce.