Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SAFE — SAFE: Само-внимательные вложения функций для бинарного сходства | Kitploit
Инструменты/GitHubGitHub/gadiluna/safe
Обратная инженерияАнализ Бинарных ФайловМашинное ОбучениеСтатьи и Исследования
GitHubgadiluna/safe

SAFE

SAFE: Само-внимательные вложения функций для бинарного сходства

Репозиторий
176413 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SAFE : Self Attentive Function Embedding

Статья

Данное программное обеспечение является результатом наших академических исследований. См. нашу статью на arXiv: arxiv

Если вы используете этот код, пожалуйста, цитируйте нашу академическую статью:

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

Что вам нужно

Вам необходимо установить radare2 в вашей системе.

Быстрый старт

Чтобы создать эмбеддинг функции:

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

Что делать с эмбеддингом?

Получив два эмбеддинга embedding_x и embedding_y, вы можете вычислить схожесть соответствующих функций следующим образом:

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

sim=cosine_similarity(embedding_x, embedding_y)
 

Необходимые данные

SAFE требует некоторой информации для работы. Два компонента являются основными: модель, которая сообщает SAFE, как преобразовывать ассемблерные инструкции в векторы (модель i2v), и модель, которая сообщает SAFE, как преобразовывать бинарную функцию в вектор. Обе модели можно загрузить с помощью команды:

root@kitploit:~
./download_model.sh

загрузчик скачивает модель и помещает её в каталог data. Структура каталогов после загрузки должна быть следующей:

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

Файл safe.pb содержит модель safe, используемую для преобразования бинарных функций в векторы. Папка i2v содержит модель i2v.

Детали для продвинутых

Этот раздел содержит детали, необходимые для воспроизведения наших экспериментов; если вы являетесь пользователем safe, можете его пропустить.

Safe.pb

Это замороженная обученная модель TensorFlow для архитектуры AMD64. Вы можете импортировать её в свой проект, используя:

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)

см. файл: neural_network/SAFEEmbedder.py

i2v

Папка i2v содержит два файла: Матрица, где каждая строка является эмбеддингом ассемблерной инструкции. JSON-файл, содержащий словарь, сопоставляющий ассемблерные инструкции с номерами строк вышеуказанной матрицы. см. файл: asm_embedding/InstructionsConverter.py

Обучение модели

Если вы хотите обучить модель, используя наши наборы данных, сначала выполните:

root@kitploit:~
 python3 downloader.py -td

Это загрузит наборы данных в папку data. Обратите внимание, что наборы данных сжаты, поэтому вам придётся распаковать их самостоятельно. Эти данные представляют собой базы данных SQLite. Для начала обучения используйте neural_network/train.sh. Базу данных можно выбрать, изменив параметры в train.sh. Если вы хотите получить информацию о наборе данных, см. нашу статью.

Создание собственного набора данных

Если вы хотите создать свой собственный набор данных, вы можете использовать скрипт ExperimentUtil из папки dataset creation.

Создание базы знаний функций

Если вы хотите использовать поисковую систему бинарного кода SAFE, вы можете использовать скрипт ExperimentUtil для создания базы знаний. Затем вы можете выполнять поиск по ней с помощью скрипта из папки function_search

Связанные проекты

  • YARASAFE: Автоматическая проверка схожести бинарных функций с помощью Yara (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: Реализация нейронной сети SAFE на PyTorch (https://github.com/facebookresearch/SAFEtorch)

Благодарности

В нашем коде мы используем godown для загрузки данных с Google Drive. Мы благодарим circulosmeos, создателя godown.

Мы благодарим Davide Italiano за полезные обсуждения.

Скачать инструмент