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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
xtride — N-gramベースのバイナリ型復元ツール。逆コンパイルされたコードから構造体と関数シグネチャを復元し、自動化パイプライン向けに高スループットと実用的な信頼度スコアを提供します。 | Kitploit
ツール/GitHubGitHub/pr0me/xtride
静的分析リバースエンジニアリングデバッガバイナリ解析機械学習論文と研究学習と教育ファームウェア解析
GitHubpr0me/xtride

xtride

N-gramベースのバイナリ型復元ツール。逆コンパイルされたコードから構造体と関数シグネチャを復元し、自動化パイプライン向けに高スループットと実用的な信頼度スコアを提供します。

リポジトリを見る
2611ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

XTRIDE: N-gramベースの実用的な型復元

はじめに

XTRIDE論文 本稿では、バイナリの型復元に対する改善版 n-gram ベースのアプローチ(STRIDE を参照)である XTRIDE を紹介します。これは実用性に重点を置いており、 高度に最適化されたスループットと実用的な信頼スコアにより、自動化パイプラインへの展開が可能です。 構造体復元の最新手法と比較すると、本手法は同等の性能を達成しつつ、70〜2300倍高速です。




ビルド手順

./bin 内のCLIツールは、hdf5 の library of version 1.8.4 or later がインストールされている必要があります(crateのドキュメントに記載の通り)。 最新バージョンでのビルドは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 を使用して、単一の逆コンパイル済み関数リスト(プレーンテキスト入力)に対してベストエフォートの型復元を実行します。

入力の前提条件

  • ファイルごとに1つの関数
  • 逆コンパイラスタイルのシンボル名を推奨します(例: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ベースのアプローチの汎化性には限界があることを改めて強調します。 モデルを適用予定の領域に応じて、ドメイン固有のサンプルをデータセットに追加することを常に推奨します。

提供されるデータセットには、以下のサンプルが含まれています。

  • ストリップ済み
  • ELFバイナリ
  • Ghidraから収集されたもの

この分布から外れたサンプルに対して推論を実行しようとすると、ほぼ間違いなく使用できない予測になります。

データセット

新しいデータセット用のデータ抽出方法や、DIRTデータセットでの再学習・評価方法の詳細は、データセット準備ドキュメント に含まれています。

逆コンパイラ統合

retyper モジュールは、XTRIDE型復元システムと逆コンパイラとの深い統合のためのリファレンス実装を示しています。 この機能はフィーチャーフラグの背後にあり、cargo build --features retyper で有効化できます。

プログラム解析には、VulHunt の一部として公開された Binarly の BIAS フレームワークを利用しています。このフレームワークは表現力豊かな型システムを備えており、内部で復元された表現を疑似Cにリフトするために使用される Ghidra 逆コンパイラバックエンドのフォークとシームレスに統合されます。 このフォークとそのFFIを、逆コンパイラ内で変数型を直接変更できるインターフェース で拡張しました。 これにより、逆コンパイラのコンテキスト内で推論された型を直接適用でき、フィールド型の伝播などを含む応用が可能になります。

適用前:適用後:
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},
}
ツールをダウンロード