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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
obfuscation_analysis — バイナリ解析プラグイン。難読化されたコードを解析・簡略化する。 | Kitploit
ツール/GitHubGitHub/mrphrazer/obfuscation_analysis
静的分析コード分析リバースエンジニアリングマルウェア分析ユーティリティとフレームワークバイナリ解析
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

バイナリ解析プラグイン。難読化されたコードを解析・簡略化する。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

難読化解析 (v1.3)

著者: Tim Blazytko & Nicolò Altamura

難読化されたコードを解析し、簡素化する

説明:

Obfuscation Analysis は、強力に保護されたバイナリを扱う際の苦労を軽減する Binary Ninja プラグインです。 いくつかの焦点を絞ったヘルパーを同梱しており、以下のことが可能です

  • Mixed-Boolean Arithmetic (MBA) 式をワンクリックで簡素化 (msynth をベースにしています)
  • 逆アセンブリが壊れている関数を特定して除去

いくつかの使用例は examples にあります。さらに、REcon トーク「Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications」ではいくつかの使用例が紹介されています。スライドはこちらにあります。このプラグインは Obfuscation Detection を補完します。疑わしい関数がフラグ付けされたら、Obfuscation Analysis がそれらをクリーンアップして理解するのに役立ちます。ヘルパーは今後も追加されていく予定です。

主な機能

  • Binary Ninja のデコンパイラビューで Mixed-Boolean Arithmetic 難読化を簡素化
  • 逆アセンブリが壊れている関数を特定して削除
  • デコンパイラビューで関数をインライン展開
  • 効率的でアーキテクチャに依存しない実装
  • バックグラウンドタスクとして実行
  • 丁寧なエラー処理: 簡潔なユーザーメッセージ、Debug ログに完全なトレース

インストール

このツールは Binary Ninja のプラグインマネージャーを使用してインストールできます。

手動でインストールする場合は、Binary Ninja のプラグインフォルダで以下の手順に従ってください:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_analysis.git
cd obfuscation_analysis

# optionally: use a virtual environment
python -m venv obfana-env
source obfana-env/bin/activate

# install requirements
pip install -r requirements.txt

仮想環境を使用する場合は、Binary Ninja の設定で site-packages のパスを手動で設定する必要があります。

使用方法

このプラグインは Binary Ninja のトップバーメニューの Plugins -> Obfuscation Analysis から利用できます。

Plugin Menu

MBA 簡素化

算術難読化を簡素化するには、まずデコンパイラビューで簡素化したい HLIL 式をハイライトします。次に、Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify を選択します。プラグインは完全な計算を解決し、それを msynth に通し、簡素化された結果を同じ行のコメントとして挿入します。以下の短いアニメーションはワークフロー全体を示しています:

MBA Simplification Workflow

MBA 簡素化は msynth に依存しています。デフォルトでは、プラグインは msynth のデフォルト簡素化オラクルを使用します。これはプラグインに同梱され、事前設定されています。より大きなオラクルやカスタムオラクルを使用したい場合は、obfuscation_analysis.mba_oracle_path を手動で設定するか、Binary Ninja の設定ウィンドウでファイルを参照してください。

Plugin Settings

何か問題が発生した場合、プラグインは簡潔なユーザーレベルのメッセージを Log ペインに書き込みます。ログビューを Debug に切り替えると、完全なトレースバックを確認できます。

Log Output

機能

このプラグインは、保護されたバイナリをリバースエンジニアリングする際に遭遇する一般的な障害に対処する、焦点を絞ったヘルパーを同梱しています。それぞれは UI またはヘッドレススクリプトからバックグラウンドタスクとして実行できます。以下は現在利用可能な機能です。

破損した関数

破損した関数とは、逆アセンブリに未定義のアーティファクト (空の基本ブロック、無効または重複する命令など) が現れる関数です。このヘルパーは BinaryView 全体を走査し、そのような症状を持つ関数をフラグ付けし、リストアップすることで、アナリストが誤ってパースされたコードや意図的に難読化されたコードを素早く検査できるようにします。オプションの削除アクションは、フラグ付けされたすべての関数を消去し、再解析を強制して関数リストをクリーンアップします。これは特に以下の特定に役立ちます

  • 逆アセンブラが誤ってコードとして昇格させたデータブロブ
  • 直線的な逆アセンブリを壊す難読化スタブ
  • 重複する命令やずれたジャンプを使用する関数
  • 珍しい命令に遭遇する新しいアーキテクチャの問題

MBA 簡素化

Mixed-Boolean Arithmetic (MBA) は、単純な計算を算術演算とブール演算の長い連鎖に埋め込む難読化手法です。この機能はデコンパイラ内でそのような式を簡素化します。HLIL 命令を選択すると、プラグインは現在の基本ブロックに制限された SSA 後方スライスを使用してその完全な計算チェーンを収集し、そのスライスを Miasm IR に変換し、msynth に投入し、最後に簡素化された結果をデコンパイラビューにコメントとして追加します。この機能により、以下が可能になります

  • 複数行の MBA の絡まりを単一の読みやすい方程式に折り畳む
  • MBA に依存する不透明述語を解決する
  • 複雑な定数エンコーディングをリテラル値まで畳み込む

関数インライン展開

現在選択されている関数について、このヘルパーはデコンパイラビュー内のすべての呼び出し先を再帰的にインライン展開し、Binary Ninja に単一の自己完結した IL を提供します。すべての境界がなくなると、デコンパイラは関数をまたいでデータを伝播でき、より深い定数畳み込み、デッドコード除去、そして一般的により明確なロジックが可能になります。以下の用途に使用します

  • 小さなラッパー、サンク、アクセサヘルパーの連鎖を折り畳む
  • 複数の関数に分割されたアルゴリズム表現を改善する
  • ロジックが意図的に関数間に散らばっている難読化スキームを解析する

HLIL は非常に巨大になり、非常に大きな関数や深いコールツリーではレンダリングが遅くなる可能性があることに注意してください。さらに、すべてが単一のユニットにマージされると、一部のデコンパイラ最適化が効果的でなくなる場合があります。これを制御するには、インライン展開の深さを制限できます: Settings -> Obfuscation Analysis -> Max Function Inlining Depth を上限 N に設定します (デフォルトでは 1 に設定されています)。深さ制限がある場合、最初の N コールレベルのみがインライン展開され、より深い呼び出しはインライン展開されません。

制限事項

このプラグインには、注意すべきいくつかの注意点があります。そのほとんどは MBA 簡素化パイプラインに関連しています:

  • Binary Ninja のバグ: BN 5.0 stable では、HLIL の型キャストが欠落しているため、後方スライスステップが失敗する可能性があります: https://github.com/Vector35/binaryninja-api/issues/6371。この問題は 5.1.7477-de 以降で修正されています

  • スライスが1つの基本ブロックに限定される: 先行ブロックにある変数定義は無視されます (多くの場合、制御フローに依存するため)、そのため一部の MBA 項は部分的にしか解決されない可能性があります

  • HLIL から Miasm IR への変換ギャップ: すべての HLIL 構文に健全な Miasm の等価物があるわけではありません。変換が失敗すると、その式はスキップされ、エラーがログに記録されます

  • IL カバレッジ: 制御フローノードと浮動小数点演算は現在変換されません

  • msynth の制約を継承 : MBA 簡素化はすべての msynth の制限を継承します

連絡先

詳細については、Tim Blazytko (@mr_phrazer) または Nicolò Altamura (@nicolodev) までお問い合わせください。

ツールをダウンロード