Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SAFE — SAFE: Embeddings de funciones auto-atentivos para similitud binaria | Kitploit
Herramientas/GitHubGitHub/gadiluna/safe
Ingeniería InversaAnálisis de BinariosAprendizaje AutomáticoPapers e Investigación
GitHubgadiluna/safe

SAFE

SAFE: Embeddings de funciones auto-atentivos para similitud binaria

Ver Repositorio
17641hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

SAFE : Embedding de Función Auto-Atenta

Artículo

Este software es el resultado de nuestra investigación académica. Consulte nuestro artículo en arXiv: arxiv

Si usas este código, por favor cita nuestro artículo académico como:

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

Lo que necesitas

Necesitas tener radare2 instalado en tu sistema.

Inicio rápido

Para crear el embedding de una función:

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

¿Qué hacer con un embedding?

Una vez que tengas dos embeddings embedding_x y embedding_y, puedes calcular la similitud de las funciones correspondientes como:

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

sim=cosine_similarity(embedding_x, embedding_y)
 

Datos Necesarios

SAFE necesita poca información para funcionar. Dos son esenciales: un modelo que le indique a SAFE cómo convertir instrucciones ensamblador en vectores (modelo i2v) y un modelo que le indique a SAFE cómo convertir una función binaria en un vector. Ambos modelos se pueden descargar usando el comando

root@kitploit:~
./download_model.sh

el descargador descarga los modelos y los coloca en el directorio data. El árbol de directorios después de la descarga debería ser.

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

El archivo safe.pb contiene el modelo safe utilizado para convertir funciones binarias en vectores. La carpeta i2v contiene el modelo i2v.

Detalles Técnicos

Esta sección contiene detalles necesarios para replicar nuestros experimentos. Si eres un usuario de SAFE, puedes omitirla.

Safe.pb

Este es el modelo TensorFlow congelado entrenado para la arquitectura AMD64. Puedes importarlo en tu proyecto 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)

ver archivo: neural_network/SAFEEmbedder.py

i2v

La carpeta i2v contiene dos archivos. Una matriz donde cada fila es el embedding de una instrucción asm. Un archivo json que contiene un diccionario que mapea las instrucciones asm a los números de fila de la matriz anterior. ver archivo: asm_embedding/InstructionsConverter.py

Entrenar el modelo

Si quieres entrenar el modelo usando nuestros conjuntos de datos, primero debes usar:

root@kitploit:~
 python3 downloader.py -td

Esto descargará los conjuntos de datos en la carpeta data. Ten en cuenta que los conjuntos de datos están comprimidos, por lo que debes descomprimirlos tú mismo. Estos datos serán bases de datos sqlite. Para iniciar el entrenamiento usa neural_network/train.sh. La base de datos se puede seleccionar cambiando el parámetro en train.sh. Si deseas información sobre el conjunto de datos, consulta nuestro artículo.

Crear tu propio conjunto de datos

Si quieres crear tu propio conjunto de datos, puedes usar el script ExperimentUtil en la carpeta dataset creation.

Crear una base de conocimiento de funciones

Si quieres usar el motor de búsqueda de código binario de SAFE, puedes usar el script ExperimentUtil para crear la base de conocimiento. Luego puedes buscar en ella usando el script en function_search

Proyectos Relacionados

  • YARASAFE: Verificaciones Automáticas de Similitud de Funciones Binarias con Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: Implementación en Pytorch de la red neuronal SAFE (https://github.com/facebookresearch/SAFEtorch)

Agradecimientos

En nuestro código usamos godown para descargar datos de Google Drive. Agradecemos a circulosmeos, el creador de godown.

Agradecemos a Davide Italiano por las útiles discusiones.

Descargar herramienta