Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SAFE — SAFE : Self-Attentive Function Embeddings pour la similarité binaire | Kitploit
Outils/GitHubGitHub/gadiluna/safe
Rétro-ingénierieAnalyse de BinairesApprentissage AutomatiqueArticles et Recherche
GitHubgadiluna/safe

SAFE

SAFE : Self-Attentive Function Embeddings pour la similarité binaire

Voir le dépôt
176414il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SAFE : Plongement de fonctions auto-attentif

Article

Ce logiciel est le résultat de notre recherche académique. Consultez notre article arXiv : arxiv

Si vous utilisez ce code, veuillez citer notre article académique comme suit :

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

Ce dont vous avez besoin

Vous devez avoir radare2 installé sur votre système.

Démarrage rapide

Pour créer le plongement d'une fonction :

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

Que faire avec un plongement ?

Une fois que vous avez deux plongements embedding_x et embedding_y, vous pouvez calculer la similarité des fonctions correspondantes comme suit :

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

sim=cosine_similarity(embedding_x, embedding_y)
 

Données nécessaires

SAFE a besoin de peu d'informations pour fonctionner. Deux sont essentielles : un modèle qui indique à safe comment convertir les instructions assembleur en vecteurs (modèle i2v) et un modèle qui indique à safe comment convertir une fonction binaire en vecteur. Les deux modèles peuvent être téléchargés en utilisant la commande

root@kitploit:~
./download_model.sh

le téléchargeur télécharge le modèle et les place dans le répertoire data. L'arborescence des répertoires après le téléchargement devrait être la suivante.

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

Le fichier safe.pb contient le modèle safe utilisé pour convertir les fonctions binaires en vecteurs. Le dossier i2v contient le modèle i2v.

Détails avancés

Cette section contient les détails nécessaires pour reproduire nos expériences. Si vous êtes un utilisateur de safe, vous pouvez ignorer cette section.

Safe.pb

Il s'agit du modèle tensorflow gelé entraîné pour l'architecture AMD64. Vous pouvez l'importer dans votre projet en utilisant :

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)

voir le fichier : neural_network/SAFEEmbedder.py

i2v

Le dossier i2v contient deux fichiers. Une matrice où chaque ligne est le plongement d'une instruction asm. Un fichier json qui contient un dictionnaire mappant les instructions asm vers les numéros de lignes de la matrice ci-dessus. voir le fichier : asm_embedding/InstructionsConverter.py

Entraîner le modèle

Si vous souhaitez entraîner le modèle en utilisant nos jeux de données, vous devez d'abord utiliser :

root@kitploit:~
 python3 downloader.py -td

Cela téléchargera les jeux de données dans le dossier data. Notez que les jeux de données sont compressés, vous devez donc les décompresser vous-même. Ces données seront des bases de données sqlite. Pour lancer l'entraînement, utilisez neural_network/train.sh. La base de données peut être sélectionnée en modifiant le paramètre dans train.sh. Pour plus d'informations sur les jeux de données, consultez notre article.

Créer votre propre jeu de données

Si vous souhaitez créer votre propre jeu de données, vous pouvez utiliser le script ExperimentUtil dans le dossier dataset creation.

Créer une base de connaissances de fonctions

Si vous souhaitez utiliser le moteur de recherche de code binaire SAFE, vous pouvez utiliser le script ExperimentUtil pour créer la base de connaissances. Ensuite, vous pouvez effectuer des recherches à l'aide du script dans function_search

Projets connexes

  • YARASAFE : Vérifications automatiques de similarité de fonctions binaires avec Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch : Implémentation Pytorch du réseau de neurones SAFE (https://github.com/facebookresearch/SAFEtorch)

Remerciements

Dans notre code, nous utilisons godown pour télécharger des données depuis Google Drive. Nous remercions circulosmeos, le créateur de godown.

Nous remercions Davide Italiano pour les discussions utiles.

Télécharger l’outil