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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
xtride — 바이너리용 N-gram 기반 타입 복구 도구로, 디컴파일된 코드에서 구조체와 함수 시그니처를 높은 처리량과 자동화 파이프라인에 활용 가능한 신뢰도 점수로 복구합니다. | Kitploit
도구/GitHubGitHub/pr0me/xtride
Static AnalysisReverse EngineeringDebuggersBinary AnalysisMachine LearningPapers & ResearchLearning & EducationFirmware Analysis
GitHubpr0me/xtride

xtride

바이너리용 N-gram 기반 타입 복구 도구로, 디컴파일된 코드에서 구조체와 함수 시그니처를 높은 처리량과 자동화 파이프라인에 활용 가능한 신뢰도 점수로 복구합니다.

저장소 보기
2611개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

XTRIDE: N-gram 기반 실용적 타입 복구

소개

xtride 논문 우리는 XTRIDE를 제시합니다. 이는 바이너리 타입 복구를 위한 개선된 n-gram 기반(참고: STRIDE) 접근법으로, 실용성에 초점을 맞추고 있습니다: 최적화된 높은 처리량과 실행 가능한 신뢰도 점수를 통해 자동화 파이프라인에 배포할 수 있습니다. 구조체 복구 분야의 최신 기술과 비교할 때, 우리의 방법은 70배에서 2300배 더 빠르면서도 유사한 성능을 달성합니다.




빌드 방법

./bin 디렉토리의 CLI 도구는 hdf5용 1.8.4 이상 버전 라이브러리가 설치되어 있어야 합니다(크레이트 문서에 따름). 최신 버전으로 빌드할 경우 MacOS에서 실패할 수 있으므로, hdf5 v1.10 설치를 권장합니다. 예:

root@kitploit:~
brew install [email protected]

CLI 도구 사용 방법

  1. 토큰화된 데이터셋을 다음 형식으로 생성합니다. 데이터셋 준비 참조.
  2. 데이터셋 분할 생성
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. 어휘 사전 구축
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. n = {2, 4, 8, 12, 48}에 대한 n-gram 데이터베이스 구축 (bin/src/db_creation.rs에서 지정).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. 테스트 세트 분할에서 평가
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

복구 모드

recover를 사용하여 단일 역컴파일된 함수 목록(일반 텍스트 입력)에 대해 최선의 타입 복구를 실행합니다.

입력 요구사항

  • 파일당 하나의 함수
  • 역컴파일러 스타일의 심볼 이름 권장 (예: var*, param*, stack*, iVar*, sub_*)
  • 예측의 정확도는 입력 스타일과 학습 데이터 분포 간의 정렬 정도에 따라 달라집니다.

기본 사용 예제

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

선택적 플래그

  • --fn-vocab <path>: 명시적 함수 어휘 사전 경로 (생략하면 recover가 <vocab_stem>.fn.vocab을 시도)
  • --strip: 레거시 전체 스트립 모드 활성화 (DIRT / STRIDE 역호환성, 주의해서 사용)
  • --threshold <float>: 점수 컷오프 미만의 예측 숨기기 (1.0은 필터링 비활성화)
  • --top-k <int>: 심볼당 표시할 후보 수 (기본값: 5)

출력 해석

표시되는 점수는 모델 파이프라인의 신뢰도 스타일 순위 점수입니다. 이는 상대적 순위 매기기 및 필터링에 유용하며, 보정된 확률이 아닙니다. 요약 보고서는 감지된 심볼, 필터링된 심볼, 모델 출력이 없는 심볼을 보여줍니다.

제공된 모델

논문에서 설명한 $XTRIDE_{PLUS}$ 모델을 재현하기 위한 전처리된 데이터를 ./data 디렉토리에 포함했습니다. JSONL 파일을 직접 사용하여 어휘 사전을 추출하고 모델을 훈련할 수 있습니다(3단계부터 시작, bin/src/db_creation.rs에서 16-db 구성 선택). 훈련 데이터셋에는 다양한 바이너리에서 추출한 방대한 양의 데이터가 포함되어 있지만, n-gram 기반 접근법의 일반화 가능성은 제한적임을 다시 강조합니다. 모델을 사용할 환경에 따라 도메인별 샘플을 데이터셋에 추가하는 것을 항상 권장합니다.

제공된 데이터셋에는 다음 조건의 샘플이 포함되어 있습니다.

  • 스트립됨 (stripped)
  • ELF 바이너리
  • Ghidra로 수집됨

이 분포와 다른 샘플에 대해 추론을 실행하려고 하면 대부분 사용 불가능한 예측이 나올 것입니다.

데이터셋

새 데이터셋을 위한 데이터 추출 방법이나 DIRT 데이터셋으로 재훈련 및 평가하는 방법에 대한 추가 정보는 데이터셋 준비 문서에 포함되어 있습니다.

역컴파일러 통합

retyper 모듈은 XTRIDE 타입 복구 시스템의 역컴파일러와의 심층 통합을 위한 참조 구현을 보여줍니다. 이 기능은 기능 플래그 뒤에 있으며 cargo build --features retyper로 활성화할 수 있습니다.

우리는 VulHunt의 일부로 발표된 Binarly의 BIAS 프레임워크를 프로그램 분석에 사용합니다. 이 프레임워크는 내부적으로 복구된 표현을 의사 C로 변환하는 데 사용되는 Ghidra 역컴파일러 백엔드의 포크와 원활하게 통합되는 표현력 있는 타입 시스템을 갖추고 있습니다. 우리는 이 포크와 그 FFI를 역컴파일러에서 변수 타입을 직접 수정할 수 있는 인터페이스로 확장했습니다. 이를 통해 역컴파일러 컨텍스트 내에서 추론된 타입을 직접 적용할 수 있으며, 필드 타입 전파 등도 가능합니다.

Before:After:
without_typestypes_recovered

자세한 정보와 예제는 블로그 게시물을 참조하세요.

일반적으로 역컴파일러 통합에는 텍스트 기반 예측(어휘 사전에서)을 도구별 표현으로 변환하는 계층이 필요합니다. DIRT에서 사용하는 형식은 이를 허용할 만큼 표현력이 있지만, 타입의 재귀적 해석(예: 구조체 내에서)과 오프셋 및 크기의 수동 계산이 필요합니다(필요한 모든 정보는 패딩 주석을 포함하여 제공됨). retyper 모듈의 경우, 어휘 사전(따라서 훈련 데이터셋)의 타입은 직렬화된 BIAS 타입이어야 합니다. 현재 데이터 추출 및 데이터셋 생성을 위한 전체 파이프라인을 공개할 계획이 없으므로, 이는 완전한 PoC라기보다는 참조 구현으로 간주합니다.

인용

이 저장소와 해당 논문에서 제공된 코드, 기술 또는 결과를 사용하는 경우, 다음 형식으로 작업을 인용해 주세요.

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
도구 다운로드