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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
LCSAJdump — ML駆動のグラフベース・マルチアーキテクチャアプローチによるROPガジェット検出 | Kitploit
ツール/GitHubGitHub/chris1sflaggin/lcsajdump
静的分析エクスプロイトリバースエンジニアリングシェルコードバイナリ解析機械学習論文と研究学習と教育ペイロード開発
GitHubchris1sflaggin/lcsajdump

LCSAJdump

ML駆動のグラフベース・マルチアーキテクチャアプローチによるROPガジェット検出

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

LCSAJdump ロゴ

LCSAJdump

PyPI Downloads

自動ガジェット発見のためのユニバーサルグラフベースフレームワーク

Status License: MIT



LCSAJdump は、Return-Oriented Programming (ROP) および Jump-Oriented Programming (JOP) のガジェットを発見するために設計された静的解析フレームワークです。従来のスキャナーとは異なり、LCSAJdump はアーキテクチャ非依存であり、グラフベースのアプローチを採用して、一般的な線形ツールでは見えない脆弱性を明らかにします。


なぜ LCSAJdump なのか?

一般的な ROP スキャナーは、バイナリの実行可能バイトに対して線形の「スライディングウィンドウ」方式を使用します。この方法は、無条件ジャンプや条件付き分岐によって接続された非連続メモリブロックを横断する実行チェーンであるシャドウガジェットを体系的に識別できません。

LCSAJdump は、LCSAJ(Linear Code Sequence and Jump) 分析を通じて制御フローグラフ(CFG) を再構築することで、この制限を克服します。バイナリを基本ブロックの有向グラフとしてモデル化することにより、このツールは以下を識別します。

  1. 連続ガジェット: 制御フロー転送で終わる標準的な線形シーケンス。
  2. シャドウガジェット(非連続): 線形スキャンでは到達できない命令を利用することで、「不良バイト」(例:ヌルバイト)を回避する複雑なチェーン。

主な機能

  • マルチアーキテクチャ対応: RISC-V(64GC)、x86-64、ARM64 をネイティブサポートし、モジュール式プロファイルを介して他のアーキテクチャに容易に拡張可能。
  • グラフベース解析: .text セクションを LCSAJ 基本ブロックに分割し、カスタム構築の逆制御フローグラフ(軽量な隣接表現、重いグラフ依存関係なし)を介してフロー関係を再構築。
  • Rainbow BFS アルゴリズム: 制御フローシンクから開始する独自の後方幅優先探索。O(1) 早期削除ユニークフィルターとハードキャップ命令制限を備え、状態爆発を防ぎ、高密度な CISC バイナリでも超高速解析を実現。
  • 遅延グラフ構築: グラフ構築では、--depth ホップ内でガジェットテールから到達可能なノードのみを保持し、大規模バイナリ(例:libc)のメモリとビルド時間を劇的に削減しつつ、同一の結果を生成。
  • 2段階ランキングエンジン: Optuna でベイズ最適化された超高速ヒューリスティックベースラインと、構造的特徴と意味的特徴を使用してガジェット品質を洗練するディープラーニングLightGBM ML モデルを組み合わせ。
  • ゼロオーバーヘッド推論: ML モデルはネイティブに統合され、デフォルトで実行され、数万のノードを数秒で処理。ノイズの多いジャンプを効果的にフィルタリングし、クリーンで制御性の高いガジェットチェーンを返す強力なフィルターとして機能。モデルは Hugging Face でホスト。
  • 剪定パラメータ: 設定可能な「Darkness」係数により、解析深度とパフォーマンスのバランスを調整し、循環グラフでの無限ループを防止。

サポートされているアーキテクチャ

(ベンチマークを参照)。

LCSAJdump はユニバーサルに設計されています。現在サポートされているアーキテクチャ:

  • RISC-V 64ビット (RV64GC): 圧縮16ビット命令を完全サポート。
  • x86-64: 可変長の重複命令を処理。メモリ爆発なしで高密度グラフを安全にナビゲート。
  • ARM64: 32ビット命令を処理し、厳格なヒューリスティックペナルティを介して肥大化したガジェットを深くフィルタリング。
  • その他のアーキテクチャ: config.py で新しいプロファイルを定義することで簡単に実装可能。

インストール

Pip 経由(推奨)

root@kitploit:~
pip install lcsajdump

ソースから(開発)

root@kitploit:~
git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt


使用法

LCSAJdump は、正確なバイナリ解析のための強力な CLI を提供します。

標準解析(デフォルト RISC-V):

root@kitploit:~
python LCSAJdump.py <path_to_binary>

高度な解析(アーキテクチャと出力ファイルの指定):

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <path_to_binary>

不良文字フィルター付き JSON エクスポート:

root@kitploit:~
lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <path_to_binary>

注: --json の後に -o を使用して JSON をファイルに保存します。--json なしの場合、-o はプレーンテキストを保存します。

プレーンテキスト出力の保存:

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <path_to_binary>

すべての実行可能セクションの解析:

root@kitploit:~
lcsajdump --all-exec -d 25 -k 10 -l 30 <path_to_binary>

厳密にアルゴリズムによるランキングを強制(ML をバイパス):

root@kitploit:~
lcsajdump --algo <path_to_binary>

CLI オプション



精度とベンチマーク

LCSAJdump は、benchmarkTests/ ディレクトリにある厳格かつ段階的に検証されたテストスイートによって支えられています。

14 回にわたる主要なセマンティック特徴エンジニアリングの反復を通じて、ハイブリッドモデルは、純粋に構文上のヒューリスティックではなく、実際のメモリ副作用(angr シンボリック実行を介して抽出)に基づいてガジェットを識別することを学習しました。

グループ認識型 5 分割交差検証(訓練中に見たことのないテストバイナリ)で評価したところ、ランカーは NDCG@1 = 0.914 ± 0.047 および NDCG@10 = 0.922 ± 0.052 を達成し、最も有用なガジェットが常に出力の先頭に配置されることを意味します。2 段階エンジンは、クリーンなスタックポップシーケンスや ret2csu のような呼び出しを優先的にランク付けし、従来の静的スキャナーを欺くクラッシュしやすい固定オフセットジャンプに大きなペナルティを課すことに成功しています。


開発者&ML ガイド

リポジトリは、エンドユーザーと ML 研究者の両方をサポートするように構成されています。

  • プロダクションエンジン: コア CLI は、Hugging Face でホストされているモデルを使用して推論エンジンをシームレスに統合し、手動でのモデル読み込みは不要です。
  • ML パイプライン: lcsajdump/ml_study/ ディレクトリには、モデルのトレーニングに使用される完全なパイプラインが含まれています。
    • build_dataset.py:CTF バイナリのコーパスから構造的特徴と意味的特徴を抽出します。
    • train_model.py:LightGBM LambdaRank モデルをトレーニングし、.pkl モデルを出力します。
    • kfold_cv.py:K 分割交差検証を使用してデータセットを検証します。

貢献(フォーク歓迎!)

フレームワークは新しい実装に対して開放されています。新しいアーキテクチャを追加するには:

  1. リポジトリをフォークします。
  2. lcsajdump/core/config.py を開きます。
  3. 目的のアーキテクチャ(例:x86_64)のジャンプニーモニック、リターンニーモニック、レジスタを定義して、ARCH_PROFILES ディクショナリに新しいプロファイルを追加します。
  4. プルリクエストを送信します。

ライセンス

このプロジェクトは MIT ライセンスのもとで公開されています。詳細については LICENSE ファイルを参照してください。


プロジェクトリンク

プロジェクトのウェブページをご覧ください:LCSAJdump web page


Chris1sflaggin によって自動ガジェット発見の研究プロジェクトとして作成されました。
ツールをダウンロード
フラグタイプデフォルト説明
-a, --archTEXTauto対象アーキテクチャ(auto、riscv64、x86_64、arm64)。ELF ヘッダーから自動検出。
-d, --depthINTEGER20LCSAJ ブロック内の最大検索深度。チェーン長を制御。
-k, --darknessINTEGER5剪定しきい値 — ノードあたりの最大訪問回数。高いほどガジェットが多く、スキャンが遅くなる。
-l, --limitINTEGER10出力に表示するガジェットの最大数。
-s, --min-scoreINTEGER0結果に表示されるガジェットの最小ヒューリスティックスコア。
-i, --instructionsINTEGER15単一の LCSAJ ノードに含まれる命令の最大数。
-v, --verboseFLAG—詳細なガジェットごとの結果を出力するための詳細出力を有効化。
-o, --outputPATH—出力をファイルに書き込む。デフォルトはプレーンテキスト。JSON 出力の場合は --json と組み合わせて使用。
-b, --bad-charsTEXT—ガジェットアドレスからフィルタリングする 16 進バイト(例:"000a0d")。
--jsonFLAG—ガジェットを構造化 JSON として出力。-o と組み合わせてファイルに保存。
--all-execFLAG—.text だけでなく、すべての実行可能セクションを解析。
-al, --algoFLAG—厳密にアルゴリズムによるランキングを使用(ML をバイパス)。
--versionFLAG—インストールされているバージョンを表示して終了。
--helpFLAG—ヘルプメッセージを表示して終了。