コンテンツにスキップ

Reko - オープンソースバイナリーデコンパイラー チートシート

Reko - オープンソースバイナリーデコンパイラー チートシート

Rekoはマシンコードを読み取り可能なC状のソースに変換するC#で書かれたオープンソースバイナリーデコンパイラーです。その特出した特性はアーキテクチャー幅、特に従来型および異常なプラットフォーム向けです:x86、x64、ARM と共に、6502、Z80、68000、VAX、PDP-11、SPARC、PowerPC など多くを処理します。これにより、レトロコンピューティング、ビンテージ ファームウェア、メインストリーム ツールがサポートしていないコンテキスト、および埋め込みターゲット向けの実用的な選択肢になります。GUI およびコマンドライン デコンパイラー の両方を提供します。

インストール

MethodHow
ReleaseGitHub Releasesからダウンロード(Windows/Linux/macOS)
GUIreko実行(WPF/Avalonia UI)
CLIdecompile / reko-cli binary
From source.NETソリューションをビルド
Verifyreko-cli --version

コマンドラインデコンパイル

CommandDescription
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

出力成果物

FileContains
*.cデコンパイルされたCソース
*.h復元されたタイプ/構造体宣言
*.disアセンブリー リスティング
*.rekoプロジェクト ファイル(GUIで再読み込み)
Call graphプログラム構造

サポートされているアーキテクチャー(選択)

ModernLegacy / embedded
x86 / x86-646502 / 65C02
ARM / AArch64Z80 / 8080
MIPS68000 (m68k)
PowerPCVAX, PDP-11
SPARC8051, AVR
RISC-VCray、Alpha、その他

Rekoに到達する理由はここです:バイナリーが1980年代コンソール、産業用コントローラー、またはメインフレームの場合、他のデコンパイラー はそれを単に読み込みません。

デコンパイル パイプライン

PhaseDoes
Loadingコンテナーを解析(PE/ELF/raw/等)
Scanningコード vs データを発見し、手順を検索
Rewriting命令を中間表現に持ち上げる
Analysisデータ フロー、タイプ推論、構造復元
Structuringループと条件を再構築
OutputCとヘッダーをEmit

出力が不十分な場合に修正が何かを理解すれば、通常はフィックスはスキャンフェーズで正しいエントリー ポイントとロード アドレスをガイドするです。

GUIで作業

TaskHow
Open a binaryファイル → 開く、プロンプトされた場合はローダー/アーキテクチャーを選択
Browse procedures手順リスト ペイン
View decompiled C手順ごとのコード ペイン
Rename/retypeシンボルを編集して出力を改善
Re-run analysis注釈の後に再分析
Save project.rekoファイルは注釈を保持

反復—注釈、再分析、再度読み取り—は、剥き出しのバイナリーから本当に読み取り可能な出力を得る方法です。

出力品質の向上

ProblemFix
Code seen as dataエントリー ポイント /手順開始をマーク
Wrong load address--baseを正しく設定
Garbled outputアーキテクチャーとエンディアンを確認
Unnamed everything学ぶため手順/変数を名前変更
Missing signaturesタイプ/署名メタデータ ファイルを提供

Reko対他のデコンパイラー

AspectRekoGhidraRetDec
Legacy architectures例外良い中程度
Interactive GUIはいはい(より豊か)いいえ
Scriptable batchはい(CLI)はいはい
LanguageC#JavaC++
Best forレトロ/異常なターゲット一般的なインタラクティブREバッチ、組み込みパイプライン

メインストリーム インタラクティブRE用にGhidraを使用し、バッチ パイプライン用にRetDecを使用;Rekoはアーキテクチャーが異常な場合にそれを獲得します。

リソース