米国国家安全保障局(NSA)の研究部門が開発した無料のリバースエンジニアリング・フレームワークであるGhidraが、バージョン12.0に到達し、性能向上、バグ修正、そして日常的なユーザーと解析ワークフローを自動化するユーザーの双方に影響する注目すべき強化点を幅広く提供します。本プラットフォームは引き続き、Windows、macOS、Linux向けのコンパイル済みコードの解析に注力しており、逆アセンブラ、デコンパイラ、デバッガ、エミュレーション、グラフ表示、スクリプティングを組み合わせ、さらにプラグイン、ローダー、アナライザー、新しい可視化による広範な拡張性も備えています。
開発者は互換性を特に重視しています。以前のバージョンで作成されたプロジェクトは引き続き開けますが、12.0で作成または変更されたものは、古いGhidraリリースでは動作しなくなる可能性があります。また、この更新では環境要件も厳格化され、少なくともJDK 21が必須となりました。さらに、デバッガの使用またはソースからのビルドにはPython 3が必要で、3.9〜3.13がサポートされています。
リリースノートにはLinuxユーザー向けの重要な警告が含まれています。X.orgにおけるCVE-2024-31083の2024年4月の修正以降に導入されたリグレッションに関連して、XWindowsサーバーがクラッシュするという報告が出ています。開発者は、この問題が解消されたと考えられるバージョン(xwayland 23.2.6およびxorg-server 21.1.13)を示し、Ghidra起動時にセッションが突然終了する場合は、X.orgスタックを適切に更新するよう助言しています。
12.0で最も目に見える追加要素の一つは、プロジェクト内のリンクファイルに対するサポートが大幅に拡充されたことと、それらのリンクのための新しいストレージ形式です。従来はGhidra URLを介した外部ディレクトリやファイルへのリンクに重点が置かれていましたが、新リリースではフォルダーとファイルの両方への内部リンクが導入され、絶対パスと相対パスの双方をサポートします。これらのリンクは、軽量でデータベース不要のプロパティファイルベースの形式で保存されます。これにより、シンボリックリンクを含む実際のファイルシステム構造をより忠実に表現でき、同一の内容を異なるパスで複数回インポートしてしまうことも回避できます。ただし開発者は、過度に複雑または循環するリンク構造は避けるべきであり、ファイルとディレクトリが同名になるようなパスの衝突も回避することを推奨しています。
この思想はインポートのワークフローにも引き継がれています。Ghidra 12.0では、プログラムおよびライブラリのインポート時に、シンボリックリンクを含めてローカルのファイルシステム構造を再現する「ミラーリング」モードが追加されました。ヘッドレスモードでは、新しいコマンドラインオプション-mirrorでこの挙動を有効にできます。同時にPythonスタックも更新され、PyGhidra 3.0.0がGhidra 12.0と互換になり、一般的なタスク向けのPython中心の新しいヘルパーが導入されています。既定のスクリプティングエンジンはJythonからPyGhidraへ移行しました。従来のJythonスクリプトは引き続き動作しますが、今後はヘッダー# @runtime Jythonを含める必要があります。
エミュレーションとデバッグに深く取り組むユーザー向けには、本リリースでZ3ベースの実験的な「コンコリック」モードが導入されました。これは、具体的なエミュレーションと並行してシンボリック実行を走らせ、具体実行で定義されたパスを追跡しながら式と分岐制約を構築するものです。この機能はSymbolicSummaryZ3拡張と、それに対応するデバッガ/エミュレータプラグインを通じて提供されます。Z3のバージョン4.13.0が必要で、環境によっては追加のライブラリ、または互換性のないライブラリを手動でインストール/ビルドする必要がある場合があります。PcodeEmulator APIも、合成(composition)とコールバック指向へ大幅にリファクタリングされており、将来的にJITで高速化されたエミュレーションをインターフェースへ統合するための道筋が整えられました。一方で、既存の継承ベースの拡張は最小限の適応で引き続き動作するはずです。
12.0のよりユーザー寄りの改善点としては、参照を介してメモリ内のデータ要素間の関係を可視化し、さらに展開できる新しいデータグラフの追加や、リスティング上で関数のシグネチャ直下にその変数を表示するための切り替え(全体設定または関数ごとの設定)が挙げられます。また、本リリースではブラウザからGhidraGo URLを介してオブジェクトを直接開くこともサポートされ、ワンクリックで適切なプロジェクトを開いて指定したアドレスやシンボルへ直行できるようになりました。ハードウェアサポートも拡張され、NDS32プロセッサとRISC-VのAndeStar v5バリアントが追加されています。RISC-V実装自体も改良され、カスタム拡張をよりクリーンに扱えるようになりました。特殊レジスタ定義は別のアドレス空間へ移され、実体のあるメモリオブジェクトのように操作できるようになっています。