Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
SAFE — SAFE: Embeddings de Função Auto-Atentivos para Similaridade Binária | Kitploit
Ferramentas/GitHubGitHub/gadiluna/safe
Engenharia ReversaAnálise de BináriosAprendizado de MáquinaPapers e Pesquisa
GitHubgadiluna/safe

SAFE

SAFE: Embeddings de Função Auto-Atentivos para Similaridade Binária

Ver Repositório
17641há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

SAFE : Embedding de Função com Auto-Atenção

Artigo

Este software é o resultado da nossa pesquisa acadêmica. Veja nosso artigo no arXiv: arxiv

Se você usar este código, por favor, cite nosso artigo 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}
}

O que você precisa

Você precisa ter o radare2 instalado no seu sistema.

Início Rápido

Para criar o embedding de uma função:

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

O que fazer com um embedding?

Depois de ter dois embeddings embedding_x e embedding_y você pode calcular a similaridade das funções correspondentes como:

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

sim=cosine_similarity(embedding_x, embedding_y)
 

Dados Necessários

SAFE precisa de poucas informações para funcionar. Duas são essenciais: um modelo que diz ao SAFE como converter instruções de assembly em vetores (modelo i2v) e um modelo que diz ao SAFE como converter uma função binária em um vetor. Ambos os modelos podem ser baixados usando o comando

root@kitploit:~
./download_model.sh

o downloader baixa o modelo e o coloca no diretório data. A árvore de diretórios após o download deve ser:

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

O arquivo safe.pb contém o modelo SAFE usado para converter funções binárias em vetores. A pasta i2v contém o modelo i2v.

Detalhes Avançados

Esta seção contém detalhes necessários para replicar nossos experimentos. Se você é um usuário do SAFE, pode pular.

Safe.pb

Este é o modelo treinado do TensorFlow congelado para a arquitetura AMD64. Você pode importá-lo em seu projeto 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)

veja o arquivo: neural_network/SAFEEmbedder.py

i2v

A pasta i2v contém dois arquivos. Uma Matriz onde cada linha é o embedding de uma instrução asm. Um arquivo json que contém um dicionário mapeando instruções asm para números de linhas da matriz acima. veja o arquivo: asm_embedding/InstructionsConverter.py

Treinar o modelo

Se você quiser treinar o modelo usando nossos conjuntos de dados, primeiro use:

root@kitploit:~
 python3 downloader.py -td

Isso baixará os conjuntos de dados para a pasta data. Observe que os conjuntos de dados estão compactados, então você mesmo precisa descompactá-los. Esses dados serão bancos de dados sqlite. Para iniciar o treinamento, use neural_network/train.sh. O banco de dados pode ser selecionado alterando o parâmetro em train.sh. Se você quiser informações sobre o conjunto de dados, veja nosso artigo.

Criar seu próprio conjunto de dados

Se você quiser criar seu próprio conjunto de dados, pode usar o script ExperimentUtil na pasta dataset creation.

Criar uma base de conhecimento de funções

Se você quiser usar o mecanismo de busca de código binário SAFE, pode usar o script ExperimentUtil para criar a base de conhecimento. Depois, você pode pesquisar nela usando o script na pasta function_search.

Projetos Relacionados

  • YARASAFE: Verificações Automáticas de Similaridade de Funções Binárias com Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: Implementação em Pytorch da rede neural SAFE (https://github.com/facebookresearch/SAFEtorch)

Agradecimentos

Em nosso código, usamos godown para baixar dados do Google Drive. Agradecemos a circulosmeos, o criador do godown.

Agradecemos a Davide Italiano pelas discussões úteis.

Baixar ferramenta