Reko - オープンソースバイナリーデコンパイラー チートシート
Rekoはマシンコードを読み取り可能なC状のソースに変換するC#で書かれたオープンソースバイナリーデコンパイラーです。その特出した特性はアーキテクチャー幅、特に従来型および異常なプラットフォーム向けです:x86、x64、ARM と共に、6502、Z80、68000、VAX、PDP-11、SPARC、PowerPC など多くを処理します。これにより、レトロコンピューティング、ビンテージ ファームウェア、メインストリーム ツールがサポートしていないコンテキスト、および埋め込みターゲット向けの実用的な選択肢になります。GUI およびコマンドライン デコンパイラー の両方を提供します。
インストール
| Method | How |
|---|
| Release | GitHub Releasesからダウンロード(Windows/Linux/macOS) |
| GUI | reko実行(WPF/Avalonia UI) |
| CLI | decompile / reko-cli binary |
| From source | .NETソリューションをビルド |
| Verify | reko-cli --version |
コマンドラインデコンパイル
| Command | Description |
|---|
reko-cli binary.exe | 形式自動検出でデコンパイル |
reko-cli --arch x86-protected-32 raw.bin | アーキテクチャーを強制 |
reko-cli --base 0x8000 raw.bin | ロード アドレスを設定 |
reko-cli --loader raw ... | 入力をロー イメージとして扱う |
reko-cli -o outdir binary | 出力ディレクトリー |
# 0x0000でロードされたロー Z80 ROMをデコンパイル
reko-cli --loader raw --arch z80 --base 0x0000 game.rom
出力成果物
| File | Contains |
|---|
*.c | デコンパイルされたCソース |
*.h | 復元されたタイプ/構造体宣言 |
*.dis | アセンブリー リスティング |
*.reko | プロジェクト ファイル(GUIで再読み込み) |
| Call graph | プログラム構造 |
サポートされているアーキテクチャー(選択)
| Modern | Legacy / embedded |
|---|
| x86 / x86-64 | 6502 / 65C02 |
| ARM / AArch64 | Z80 / 8080 |
| MIPS | 68000 (m68k) |
| PowerPC | VAX, PDP-11 |
| SPARC | 8051, AVR |
| RISC-V | Cray、Alpha、その他 |
Rekoに到達する理由はここです:バイナリーが1980年代コンソール、産業用コントローラー、またはメインフレームの場合、他のデコンパイラー はそれを単に読み込みません。
デコンパイル パイプライン
| Phase | Does |
|---|
| Loading | コンテナーを解析(PE/ELF/raw/等) |
| Scanning | コード vs データを発見し、手順を検索 |
| Rewriting | 命令を中間表現に持ち上げる |
| Analysis | データ フロー、タイプ推論、構造復元 |
| Structuring | ループと条件を再構築 |
| Output | CとヘッダーをEmit |
出力が不十分な場合に修正が何かを理解すれば、通常はフィックスはスキャンフェーズで正しいエントリー ポイントとロード アドレスをガイドするです。
GUIで作業
| Task | How |
|---|
| Open a binary | ファイル → 開く、プロンプトされた場合はローダー/アーキテクチャーを選択 |
| Browse procedures | 手順リスト ペイン |
| View decompiled C | 手順ごとのコード ペイン |
| Rename/retype | シンボルを編集して出力を改善 |
| Re-run analysis | 注釈の後に再分析 |
| Save project | .rekoファイルは注釈を保持 |
反復—注釈、再分析、再度読み取り—は、剥き出しのバイナリーから本当に読み取り可能な出力を得る方法です。
出力品質の向上
| Problem | Fix |
|---|
| Code seen as data | エントリー ポイント /手順開始をマーク |
| Wrong load address | --baseを正しく設定 |
| Garbled output | アーキテクチャーとエンディアンを確認 |
| Unnamed everything | 学ぶため手順/変数を名前変更 |
| Missing signatures | タイプ/署名メタデータ ファイルを提供 |
Reko対他のデコンパイラー
| Aspect | Reko | Ghidra | RetDec |
|---|
| Legacy architectures | 例外 | 良い | 中程度 |
| Interactive GUI | はい | はい(より豊か) | いいえ |
| Scriptable batch | はい(CLI) | はい | はい |
| Language | C# | Java | C++ |
| Best for | レトロ/異常なターゲット | 一般的なインタラクティブRE | バッチ、組み込みパイプライン |
メインストリーム インタラクティブRE用にGhidraを使用し、バッチ パイプライン用にRetDecを使用;Rekoはアーキテクチャーが異常な場合にそれを獲得します。
リソース