
IDA 9.5では、Dalvik・TriCore・Hexagon向けのデコンパイラが新たに追加されました。さらに、擬似コードの読みやすさやライブラリ関数の識別が改善され、Apple関連の解析機能やAI連携用アドオンも強化されています。
今回は、主な変更点を6つのテーマに分けてご紹介します。
1. Dalvik・TriCore・Hexagon向けデコンパイラを追加
新たに3種類のデコンパイラが加わり、対応するコードを擬似コードで確認できるようになりました。
- Dalvik: AndroidのDEXバイトコードをJava形式の擬似コードに変換します。クラス単位での確認・編集や、複数のDEXファイルにまたがるメソッド呼び出しの追跡にも対応しています。
- TriCore: Infineon TriCore向けコードのデコンパイルに対応します。
- Hexagon: Qualcomm Hexagon(QDSP6)向けDSPコードに対応。命令の並列実行やハードウェアループなど、アーキテクチャ特有の動作を踏まえて解析します。
2. 擬似コードが読みやすくなり、処理の把握を支援
型を適切に設定したビットフィールドは、複雑なビット演算ではなく、構造体のメンバー名を使って表示できるようになりました。
また、SSE・AVX系命令のデコンパイル、最適化によって複雑になったswitch文の復元、32ビット環境で複数の場所に分散して格納される64ビット変数の認識も改善されています。
これにより、低水準の命令や演算を細かく追う負担を減らし、変数の意味やプログラムの処理の流れを把握しやすくなります。
3. Appleのカーネル・ドライバ解析を強化
Appleのカーネルキャッシュを、KEXT(カーネル拡張)の集合として扱えるようになりました。必要なKEXTを順次読み込みながら解析でき、まだ読み込んでいない部分も含めてキャッシュ全体を検索できます。
さらに、メモリ割り当てに使われる型情報の復元や、DriverKitドライバのクラス・仮想関数テーブル・メッセージの識別にも対応。カーネルやドライバの構造を調べるための機能が充実しています。
4. FLIRT 2.0でライブラリ関数の識別を改善
ライブラリ関数を識別する機能「FLIRT」が、2.0に更新されました。
従来のバイト列による照合に加え、関数などの参照関係も識別に利用します。これまで名前を付けられなかった補助関数なども特定しやすくなり、解析中のコードがどのような役割を持つかを判断する手掛かりが増えます。
5. 関数名・型名の表示と、関連する関数の出力を改善
Rust・Go・Swiftなどで使われる関数名や型名を、特殊文字も含めて保持できるようになりました。新しいデータベースでは、元の名前を確認しやすくなります。
また、現在の関数と、その関数が呼び出す関数を再帰的にデコンパイルし、まとめてCファイルに出力する機能も追加されました。呼び出し先を含めた一連の処理を確認する際に役立ちます。
6. AI連携・マルウェア解析向けアドオンを追加
解析作業を支援する、新しいアドオンも紹介されています。
- IDA MCP: AIエージェントとIDAを接続する、公式のオープンソースMCPサーバーです。複数のデータベースを同時に扱えます。
- IDA Assist: ローカルまたはクラウドのAIモデルと、IDAの解析エンジンやエミュレーションなどを組み合わせ、リバースエンジニアリングを支援します。
- Malware Analysis: アンパックや不審なコードのエミュレーションを支援し、サンドボックスの解析結果をIDAの逆アセンブル表示内で確認できます。
※利用可能なデコンパイラは、製品・契約プランによって異なります。また、各アドオンの利用には導入・設定が必要です。Malware Analysisは別途購入のオプションです。