Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
haruspex — IDA Hex-Raysデコンパイラから疑似コードを抽出する脆弱性研究アシスタント。 | Kitploit
ツール/GitHubGitHub/0xdea/haruspex
静的コード分析 (SAST)脆弱性分析リバースエンジニアリングバイナリ解析
GitHub0xdea/haruspex

haruspex

IDA Hex-Raysデコンパイラから疑似コードを抽出する脆弱性研究アシスタント。

リポジトリを見るウェブサイト
13110444日前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

haruspex

build doc

「ハッキングとは、常にすべての前提を疑うという規律である。」

-- Dave Aitel

Haruspex は、IDA のデコンパイラが生成した擬似コードを、IDE にインポートしたり、Semgrep、weggli、oneiromancer などの静的解析ツールで解析するのに適した形式で抽出する、超高速な IDA ヘッドレスプラグインです。

機能

  • IDA 9.x と idalib-rs Rust バインディングによる、超高速なヘッドレスユーザーエクスペリエンス。
  • IDA の Hex-Rays デコンパイラが実装するあらゆるアーキテクチャのバイナリターゲットをサポート。
  • 各関数の擬似コードは、検査しやすいように出力ディレクトリ内の個別のファイルに保存されます。
  • グローバルおよび関数ごとの型定義は、擬似コードと並んでヘッダーファイルに抽出されます。
  • 外部クレートは [decompile_to_file] を呼び出して関数をデコンパイルし、その擬似コードと型定義をディスクに保存できます。これにより、デコンパイルできない関数と、Hex-Rays ライセンスが利用できないなどのエラーを区別できます。

記事

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

関連項目

  • https://github.com/0xdea/ghidra-scripts/blob/main/Haruspex.java
  • https://github.com/0xdea/semgrep-rules
  • https://github.com/0xdea/weggli-patterns
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://github.com/xorpse/parascope
  • https://hnsecurity.it/blog/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep

インストール

最新リリースを入手する最も簡単な方法は、crates.io 経由です:

  1. IDA をダウンロード、インストール、設定します(https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clang をインストールします(https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOS では、次のようにインストールします:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install haruspex --locked
    
    Windows では、代わりに次のコマンドを使用します:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo install haruspex --locked
    

コンパイル

あるいは、ソースからビルドすることもできます:

  1. IDA をダウンロード、インストール、設定します(https://hex-rays.com/ida-pro を参照)。
  2. LLVM/Clang をインストールします(https://rust-lang.github.io/rust-bindgen/requirements.html を参照)。
  3. Linux/macOS では、次のようにコンパイルします:
    git clone --depth 1 https://github.com/0xdea/haruspex
    cd haruspex
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release --locked
    
    Windows では、代わりに次のコマンドを使用します:
    git clone --depth 1 https://github.com/0xdea/haruspex
    cd haruspex
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo build --release --locked
    

使用方法

  1. IDA が有効なライセンスで適切に設定されていることを確認します。
  2. IDA のインストール先が標準以外の場所にある場合は、IDADIR 環境変数が設定されていることを確認します。
  3. 次のように実行します:
    haruspex <binary_file>
    
  4. 抽出された擬似コードと型定義は、<binary_file> の隣の出力ディレクトリにあります。名前は <binary_file> に基づき、拡張子がある場合は .dec に置き換えられます(例:foo.exe と foo はどちらも foo.dec を生成するため、拡張子だけが異なるバイナリは同じ出力ディレクトリを共有します):
    vim foo.dec
    code foo.dec
    

互換性

公式にサポートされているのは最新の IDA リリースのみですが、古いバージョンでも動作する場合があります。次の表は、各 IDA バージョンに対応する最新の互換リリースをまとめたものです:

IDA バージョン最新の互換リリース
v9.0.240925v0.2.4
v9.0.241217v0.3.5
v9.1.250226v0.6.2
v9.2.250908v0.7.5
v9.3.260213v0.8.1
v9.3.260327v0.9.0
v9.3.260421v0.9.3
v9.4.260714current release
v9.4.260915current release

[!NOTE] 追加情報については、idalib-rs のドキュメントを確認してください。

クレジット

このプロジェクトの開発は、以下の組織によって支援されています:

  • HN Security
  • Hex-Rays の Contributor Program を通じて

変更履歴

  • CHANGELOG.md

TODO

  • 解析された行の割合が減少しないことを確認するための Semgrep CI 回帰テストを追加する。
  • 擬似コードを出力する際に .c の代わりに .cpp 拡張子を使用する(この issue を参照)?
  • 自動解析と分析を容易にするためのシリアライズされた出力を実装する。
  • Semgrep スキャンとの統合(https://github.com/0xdea/semgrep-rules を参照)。
  • weggli スキャンとの統合(https://github.com/0xdea/weggli-patterns を参照)。
  • HexRaysPyTools や abyss のスタイルでデコンパイラ出力を改善する。
  • 並列解析を実装する(https://github.com/fugue-re/fugue-mptp を参照)。
ツールをダウンロード