Relyze - インタラクティブなバイナリディスアセンブラー & Diff チートシート
Relyze は商用のインタラクティブなディスアセンブラー、デコンパイラー、バイナリ比較プラットフォーム — ネイティブソフトウェア向け、x86、x64、ARM32、ARM64 をサポート。PE/ELF バイナリを関数と制御フロー図に分析し、高レベルの疑似コードを復旧するデコンパイラーを提供、2つのバイナリバージョンを比較するための強力なバイナリ diff エンジンを含む — パッチ分析およびマルウェアバリアントの追跡に貴重。Ruby プラグイン/スクリプティングフレームワークで拡張可能。無料の非商用版が利用可能。
インストール
| ステップ | 注釈 |
|---|
| ダウンロード | 公式サイトからインストーラーを取得(Windows) |
| エディション | 無料(非商用)および Professional |
| 最初の実行 | デコンパイラーおよび分析オプションを設定 |
| プラグイン | Ruby スクリプトがすぐに利用可能 |
分析ワークフロー
| アクション | 説明 |
|---|
| ファイルを開く | PE または ELF バイナリを関数/CFG に分析 |
| Functions ビュー | 検出された関数を参照 |
| グラフビュー | 選択された関数の制御フローグラフ |
| デコンパイラー | 関数の C に似た疑似コードを復旧 |
| 文字列 | 参照された文字列とそれらの xrefs をリスト |
| Imports/Exports | import/export テーブルを検査 |
| 相互参照 | 関数/データが使用される場所にジャンプ |
ナビゲーションエッセンシャル
| タスク | 方法 |
|---|
| シンボルの名前変更 | 選択して名前変更(xrefs に伝播) |
| コメント | 命令/関数に注釈を付ける |
| 呼び出しをフォロー | 呼び出しターゲットをダブルクリック |
| アドレスに移動 | アドレスナビゲーションボックス |
| ビューを切り替え | ディスアセンブリ / グラフ / デコンパイラーを切り替え |
バイナリ比較
Relyze の diff エンジンは2つのバイナリ間で関数をマッチングし、同一、変更、追加、削除として分類 — セキュリティパッチまたはマルウェアサンプルの比較分析の中核ワークフロー。
| タスク | 方法 |
|---|
| diff を開始 | バイナリ A を開く、次にバイナリ B に対して比較 |
| マッチングされた関数 | 2つのビルド全体でペアリングされた関数を確認 |
| 変更された関数 | コードが異なる関数に焦点を当てる |
| 追加/削除 | パッチが導入または削除したものを参照 |
| 注釈をポート | 名前/コメントをあるビルドから次へキャリー |
パッチ分析パターン:パッチ前後のバイナリを diff、関数が変更された小さなセットに焦点、ベンダーが何を修正したかを研究して基礎にある脆弱性を理解。
Ruby スクリプティング
Relyze はその分析モデルを Ruby に公開して自動化。
# 概念:関数を反復して大きなものにフラグを付ける
model = Relyze::Engine.instance.active_model
model.functions.each do |func|
if func.instructions.length > 500
puts "Large function at #{func.address.to_s(16)}"
end
end
| 使用 | 例 |
|---|
| 一括名前変更 | 関数全体に命名ヒューリスティックを適用 |
| カスタム分析 | パターンを検出(暗号定数、ガジェット) |
| データをエクスポート | 関数/文字列をファイルにダンプ |
| Diff を自動化 | 多くのサンプル全体で比較をスクリプト化 |
一般的なワークフロー
| ゴール | アプローチ |
|---|
| セキュリティパッチを理解 | パッチ前後のバイナリを diff → 変更された関数を研究 |
| ネイティブサンプルを分類 | 文字列 + imports → 疑わしい関数をデコンパイル |
| マルウェアバリアントを追跡 | 新しいサンプルを既知のファミリーメンバーに対して diff |
| ロジックを復旧 | デコンパイラーを使用 + 名前変更/コメントして意図を再構築 |
Relyze vs その他のディスアセンブラー
| 側面 | Relyze | IDA Pro | Ghidra | Binary Ninja |
|---|
| デコンパイラー | はい | はい(Hex-Rays) | はい | はい |
| バイナリ diff | 組み込み | アドオン(BinDiff) | プラグイン | プラグイン |
| スクリプティング | Ruby | Python/IDC | Java/Python | Python |
| コスト | 無料 + Pro | 商用 | 無料 | 商用 |
リソース