Zum Inhalt springen

Reko - Open-Source-Binary-Decompiler Cheatsheet

Reko - Open-Source-Binary-Decompiler Cheatsheet

Reko ist ein Open-Source Binary Decompiler, geschrieben in C#, der Maschinencode in lesbaren C-ähnlichen Code konvertiert. Seine herausragende Eigenschaft ist Architektur-Breite, besonders für Legacy- und exotische Plattformen: neben x86, x64 und ARM handhabt es 6502, Z80, 68000, VAX, PDP-11, SPARC, PowerPC und viele mehr. Das macht es zur praktischen Wahl für Retro-Computing, alte Firmware und eingebettete Ziele, wo Mainstream-Tools gar keine Unterstützung haben. Es bietet sowohl eine GUI als auch einen Command-Line-Decompiler.

Installation

MethodeWie
ReleaseDownload von GitHub Releases (Windows/Linux/macOS)
GUIFühre reko aus (WPF/Avalonia UI)
CLIdecompile / reko-cli binary
Aus QuelleBaue die .NET-Lösung
Überprüfungreko-cli --version

Command-Line-Dekompilierung

BefehlBeschreibung
reko-cli binary.exeDekompiliere mit Format Auto-Detect
reko-cli --arch x86-protected-32 raw.binErzwinge eine Architektur
reko-cli --base 0x8000 raw.binLege die Ladeadresse fest
reko-cli --loader raw ...Behandle Input als Raw-Image
reko-cli -o outdir binaryAusgabeverzeichnis
# Dekompiliere einen Raw Z80 ROM, geladen bei 0x0000
reko-cli --loader raw --arch z80 --base 0x0000 game.rom

Ausgabe-Artefakte

DateiEnthält
*.cDekompilierter C-Quellcode
*.hWiederhergestellte Typ-/Struktur-Deklarationen
*.disDisassembly-Listing
*.rekoProjektdatei (in der GUI erneut laden)
Call-GraphProgrammstruktur

Unterstützte Architekturen (Auswahl)

ModernLegacy / eingebettet
x86 / x86-646502 / 65C02
ARM / AArch64Z80 / 8080
MIPS68000 (m68k)
PowerPCVAX, PDP-11
SPARC8051, AVR
RISC-VCray, Alpha und mehr

Das ist der Grund, Reko zu wählen: Wenn die Binärdatei aus einer Konsole der 1980er, einem Industrie-Controller oder einem Mainframe stammt, andere Decompiler laden es einfach nicht.

Die Dekompilierungs-Pipeline

PhaseTut
LadenParse den Container (PE/ELF/raw/etc.)
ScannenEntdecke Code vs Daten, finde Prozeduren
UmschreibenHebe Anweisungen in eine Intermediate Representation an
AnalyseDatenfluss, Typfolgerung, Struktur-Wiederherstellung
StrukturierungRekonstruiere Schleifen und Bedingungen
AusgabeGeben Sie C und Header aus

Das Verständnis der Phasen hilft, wenn die Ausgabe schlecht ist — normalerweise ist die Lösung, die Scan-Phase mit korrekten Einstiegspunkten und Ladeadressen zu führen.

Arbeit in der GUI

AufgabeWie
Öffne eine BinärdateiDatei → Öffnen, wähle Loader/Arch falls aufgefordert
Durchsuche ProzedurenProzedur-Listenpane
Sehe dekompilierten CCode-Pane pro Prozedur
Benenne/tippe umBearbeite Symbole, um Ausgabe zu verbessern
Führe Analyse erneut ausReanalyse nach Anmerkungen
Speichere Projekt.reko-Datei bewahrt deine Anmerkungen

Iteration — Annotiere, analysiere erneut, lese erneut — ist wie Sie genuinely lesbaren Output aus einer gestrippten Binärdatei bekommen.

Verbesserung der Ausgabe-Qualität

ProblemFix
Code als Daten gesehenMarkiere Einstiegspunkte / Prozedur-Starts
Falsche LadeadresseLege --base richtig fest
Beschädigte AusgabeBestätige Architektur und Endianness
Alles unbenanntBenenne Prozeduren/Variablen, während du lernst
Fehlende SignaturenGebe Typ/Signatur-Metadatendateien an

Reko vs andere Decompiler

AspektRekoGhidraRetDec
Legacy-ArchitekturenAußergewöhnlichGutModerat
Interaktive GUIJaJa (reicher)Nein
Scriptbare BatchJa (CLI)JaJa
SpracheC#JavaC++
Bestes fürRetro/exotische ZieleAllgemeine interaktive REBatch, eingebettete Pipelines

Verwende Ghidra für Mainstream-interaktive RE und RetDec für Batch-Pipelines; Reko verdient seinen Platz, wenn die Architektur ungewöhnlich ist.

Ressourcen