Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
SAFE — SAFE: Self-Attentive Function Embeddings für binäre Ähnlichkeit | Kitploit
Tools/GitHubGitHub/gadiluna/safe
Reverse EngineeringBinäranalyseMaschinelles LernenPapers & Forschung
GitHubgadiluna/safe

SAFE

SAFE: Self-Attentive Function Embeddings für binäre Ähnlichkeit

Repository anzeigen
17641vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

SAFE : Selbstaufmerksame Funktionseinbettung

Paper

Diese Software ist das Ergebnis unserer akademischen Forschung. Siehe unser arXiv-Papier: arxiv

Wenn Sie diesen Code verwenden, zitieren Sie bitte unser akademisches Papier wie folgt:

root@kitploit:~
@inproceedings{massarelli2018safe,
  title={SAFE: Self-Attentive Function Embeddings for Binary Similarity},
  author={Massarelli, Luca and Di Luna, Giuseppe Antonio and Petroni, Fabio and Querzoni, Leonardo and Baldoni, Roberto},
  booktitle={Proceedings of 16th Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA)},
  year={2019}
}

Was Sie brauchen

Sie benötigen radare2 auf Ihrem System installiert.

Schnellstart

Um die Einbettung einer Funktion zu erstellen:

root@kitploit:~
git clone https://github.com/gadiluna/SAFE.git
pip install -r requirements
chmod +x download_model.sh
./download_model.sh
python safe.py -m data/safe.pb -i helloworld.o -a 100000F30

Was macht man mit einer Einbettung?

Sobald Sie zwei Einbettungen embedding_x und embedding_y haben, können Sie die Ähnlichkeit der entsprechenden Funktionen wie folgt berechnen:

root@kitploit:~
from sklearn.metrics.pairwise import cosine_similarity

sim=cosine_similarity(embedding_x, embedding_y)
 

Benötigte Daten

SAFE benötigt wenige Informationen, um zu funktionieren. Zwei sind wesentlich: ein Modell, das SAFE sagt, wie Assembleranweisungen in Vektoren umgewandelt werden (i2v-Modell), und ein Modell, das SAFE sagt, wie eine binäre Funktion in einen Vektor umgewandelt wird. Beide Modelle können mit dem Befehl heruntergeladen werden

root@kitploit:~
./download_model.sh

Der Downloader lädt das Modell herunter und platziert es im Verzeichnis data. Der Verzeichnisbaum nach dem Download sollte so aussehen:

root@kitploit:~
safe/-- githubcode
     \
      \--data/-----safe.pb
               \
                \---i2v/
            

Die Datei safe.pb enthält das SAFE-Modell zur Umwandlung binärer Funktionen in Vektoren. Der Ordner i2v enthält das i2v-Modell.

Hardcore-Details

Dieser Abschnitt enthält Details, die zur Reproduktion unserer Experimente erforderlich sind. Wenn Sie ein SAFE-Benutzer sind, können Sie ihn überspringen.

Safe.pb

Dies ist das eingefrorene TensorFlow-trainierte Modell für die AMD64-Architektur. Sie können es in Ihr Projekt importieren mit:

root@kitploit:~
 import tensorflow as tf
 
 with tf.gfile.GFile("safe.pb", "rb") as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())

 with tf.Graph().as_default() as graph:
    tf.import_graph_def(graph_def)
    
 sess = tf.Session(graph=graph)

siehe Datei: neural_network/SAFEEmbedder.py

i2v

Der i2v-Ordner enthält zwei Dateien. Eine Matrix, in der jede Zeile die Einbettung einer ASM-Anweisung ist. Eine JSON-Datei, die ein Wörterbuch enthält, das ASM-Anweisungen auf Zeilennummern der obigen Matrix abbildet. siehe Datei: asm_embedding/InstructionsConverter.py

Trainieren des Modells

Wenn Sie das Modell mit unseren Datensätzen trainieren möchten, müssen Sie zuerst Folgendes verwenden:

root@kitploit:~
 python3 downloader.py -td

Dadurch werden die Datensätze in den Datenordner heruntergeladen. Beachten Sie, dass die Datensätze komprimiert sind, also müssen Sie sie selbst entpacken. Diese Daten werden SQLite-Datenbanken sein. Um das Training zu starten, verwenden Sie neural_network/train.sh. Die DB kann durch Ändern des Parameters in train.sh ausgewählt werden. Weitere Informationen zum Datensatz finden Sie in unserem Paper.

Erstellen Sie Ihren eigenen Datensatz

Wenn Sie Ihren eigenen Datensatz erstellen möchten, können Sie das Skript ExperimentUtil im Ordner dataset creation verwenden.

Erstellen einer Funktionswissensbasis

Wenn Sie die SAFE-Suchmaschine für Binärcode verwenden möchten, können Sie das Skript ExperimentUtil verwenden, um die Wissensbasis zu erstellen. Dann können Sie mit dem Skript in function_search darin suchen.

Verwandte Projekte

  • YARASAFE: Automatische Binärfunktions-Ähnlichkeitsprüfungen mit Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: Pytorch-Implementierung des SAFE neuronalen Netzes (https://github.com/facebookresearch/SAFEtorch)

Danksagungen

In unserem Code verwenden wir godown zum Herunterladen von Daten von Google Drive. Wir danken circulosmeos, dem Ersteller von godown.

Wir danken Davide Italiano für die nützlichen Diskussionen.

Tool herunterladen