アップデート一覧に戻る
New releaseAug 18, 2026

diaphora v3.4.2

Diaphora、最も高度なフリーかつオープンソースのプログラム差分ツール。

共有

δiaphora

インストール

Hex-Raysプラグインマネージャーでインストールします:

hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.2.zip

手動インストールの手順は以下のとおりです。

Diaphora(διαφορά、ギリシャ語で「差分」の意)バージョン3.4は、現在(2026年)利用可能な中で最も先進的なプログラム差分解析ツール(IDAプラグインとして動作)です。SyScan 2015で初めてリリースされて以来、積極的にメンテナンスが続けられています。Diaphoraはすでに11年にわたり、IDA 6.8から9.4までのすべてのマイナーバージョンに移植されています。

DiaphoraはIDA >= 7.4のバージョンをサポートしています。コードがPython 3.Xでのみ動作するためです(Python 3.11が最後にテストされたバージョンです)。

独自機能

Diaphoraには、プログラム差分解析(bindiffing)ツールとして期待される一般的な機能が数多く備わっています。例えば:

  • アセンブラの差分解析。
  • 制御フローグラフの差分解析。
  • シンボル名とコメントの移植。
  • 手動マッチの追加。
  • 類似度比率の計算。
  • バッチ自動化。
  • コールグラフマッチングの計算。
  • グラフ理論、アセンブラ、バイト列、関数の特徴などに基づく数十のヒューリスティック...

しかし、Diaphoraには他の公開ツールにはない独自機能も数多くあります。以下は独自機能の一部です(網羅的なリストではありません):

  • 構造体、列挙型、共用体、typedefの移植機能。
  • パッチ差分解析セッションで修正された可能性のある脆弱性の検出。
  • コンパイル単位のサポート(コンパイル単位の発見と差分解析)。
  • マイクロコードのサポート。
  • 並列差分解析。
  • 疑似コードベースのヒューリスティック。
  • 疑似コードパッチの生成。
  • 疑似コードの差分解析(構文ハイライト付き!)。
  • スクリプティングサポート(エクスポート処理と差分解析処理の両方に対応)。
  • ...

インストール

Diaphoraはインストールを必要としません。コードをダウンロードして、IDA内またはコマンドラインでスクリプトdiaphora.pyを実行するだけです(コマンドラインは、すでにエクスポート済みのデータベースの差分解析のみ対応)。ただし、以下の手順でプラグインとしてIDAに統合することもできます:

  • plugins/diaphora_plugin.pyplugins/diaphora_plugin.cfgをIDAのプラグインディレクトリにコピーします。
  • diaphora_plugin.cfgを編集し、pathの値をDiaphoraのディレクトリに設定します。

寄付

寄付をすることで、Diaphoraの作者を支援(または感謝の意を示す)ことができます。ご希望の場合は、以下のリンクのいずれかを使用できます:

  • Liberapay
  • Donate

サポート

問題が発生した場合やヘルプが必要な場合は、遠慮なくGitHubでissueを開いてください。対話形式でのチャットをご希望の場合は、次のDiscordチャンネルをご利用ください:https://discord.gg/atg34w2xjV

ライセンス

1.2.4以前のバージョン(1.2.4を含む)は、GNU GPLバージョン3の下でライセンスされていました。バージョン2.0以降、DiaphoraはGNU Affero GPLバージョン3ライセンスの下でライセンスされています。このライセンス変更は、Diaphoraを変更・適応させたい企業が、変更内容を還元せずにこれらの変更版に基づくWebサービスを提供できないようにするためです。

99.99%のユーザーにとって、このライセンス変更はまったく影響しません。会社で異なるライセンスモデルが必要な場合は、次のセクションを確認してください...

商用サポートとコンサルティング

商用サポートとコンサルティングは、正規の企業向けに提供されています。解析対象に関する問題のサポートやコンサルティング、Diaphoraベースの製品開発、自社ツールと連携したDiaphoraの社内利用、剽窃検出プロジェクトなどが必要な場合は、詳細について[email protected]までお問い合わせください。

ライセンスに関する問題

会社がAGPLライセンスの使用を許可していない場合、Diaphoraの商用ライセンスを取得して、自社または勤務先の企業で使用することができます(IDAのネームドライセンスと同様の概念です)。詳細については、[email protected]までお問い合わせください。

Diaphoraの使用を妨げているのは私ではなく、あなたの会社であることをご理解ください。ご了承いただきありがとうございます。

Wiki

エクスポートや差分解析プロセスの自動化方法をお探しの場合や、操作を高速化したい場合などは、そのような質問に回答しているwikiを参照することをお勧めします。

スクリーンショット

CVE-2020-1350で脆弱性がパッチ適用された正確な関数をDiaphoraが特定しているところ:

CVE-2020-1350

Diaphoraが再び、CVE-2023-28231が修正された正確な関数を特定しているところ:

CVE-2023-28231

CVE-2023-28231。ZDIのブログで説明されているように、この脆弱性は「ProcessRelayForwardMessage()」内のリレー転送メッセージ数が32(0x20)以上でないことをチェックすることで修正されました。以下の疑似コード差分解析に示されています:

CVE-2023-28231

Hex-Rayのマイクロコード差分解析を実行しているDiaphora:

グラフ内のマイクロコードの差分解析

アセンブラ、疑似コード、マイクロコードの差分解析:

アセンブラ、疑似コード、マイクロコード

Diaphora 3.0でCVE-2023-21768の差分解析:

Diaphora 3.0でCVE-2023-21768の差分解析

これは、iOS 9.3.5で修正されたPEGASUS iOSカーネルの脆弱性をDiaphoraで差分解析しているスクリーンショットです:

iOS 9.3.5の差分解析

そして、これはMicrosoftセキュリティ情報MS15-034をDiaphoraで差分解析している古いスクリーンショットです:

DiaphoraでMS15-034を差分解析

以下は、Alex Ionescuのブログ記事DiaphoraでMS15-050を解析から抜粋した、Microsoftセキュリティ情報MS15-050をDiaphoraで差分解析しているスクリーンショットです。

DiaphoraでMS15-050を差分解析、最良マッチ DiaphoraでMS15-050を差分解析、部分マッチ DiaphoraでMS15-050を差分解析、疑似コードの差分解析

DiaphoraでLuaBotを差分解析、マッチと疑似コード

以下は、DiaphoraがiOS 10.3.3のiBootとiOS 11.0の差分を解析しているスクリーンショットです:

DiaphoraでiOS 10.3.3のiBootとiOS 11.0を差分解析

カテゴリ