Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SAFE — SAFE: バイナリ類似性のための自己注意関数埋め込み | Kitploit
ツール/GitHubGitHub/gadiluna/safe
リバースエンジニアリングバイナリ解析機械学習論文と研究
GitHubgadiluna/safe

SAFE

SAFE: バイナリ類似性のための自己注意関数埋め込み

リポジトリを見る
176413年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

SAFE : 自己注意機能埋め込み

論文

このソフトウェアは当研究の成果です。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

埋め込みを使って何ができるか?

2つの埋め込み embedding_x と embedding_y があれば、以下のように対応する関数の類似度を計算できます:

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

sim=cosine_similarity(embedding_x, embedding_y)
 

必要なデータ

SAFEが動作するにはいくつかの情報が必要です。特に重要なのは、アセンブリ命令をベクトルに変換する方法をSAFEに指示するモデル (i2vモデル) と、バイナリ関数をベクトルに変換する方法を指示するモデルです。 両方のモデルは以下のコマンドでダウンロードできます

root@kitploit:~
./download_model.sh

ダウンローダーはモデルをダウンロードし、dataディレクトリに配置します。 ダウンロード後のディレクトリ構成は以下のようになります。

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

safe.pbファイルには、バイナリ関数をベクトルに変換するために使用されるsafeモデルが含まれています。 i2vフォルダにはi2vモデルが含まれています。

ハードコアな詳細

このセクションには、実験を再現するために必要な詳細が含まれています。SAFEのユーザーであればスキップしても構いません。

Safe.pb

これはAMD64アーキテクチャ用のフリーズされたTensorFlowトレーニング済みモデルです。以下のようにプロジェクトにインポートできます:

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フォルダには2つのファイルが含まれています。 各行がアセンブリ命令の埋め込みである行列。 アセンブリ命令を上記行列の行番号にマッピングする辞書を含むJSONファイル。 参照ファイル: asm_embedding/InstructionsConverter.py

モデルのトレーニング

当データセットを使用してモデルをトレーニングするには、まず以下を実行してください:

root@kitploit:~
 python3 downloader.py -td

これによりデータセットがdataフォルダにダウンロードされます。データセットは圧縮されているため、ご自身で解凍する必要があります。 このデータはsqliteデータベースになります。 トレーニングを開始するには、neural_network/train.shを使用します。 train.shのパラメータを変更することで、使用するデータベースを選択できます。 データセットの詳細については、当論文を参照してください。

独自のデータセットを作成する

独自のデータセットを作成したい場合は、dataset creationフォルダ内のスクリプトExperimentUtilを使用できます。

関数の知識ベースを作成する

SAFEバイナリコード検索エンジンを使用する場合は、スクリプトExperimentUtilを使用して知識ベースを作成できます。 その後、function_search内のスクリプトを使用して検索できます。

関連プロジェクト

  • YARASAFE: Yaraを使用した自動バイナリ関数類似性チェック (https://github.com/lucamassarelli/yarasafe)
  • SAFEtorch: SAFEニューラルネットワークのPytorch実装 (https://github.com/facebookresearch/SAFEtorch)

謝辞

当コードでは、Google Driveからのデータダウンロードに godown を使用しています。Godownの作成者であるcirculosmeosに感謝します。

有用な議論をしてくれたDavide Italianoに感謝します。

ツールをダウンロード