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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
EhTrace — ATraceはWindows上でバイナリの実行をトレースするためのツールです。 | Kitploit
ツール/GitHubGitHub/k2/ehtrace
動的分析 (サンドボックス)コード分析エクスプロイトリバースエンジニアリングデバッガファジングバイナリ解析
GitHubk2/ehtrace

EhTrace

ATraceはWindows上でバイナリの実行をトレースするためのツールです。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

EhTrace

LOGO

EhTrace(「エートレース」と発音)は、Windows向けの高性能バイナリトレーシング&インストゥルメンテーションフレームワークです。ソースコード、バイナリの変更、従来のデバッグを必要とせずに、Windows実行ファイルの深いランタイム解析を可能にします。

概要

EhTraceは、WindowsのVectored Exception Handling(VEH)とブロックステッピング技術を活用し、最小限のオーバーヘッドで包括的な実行トレースを提供します。従来のデバッグツールやインストゥルメンテーションツールとは異なり、EhTraceは完全にインプロセスで動作し、ターゲットバイナリにパッチを必要としません。

主な機能

  • バイナリ変更ゼロ: ターゲットバイナリを変更せずに実行をトレース
  • 高性能: シングルステップではなくブロックステッピングにより、毎秒約4300万イベントを達成
  • 完全なコードカバレッジ: 自動的な基本ブロックの検出と追跡
  • レジスタ状態の監視: 実行中のレジスタ状態をキャプチャして解析
  • デバッグモード不要: CPUのデバッグ/トレースMSR機能を有効にせずに動作
  • インプロセス動作: 従来のデバッガと比較してコンテキストスイッチのオーバーヘッドが最小
  • 複数のインストゥルメンテーションモード: さまざまなトレースおよび解析シナリオに対応

中核機能

  • 実行フロー解析: プログラムの実行経路と制御フローを追跡
  • コードカバレッジマッピング: 包括的なコードカバレッジレポートを生成
  • RoP防御: call/retバランシングによるリターン指向プログラミング攻撃の検出と防止
  • 鍵エスクロー: 暗号鍵のインターセプトとエスクロー機能
  • ファジング統合: AFL互換のファジングインストゥルメンテーション(AWinAFL)
  • シンボル解決: DIA2による自動シンボルロードと解決

アーキテクチャ

root@kitploit:~
flowchart TB
    subgraph Target["🎯 Target Process"]
        direction TB
        APP[Application Code]
        VEH[Vectored Exception Handler]
        style APP fill:#e1f5ff,stroke:#01579b,stroke-width:3px,color:#000
        style VEH fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#000
    end
    
    subgraph EhTrace["⚡ EhTrace Engine"]
        direction TB
        BLOCK[Block Stepper]
        DISASM[Capstone Disassembler]
        FIGHTERS[BlockFighters]
        CTX[Context Manager]
        style BLOCK fill:#f3e5f5,stroke:#4a148c,stroke-width:3px,color:#000
        style DISASM fill:#e8f5e9,stroke:#1b5e20,stroke-width:3px,color:#000
        style FIGHTERS fill:#ffebee,stroke:#b71c1c,stroke-width:3px,color:#000
        style CTX fill:#e0f2f1,stroke:#004d40,stroke-width:3px,color:#000
    end
    
    subgraph Output["📊 Analysis Output"]
        direction TB
        SHMEM[Shared Memory Log]
        GRAPHS[Visual Graphs]
        REPORTS[Coverage Reports]
        style SHMEM fill:#fce4ec,stroke:#880e4f,stroke-width:3px,color:#000
        style GRAPHS fill:#f1f8e9,stroke:#33691e,stroke-width:3px,color:#000
        style REPORTS fill:#fff8e1,stroke:#f57f17,stroke-width:3px,color:#000
    end
    
    APP -->|Exception| VEH
    VEH -->|Single Step| BLOCK
    BLOCK -->|Instruction| DISASM
    DISASM -->|Analysis| FIGHTERS
    FIGHTERS -->|State| CTX
    CTX -->|Events| SHMEM
    SHMEM -->|Data| GRAPHS
    SHMEM -->|Data| REPORTS
    
    style Target fill:#e3f2fd,stroke:#0d47a1,stroke-width:4px
    style EhTrace fill:#f3e5f5,stroke:#6a1b9a,stroke-width:4px
    style Output fill:#e8f5e9,stroke:#2e7d32,stroke-width:4px

中核動作原理

EhTraceは高度なパイプラインを通じて動作します:

  1. 🛡️ 例外処理: Vectored Exception Handler(VEH)の登録
  2. 👣 ブロックステッピング: 基本ブロック境界でのシングルステップ例外の利用
  3. 🔍 逆アセンブル: Capstoneを活用したオンザフライ命令解析
  4. 📝 ロギング: 外部解析のための共有メモリへの実行イベント書き込み
  5. ⚔️ ファイティング: セキュリティおよび解析タスクのための設定可能な「BlockFighters」の適用

フレームワークは、専用のコンテキスト構造を使用してスレッドごとに実行状態を維持し、カスタマイズ可能なインストゥルメンテーションのためのフックを提供します。

パフォーマンス

root@kitploit:~
graph LR
    subgraph Traditional["🐌 Traditional Debugger"]
        T1[Single Step]
        T2[Context Switch]
        T3[Kernel Mode]
        T4[~1M events/sec]
        style T1 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T2 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T3 fill:#ffcdd2,stroke:#c62828,stroke-width:2px,color:#000
        style T4 fill:#ef5350,stroke:#b71c1c,stroke-width:3px,color:#fff
    end
    
    subgraph EhTrace["⚡ EhTrace"]
        E1[Block Step]
        E2[In-Process]
        E3[User Mode]
        E4[~43M events/sec]
        style E1 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E2 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E3 fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px,color:#000
        style E4 fill:#66bb6a,stroke:#1b5e20,stroke-width:3px,color:#fff
    end
    
    T1 --> T2 --> T3 --> T4
    E1 --> E2 --> E3 --> E4
    
    style Traditional fill:#ffebee,stroke:#d32f2f,stroke-width:3px
    style EhTrace fill:#e8f5e9,stroke:#388e3c,stroke-width:3px

EhTraceは、いくつかの最適化によって高性能を実現しています:

  • 🎯 分岐ステッピング vs シングルステッピング: 基本ブロック境界でのみトレース
  • ⚡ インプロセス動作: デバッガのコンテキストスイッチなし
  • ⏱️ 時間状態管理: VEHが実行状態を自然に維持
  • 💾 効率的なロギング: 高スループットのイベント記録のための共有メモリバッファ

📊 ベンチマーク: 10秒間に 428,833,152 イベント(各32バイト)をキャプチャ = 約43M イベント/秒

出力例

CSW16デモ、シンボルなしでnotepad.exeをトレース:

シンボルなしのFlameグラフ

Capstone逆アセンブルを含む基本ブロックグラフ:

逆アセンブル付きBBグラフ

コードカバレッジの可視化:

BBグラフカバレッジ

コンポーネント

root@kitploit:~
graph TD
    subgraph Core["🎯 Core Components"]
        EH[EhTrace.dll<br/>Main Instrumentation]
        AC[Acleanout<br/>Log Dumper]
        AG[Agasm<br/>Graph Generator]
        style EH fill:#e1bee7,stroke:#6a1b9a,stroke-width:3px,color:#000
        style AC fill:#c5cae9,stroke:#3949ab,stroke-width:3px,color:#000
        style AG fill:#b2dfdb,stroke:#00695c,stroke-width:3px,color:#000
    end
    
    subgraph Tools["🔧 Supporting Tools"]
        AL[Aload<br/>DLL Injector]
        AP[Aprep<br/>Test EXE]
        AS[Astrace<br/>Stack Tracer]
        style AL fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#000
        style AP fill:#f8bbd0,stroke:#c2185b,stroke-width:3px,color:#000
        style AS fill:#d1c4e9,stroke:#512da8,stroke-width:3px,color:#000
    end
    
    subgraph Fuzzing["🐛 Fuzzing Integration"]
        AWA[AWinAFL<br/>AFL Instrumentation]
        style AWA fill:#ffccbc,stroke:#d84315,stroke-width:3px,color:#000
    end
    
    subgraph Viz["📊 Visualization"]
        WPF[WPFx<br/>Graph Viewer]
        DIA[Dia2Sharp<br/>Symbol Resolver]
        ASF[AStackFolding<br/>Flame Graphs]
        style WPF fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#000
        style DIA fill:#fff9c4,stroke:#f9a825,stroke-width:3px,color:#000
        style ASF fill:#ffecb3,stroke:#ff8f00,stroke-width:3px,color:#000
    end
    
    EH -->|Logs| AC
    AC -->|Data| AG
    AG -->|Graphs| WPF
    AL -->|Inject| EH
    DIA -->|Symbols| AG
    ASF -->|Process| AC
    AWA -->|Variant| EH
    
    style Core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:4px
    style Tools fill:#fff3e0,stroke:#ef6c00,stroke-width:4px
    style Fuzzing fill:#fbe9e7,stroke:#bf360c,stroke-width:4px
    style Viz fill:#e8f5e9,stroke:#388e3c,stroke-width:4px

EhTraceエコシステムは、いくつかの統合プロジェクトで構成されています:

中核コンポーネント

  • EhTrace: メインのインストゥルメンテーションDLL(テスト用にEXEとしてビルドすることも可能)
  • Acleanout: EhTraceが作成した共有メモリからトレースログをダンプ
  • Agasm: シンボルとCapstone統合によるグラフ生成のためのグルー/逆アセンブルツール

サポートツール

  • Aload: DLLインジェクションユーティリティ
  • Aprep: テスト実行ファイル(EhTraceをEXEとしてビルド)
  • Astrace: スタックトレースユーティリティ
  • AKeyTest: 暗号鍵エスクローのテスト

ファジング統合

  • AWinAFL: Windows向けAFL互換ファジングインストゥルメンテーション

可視化

  • WPFx: MSAGLグラフライブラリを使用したWPFベースの可視化
  • Dia2Sharp: シンボル処理のためのC# DIA2ラッパー
  • TestDump2: Dia2Sharpのテストアプリケーション
  • Amerger: ログマージユーティリティ
  • AStackFolding: フレームグラフ生成のためのスタックトレース折りたたみ

前提条件

ビルド要件

  • Visual Studio 2015以降(C++ツールチェーン)
  • Windows SDK
  • .NET Framework(可視化ツール用)

ランタイム依存関係

  • dbghelp.dll: シンボル解決(supportディレクトリに含まれています)
  • symsrv.dll: シンボルサーバーサポート(supportディレクトリに含まれています)
  • Capstone: 逆アセンブルエンジン(ライブラリはsupportディレクトリにあります)
  • MSAGL: グラフ可視化(Microsoft Automatic Graph Layout)

ビルド方法

  1. Visual Studioで EhTrace.sln を開きます
  2. ターゲット構成(Debug/Release)とプラットフォーム(x86/x64)を選択します
  3. ソリューションをビルドします

詳細なビルド手順については、BUILDING.md を参照してください。

使用方法

基本的なトレース

  1. EhTrace.dllをビルドまたは入手します
  2. Aloadまたは任意のインジェクション方法を使用して、ターゲットプロセスにEhTrace.dllをインジェクションします
  3. ターゲットアプリケーションを実行します
  4. Acleanoutを使用してトレースデータを収集します
  5. WPFxまたはカスタム解析ツールを使用して結果を可視化します

ワークフロー例

root@kitploit:~
# EhTraceをビルド
msbuild EhTrace.sln /p:Configuration=Release /p:Platform=x64

# ターゲットにインジェクション
Aload.exe target.exe EhTrace.dll

# トレースデータを収集
Acleanout.exe > trace.log

# Agasmで解析
Agasm.exe trace.log output.graph

包括的な使用ドキュメントについては、USAGE.md を参照してください。

設定

EhTraceは、BlockFightersフレームワークを通じてランタイム設定をサポートしています。ビルド内のファイター設定を変更することで、トレース動作を構成します。

利用可能なファイター:

  • RoPファイター: ROPガジェットチェーンを検出
  • 鍵エスクローファイター: 暗号操作をインターセプト
  • AFLファイター: ファジングインストゥルメンテーションを提供
  • カスタムファイター: 独自の解析ロジックを実装

開発

プロジェクト構造

root@kitploit:~
EhTrace/
├── EhTrace/          # 中核インストゥルメンテーションDLL
├── prep/             # サポートツールとユーティリティ
├── vis/              # 可視化コンポーネント
├── support/          # 依存関係とリソース
├── doc/              # ドキュメント
└── afl-fuzz/         # AFLファジング統合

主要なソースファイル

  • EhTrace.cpp: メインVEHハンドラと中核ロジック
  • BlockFighters.cpp: ファイターフレームワークの実装
  • Config.cpp: 設定とシンボル管理
  • GlobLog.cpp: 共有メモリロギング
  • KeyEscrow.cpp: 暗号鍵インターセプト
  • RoP-Defender.cpp: ROP検出ロジック

ライセンス

このプロジェクトはGNU Affero General Public License v3.0の下でライセンスされています。詳細はLICENSEファイルを参照してください。

Copyright (C) 2014-2016 Shane Macaulay

コントリビューション

コントリビューションを歓迎します!既存のスタイルに従い、適切なテストを含むコードを提供してください。

作者

Shane Macaulay ([email protected])

謝辞

  • Capstone逆アセンブルフレームワーク
  • Microsoft Automatic Graph Layout (MSAGL)
  • AFLファジングフレームワーク
  • セキュリティ研究コミュニティ

参考文献

技術的な詳細については、以下を参照してください:

  • ARCHITECTURE.md - 技術アーキテクチャドキュメント
  • doc/ - 追加のドキュメントとプレゼンテーション
ツールをダウンロード