Hex-Rays Decompilerについて
Hex-Rays社の逆コンパイラは、バイナリ・アプリケーションをハイレベルの読み取り可能なテキストに変換する逆コンパイラです。 逆アセンブラと違って、逆コンパイラの出力結果は簡潔で、 プログラマーがアプリケーションを記述するための標準的な方法により近いものとなっています。 アナリストは逆アセンブルの出力結果をイメージしやすいので、作業時間を削減することができます。 逆コンパイラの出力結果は高級言語と類似しているので、普通のC/C++プログラマーならば理解することができます。
Hex-Rays Decompilerの特徴
- Hex-Rays Decompilerは、32ビットコンパイラでx86コード生成をサポート。
- 主要なC/C++コンパイラによって生成されたコードはすべて取扱い可能。
- 大部分の機能は即座に分析可能。
- インタラクティブ、バッチ・モードあり。
- IDA製品のプラグインとして出荷され、プラグインを利用するには、IDA 5.1以上が必要。
- 浮動小数点命令(Floating point instructions)(ならびにXMM/MMX/SSE)は現バージョンでサポートされておりません。
- 例外処理は現バージョンでサポートされておりません。
現在、Decompilerは、x86、x64、ARM32、ARM64、およびPowerPC プロセッサ用のコンパイラ生成コードをサポートしています。 プログラムAPIにより、逆コンパイラ出力を向上させることができます。 脆弱性診断、ソフトウェア検証、カバレッジ分析などにご利用いただけます。
Decompilerは、MS Windows、Linux、およびMac OS X上で稼働します。GUIおよびテキストIDAバージョンがサポートされています。
Hex-Rays Decompilerの制限事項
Decompilerには、下記6つの種類があります。
- x86 decompiler (32-bit code)
- x64 decompiler (64-bit code)
- ARM decompiler (32-bit code)
- ARM64 decompiler (64-bit code)
- PowerPC decompiler (32-bit code)
- PowerPC64 decompiler (64-bit code)
現在、Decompilerはコンパイラー生成コードを処理できます。 手作業で作成されたコードも逆コンパイルされる可能性がありますが、結果は通常コンパイラコードよりも悪くなります。
下記がHex-Rays Decompilerの最も重要な制限です。(すべてのプロセッサに関して)
- 例外処理(exception handling)はサポートされていません。
- type recoveryは実行されません。
- グローバルプログラム分析(global program analysis)は実行されません。
- x86に固有の制限事項
- ・32ビットコードのみがida32で解析可能
- x64に固有の制限事項
- ・64ビットコードのみがida64で解析可能
- ARM32に固有の制限事項
- ・32ビットコードのみがida32で解析可能
・hard-float abiはサポートされていません。 - ARM64に固有の制限事項
- ・64ビットコードのみがida64で解析可能
- PPCに固有の制限事項
- ・32ビットコードのみがida32で解析可能
・ビッグエンディアンモードのみをサポート
・Vector/DFP/VSX/SPE命令はサポートされていません