Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SAFE — SAFE: 이진 유사도를 위한 자기 주의 함수 임베딩 | Kitploit
도구/GitHubGitHub/gadiluna/safe
Reverse EngineeringBinary AnalysisMachine LearningPapers & Research
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

임베딩으로 무엇을 할 수 있나요?

두 개의 임베딩 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-model이 포함되어 있습니다. i2v 폴더에는 i2v 모델이 포함되어 있습니다.

고급 세부 사항

이 섹션에는 실험을 재현하는 데 필요한 세부 사항이 포함되어 있습니다. SAFE 사용자라면 건너뛰셔도 됩니다.

Safe.pb

이것은 AMD64 아키텍처용으로 학습된 frozen 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 폴더에는 두 개의 파일이 포함되어 있습니다. 각 행이 어셈블리 명령어의 임베딩인 행렬. 위 행렬의 행 번호로 어셈블리 명령어를 매핑하는 사전이 포함된 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에게 감사드립니다.

도구 다운로드