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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Dna — LLVMベースの静的バイナリ解析フレームワーク | Kitploit
ツール/GitHubGitHub/colton1skees/dna
静的分析脆弱性分析コード分析エクスプロイトリバースエンジニアリングデバッガバイナリ解析ファームウェア解析
GitHubcolton1skees/dna

Dna

LLVMベースの静的バイナリ解析フレームワーク

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Dna

Dna は、LLVM 上に構築された静的バイナリ解析フレームワークです。特筆すべき点として、ほぼ完全に C# で書かれており、LLVM、Remill、Souper 向けのマネージドバインディングも含まれています。

機能

Dna は、SATURN 論文に強く影響を受けた反復的な制御フローグラフ再構築を実装しています。完全な制御フローグラフが復元されるまで、再帰降下、リフティング(remill を使用)、パス解決を反復的に適用します。ジャンプテーブルの場合、Souper と z3 に基づく再帰アルゴリズムを使用して、可能なジャンプテーブルターゲットの集合を解決します。反復探索アルゴリズムはここ、ジャンプテーブル解決アルゴリズムはここで確認できます。

制御フローグラフが完全に探索されると、こことここのアルゴリズムを使用して、x86 に再コンパイルし、バイナリに再挿入できます。コンパイルされたコードは決して美しいものではありませんが、復元された制御フローグラフが正しい限り動作するはずです。とはいえ、これはまだ研究プロトタイプであり、バグやエッジケースが存在することは想定されています。制御フローグラフの探索は、例えば無制限のジャンプテーブルやリフティング不可能な命令の場合には失敗する可能性があります。

その他の注目すべき機能は次のとおりです:

  • ほとんどのジャンプテーブルをサポート。MSVC のネストされた、いわゆる圧縮ジャンプテーブルも含みます。
  • SEH を含むコードを LLVM IR にリフティングすることをサポート。SEH が存在する場合、try/catch 文と filter 組み込み関数が制御フローグラフに挿入されます。ただし、リコンパイラは(まだ)SEH をサポートしていないため(SEH エントリは修正されません)、例外が発生するとクラッシュします。
  • C# でネイティブに LLVM パスを記述するための強力な API を含みます。例えば MemorySSA、LoopInfo、支配木、パスパイプライン管理などのバインディングがあります。
  • graphviz を使用した LLVM IR およびバイナリ制御フローグラフの可視化、あるいは Binary Ninja 用のスクリプトジェネレータを提供。

いくつかの注意点:

  • x86_64 のみがサポートされています
  • 再コンパイルされたコードは CET 準拠ではありません

依存関係

  • LLVM/LLVMSharp
  • Remill
  • Souper
  • AsmResolver
  • Rivers

Dna は現在 LLVM 17 に基づいていることに注意してください。

VMProtect

Dna には、Dna.BinaryTranslator/VMProtect にある VMProtect 非仮想化プラグインが含まれています。詳細についてはこの PRを参照してください。

ビルド

Dna は現在 LLVM 17 を対象としており、Visual Studio 2022 を使用して Windows x64 上でビルドされることを想定しています。 Dna.LLVMInterop を Release モードでビルドしてください。ネイティブ依存関係ツリーは Release でビルドされており、Debug の interop ビルドはサポートされていません。

前提条件

  • C++/MSBuild ツールを備えた Visual Studio 2022
  • CMake
  • Ninja
  • VS ツールチェーンから利用可能な clang-cl / LLVM ツール
  • EqSat 単純化 DLL 用の Rust/Cargo
  • .NET SDK 8+

以下のコマンドを、VS x64 開発者シェル、または VS C++ ツールが PATH に含まれる別のシェルから実行してください。

1. ネイティブ依存関係をビルドする

依存関係スーパービルドは、LLVM 17、Remill、Z3、XED、gflags/glog、および関連するネイティブライブラリを Dna.LLVMInterop/dependencies/install にインストールします。

cmake -S Dna.LLVMInterop/dependencies `
      -B Dna.LLVMInterop/dependencies/build `
      -G Ninja `
      -DCMAKE_BUILD_TYPE=Release `
      -DCMAKE_C_COMPILER=clang-cl `
      -DCMAKE_CXX_COMPILER=clang-cl

cmake --build Dna.LLVMInterop/dependencies/build

コンパイラ、ビルドタイプ、または CRT 設定を変更する場合は、再構成する前に Dna.LLVMInterop/dependencies/build と Dna.LLVMInterop/dependencies/install の両方を削除してください。

2. Rust 単純化 DLL をビルドする

Dna.Example と単純化プロジェクトは、Cargo のリリース出力から eq_sat.dll をコピーします。

cargo build --manifest-path Simplifier/EqSat/Cargo.toml --release

3. ソリューションをビルドする

& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" `
  Dna.sln `
  /restore `
  /p:Configuration=Release `
  /p:Platform=x64 `
  /m
ツールをダウンロード