
diaphora v3.4.2
Diaphora、最も高度なフリーかつオープンソースのプログラム差分ツール。
δiaphora
インストール
Hex-Rays プラグインマネージャーでインストールします:
hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.5.0.zip
手動インストール: コードをダウンロードし、plugins/ ディレクトリに配置します。
Diaphora (διαφορά、ギリシャ語で「違い」の意) バージョン 3.5 は、今日 (2026年) 利用可能な中で最も高度なプログラム diffing ツール (IDA プラグインとして動作) です。2015年にリリースされ、それ以来活発にメンテナンスされています: Diaphora は既に11年間にわたり、IDA 6.8 から 9.5 までのすべてのマイナーバージョンにポーティングされています。
Diaphora は IDA >= 7.4 のバージョンをサポートしています。これはコードが Python 3.X でのみ動作するためです (Python 3.11 が最後にテストされたバージョンです)。
独自の機能
Diaphora には、期待されるであろう最も一般的なプログラム diffing (bindiffing) 機能の多くが備わっています。例えば:
- アセンブラの diffing。
- 制御フローグラフの diffing。
- シンボル名とコメントの移植。
- 手動マッチの追加。
- 類似度比率の計算。
- バッチ自動化。
- コールグラフマッチングの計算。
- グラフ理論、アセンブラ、バイト、関数の特徴などに基づく数十のヒューリスティック。
しかし、Diaphora には他の公開ツールには存在しない独自の機能も多数あります。以下は独自機能の非網羅的なリストです:
- struct、enum、union、typedef を移植する機能。
- パッチ diffing セッションにおける潜在的に修正された脆弱性の検出。
- コンパイル単位のサポート (コンパイル単位の検出と diffing)。
- マイクロコードのサポート。
- 並列 diffing。
- 擬似コードベースのヒューリスティック。
- 擬似コードパッチの生成。
- 擬似コードの diffing (シンタックスハイライト付き!)。
- スクリプトのサポート (エクスポートと diffing の両プロセス向け)。
- ...
寄付
寄付を行うことで、Diaphora の作者を支援 (または感謝) することができます。寄付をご希望の場合は、以下のリンクのいずれかをご利用ください:
サポート
問題が発生した場合や助けが必要な場合は、Github でお気軽に issue を作成してください。インタラクティブにチャットしたい場合は、以下の Discord チャンネルをご利用いただけます: https://discord.gg/atg34w2xjV
ライセンスの問題
あなたの会社が AGPL ライセンスの使用を許可していない場合、社内で Diaphora を使用するため、または勤務先のあらゆる企業で個人として使用するための (IDA の名前付きライセンスに似た概念の) 商用ライセンスを取得することができます。詳細については、[email protected] までご連絡ください。
Diaphora の使用を妨げているのは私ではなく、あなたの会社であることをご理解ください。ご理解に感謝いたします。
Wiki
エクスポートや diffing プロセスの自動化方法、操作の高速化などをお探しの場合は、wiki をご覧ください。そうした疑問への回答が記載されています。
スクリーンショット
CVE-2020-1350 において脆弱性がパッチされた正確な関数を発見する Diaphora:

再び、CVE-2023-28231 が修正された正確な関数を発見する Diaphora:

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

DiaphoraによるHex-Rayのマイクロコードの差分解析:

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

Diaphora 3.0によるCVE-2023-21768の差分解析:

これはiOS 9.3.5で修正されたPEGASUS iOSカーネルの脆弱性をDiaphoraで差分解析したスクリーンショットです:
そして、これはMicrosoftのセキュリティ情報 MS15-034をDiaphoraで差分解析した古いスクリーンショットです:
MS15-034の差分解析
以下は、Alex Ionescuのブログ記事Analyzing MS15-050 With Diaphoraから抜粋した、Microsoftのセキュリティ情報 MS15-050をDiaphoraで差分解析したスクリーンショットです。

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