Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
LCSAJdump — Ein ML-gestützter graphbasierter Multi-Architektur-Ansatz zur Erkennung von ROP-Gadgets | Kitploit
Tools/GitHubGitHub/chris1sflaggin/lcsajdump
Statische AnalyseExploitationReverse EngineeringShellcodeBinäranalyseMaschinelles LernenPapers & ForschungLernen & BildungPayload-Entwicklung
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Ein ML-gestützter graphbasierter Multi-Architektur-Ansatz zur Erkennung von ROP-Gadgets

27262vor 3 MonatenVon Kitploit geprüft
Repository anzeigenWebseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

LCSAJdump Logo

LCSAJdump

PyPI Downloads

Universelles Graph-basiertes Framework für automatisierte Gadget-Erkennung

Status License: MIT



LCSAJdump ist ein statisches Analyse-Framework zur Erkennung von Return-Oriented-Programming (ROP)- und Jump-Oriented-Programming (JOP)-Gadgets. Im Gegensatz zu herkömmlichen Scannern ist LCSAJdump architekturunabhängig und verwendet einen graphbasierten Ansatz, um Schwachstellen aufzudecken, die für lineare Tools unsichtbar bleiben.


Warum LCSAJdump?

Gängige ROP-Scanner verwenden einen linearen "Sliding-Window"-Ansatz über die ausführbaren Bytes der Binärdatei. Diese Methode übersieht systematisch Schatten-Gadgets: Ausführungsketten, die nicht zusammenhängende Speicherblöcke durchqueren, die durch unbedingte Sprünge oder bedingte Verzweigungen verbunden sind.

LCSAJdump überwindet diese Einschränkung, indem es den Kontrollflussgraphen (CFG) mittels LCSAJ (Linear Code Sequence and Jump)-Analyse rekonstruiert. Durch die Modellierung der Binärdatei als gerichteten Graphen von Basisblöcken identifiziert das Tool:

  1. Zusammenhängende Gadgets: Standardmäßige lineare Sequenzen, die mit einer Kontrollflusstranfer enden.
  2. Schatten-Gadgets (nicht zusammenhängend): Komplexe Ketten, die "bad bytes" (z. B. Nullbytes) umgehen, indem sie Anweisungen nutzen, die über lineares Scannen sonst nicht erreichbar wären.

Hauptmerkmale

  • Multi-Architektur-Unterstützung: Native Unterstützung für RISC‑V (64GC), x86‑64 und ARM64, einfach erweiterbar auf andere Architekturen über modulare Profile.
  • Graphbasierte Analyse: Segmentiert den .text-Abschnitt in LCSAJ-Basisblöcke und rekonstruiert Flussbeziehungen durch einen eigens erstellten Rückwärts-Kontrollflussgraphen (leichtgewichtige Adjazenzdarstellung, keine schwergewichtige Graph-Abhängigkeit).
  • Rainbow BFS Algorithmus: Proprietäre Rückwärts-Breitensuche, ausgehend von Kontrollflusssenken. Verfügt jetzt über einen O(1) Early-Drop-Uniqueness-Filter und Hard-Cap-Instruktionslimits, um Zustandsexplosion zu verhindern und ultraschnelle Analysen selbst bei dichten CISC-Binärdateien zu gewährleisten.
  • Lazy Graph Build: Die Graphenkonstruktion behält nur Knoten bei, die innerhalb von --depth Sprüngen von Gadget-Enden erreichbar sind, was Speicher und Build-Zeit bei großen Binärdateien (z. B. libc) drastisch reduziert, während identische Ergebnisse erzielt werden.
  • Zweistufige Ranking-Engine: Kombiniert eine hyperschnelle Heuristik-Baseline (Bayes-optimiert über Optuna) mit einem Deep-Learning LightGBM ML-Modell, das die Gadget-Qualität anhand struktureller und semantischer Merkmale verfeinert.
  • Inferenz ohne Mehraufwand: Das ML-Modell ist nativ integriert und läuft standardmäßig, verarbeitet Zehntausende von Knoten in Sekunden. Es fungiert als hochwirksamer Filter, der verrauschte Sprünge ablehnt und saubere, gut kontrollierbare Gadget-Ketten zurückgibt. Gehostet auf Hugging Face.
  • Pruning-Parameter: Konfigurierbarer "Darkness"-Faktor, um Analysetiefe und Leistung auszubalancieren und Endlosschleifen in zyklischen Graphen zu verhindern.

Unterstützte Architekturen

(siehe Benchmarks).

LCSAJdump ist als universelles Werkzeug konzipiert. Derzeit unterstützt:

  • RISC‑V 64‑Bit (RV64GC): Volle Unterstützung für komprimierte 16‑Bit-Befehle.
  • x86‑64: Behandelt überlappende Anweisungen variabler Länge. Navigiert sicher durch dichte Graphen ohne Speicherexplosion.
  • ARM64: Behandelt 32‑Bit-Befehle und filtert aufgeblähte Gadgets durch strenge heuristische Strafen tiefgehend aus.
  • Andere Architekturen: Können einfach durch Definition neuer Profile in config.py implementiert werden.

Installation

Via pip (Empfohlen)

pip install lcsajdump

Aus dem Quellcode (Entwicklung)

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


Verwendung

LCSAJdump bietet eine leistungsstarke CLI für präzise Binäranalysen:

Standardanalyse (Standard RISC‑V):

python LCSAJdump.py <path_to_binary>

Erweiterte Analyse (Architektur und Ausgabedatei angeben):

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

Export als JSON mit Bad-Char-Filter:

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

Hinweis: Verwenden Sie -o nach --json, um JSON in eine Datei zu speichern. Ohne --json speichert -o als Klartext.

Klartextausgabe speichern:

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

Alle ausführbaren Abschnitte analysieren:

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

Streng algorithmisches Ranking erzwingen (ML umgehen):

lcsajdump --algo <path_to_binary>

CLI-Optionen

FlagTypStandardBeschreibung
-a, --archTEXTautoZielarchitektur (auto, riscv64, x86_64, arm64). Automatisch aus ELF-Header erkannt.
-d, --depthINTEGER20Maximale Suchtiefe in LCSAJ-Blöcken. Steuert die Kettenlänge.
-k, --darknessINTEGER5Pruning-Schwellenwert — max. Besuche pro Knoten. Höher = mehr Gadgets, langsamerer Scan.
-l, --limitINTEGER10Maximale Anzahl der anzuzeigenden Gadgets in der Ausgabe.
-s, --min-scoreINTEGER0Mindestheuristikwert, den ein Gadget für die Anzeige erreichen muss.
-i, --instructionsINTEGER15Maximale Anzahl an Instruktionen in einem einzelnen LCSAJ-Knoten.
-v, --verboseFLAG—Ausführliche Ausgabe für detaillierte Ergebnisse pro Gadget aktivieren.
-o, --outputPATH—Ausgabe in Datei schreiben. Standardmäßig Klartext; mit --json für JSON-Ausgabe.
-b, --bad-charsTEXT—Hex-Bytes, die aus Gadget-Adressen herausgefiltert werden sollen (z. B. "000a0d").
--jsonFLAG—Gadgets als strukturiertes JSON ausgeben. Mit -o kombinieren, um in Datei zu speichern.
--all-execFLAG—Alle ausführbaren Abschnitte analysieren, nicht nur .text.
-al, --algoFLAG—Streng algorithmisches Ranking verwenden (ML umgehen).
--versionFLAG—Installierte Version anzeigen und beenden.
--helpFLAG—Hilfemeldung anzeigen und beenden.


Genauigkeit & Benchmarks

LCSAJdump wird durch eine rigorose, schrittweise validierte Testsuite im Verzeichnis benchmarkTests/ untermauert.

Durch 14 große Iterationen semantischer Feature-Engineering hat das hybride Modell gelernt, Gadgets anhand tatsächlicher Speichernebenwirkungen (extrahiert durch angr-symbolische Ausführung) zu unterscheiden, anstatt rein syntaktischer Heuristiken.

Tool herunterladen