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
SAFE — SAFE: Self-Attentive Function Embeddings per similarità binaria | Kitploit
Strumenti/GitHubGitHub/gadiluna/safe
Reverse EngineeringAnalisi di BinariMachine LearningPaper e Ricerca
GitHubgadiluna/safe

SAFE

SAFE: Self-Attentive Function Embeddings per similarità binaria

Vedi Repository
176413 anni 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

SAFE : Self Attentive Function Embedding

Articolo

Questo software è il risultato della nostra ricerca accademica. Vedi il nostro articolo su arXiv: arxiv

Se utilizzi questo codice, ti preghiamo di citare il nostro articolo accademico come:

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}
}

Cosa ti serve

Devi avere radare2 installato nel tuo sistema.

Avvio rapido

Per creare l'embedding di una funzione:

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

Cosa fare con un embedding?

Una volta che hai due embedding embedding_x e embedding_y, puoi calcolare la similarità delle funzioni corrispondenti come:

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

sim=cosine_similarity(embedding_x, embedding_y)
 

Dati Necessari

SAFE ha bisogno di poche informazioni per funzionare. Due sono essenziali: un modello che dice a SAFE come convertire le istruzioni assembly in vettori (modello i2v) e un modello che dice a SAFE come convertire una funzione binaria in un vettore. Entrambi i modelli possono essere scaricati usando il comando

root@kitploit:~
./download_model.sh

il downloader scarica i modelli e li posiziona nella directory data. L'albero delle directory dopo il download dovrebbe essere:

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

Il file safe.pb contiene il modello SAFE utilizzato per convertire funzioni binarie in vettori. La cartella i2v contiene il modello i2v.

Dettagli Approfonditi

Questa sezione contiene dettagli necessari per replicare i nostri esperimenti. Se sei un utente di SAFE, puoi saltarla.

Safe.pb

Questo è il modello TensorFlow congelato addestrato per l'architettura AMD64. Puoi importarlo nel tuo progetto usando:

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)

vedi file: neural_network/SAFEEmbedder.py

i2v

La cartella i2v contiene due file. Una matrice in cui ogni riga è l'embedding di un'istruzione assembly. Un file JSON che contiene un dizionario che mappa le istruzioni assembly in numeri di riga della matrice sopra. vedi file: asm_embedding/InstructionsConverter.py

Addestra il modello

Se vuoi addestrare il modello usando i nostri dataset, devi prima usare:

root@kitploit:~
 python3 downloader.py -td

Questo scaricherà i dataset nella cartella data. Nota che i dataset sono compressi, quindi devi decomprimerli tu stesso. Questi dati saranno database SQLite. Per avviare l'addestramento usa neural_network/train.sh. Il database può essere selezionato cambiando il parametro in train.sh. Se vuoi informazioni sul dataset, consulta il nostro articolo.

Crea il tuo dataset

Se vuoi creare il tuo dataset, puoi usare lo script ExperimentUtil nella cartella dataset creation.

Crea una knowledge base di funzioni

Se vuoi utilizzare il motore di ricerca di codice binario SAFE, puoi usare lo script ExperimentUtil per creare la knowledge base. Poi puoi cercare al suo interno usando lo script in function_search.

Progetti correlati

  • YARASAFE: Verifiche automatiche di similarità di funzioni binarie con Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: Implementazione PyTorch della rete neurale SAFE (https://github.com/facebookresearch/SAFEtorch)

Ringraziamenti

Nel nostro codice utilizziamo godown per scaricare dati da Google Drive. Ringraziamo circulosmeos, il creatore di godown.

Ringraziamo Davide Italiano per le utili discussioni.

Scarica lo strumento