Zum Inhalt springen

RetDec - Retargetable Machine-Code Decompiler Cheatsheet

RetDec - Retargetable Machine-Code Decompiler Cheatsheet

RetDec (Retargetable Decompiler, von Avast) ist ein Open-Source Machine-Code-Decompiler, der kompilierte Binärdateien zurück in lesbaren High-Level-Code konvertiert. “Retargetable” ist die Schlüsseleigenschaft: Anstatt für eine Architektur gebaut zu sein, hebt er viele Befehlssätze an — x86, ARM, MIPS, PIC32, PowerPC — in LLVM IR und dekompiliert diese gemeinsame Darstellung dann in C oder Pseudocode ähnlich wie Python. Es läuft eigenständig und integriert mit IDA, Ghidra und radare2.

Installation

MethodeWie
Release-BuildDownload des vorgefertigten Pakets von GitHub Releases
Aus QuelleCMake-Build (siehe Build-Docs des Repos)
Dockerdocker run -v "$PWD:/dst" retdec/retdec
Überprüfungretdec-decompiler --version

Grundlegende Dekompilierung

BefehlBeschreibung
retdec-decompiler binary.exeDekompiliere in binary.exe.c
retdec-decompiler -o out.c binaryWähle den Ausgabepfad
retdec-decompiler --backend-no-debug binarySauberere Ausgabe
retdec-decompiler --cleanup binaryEntferne Zwischendateien
retdec-decompiler --helpVollständige Optionsliste
# Dekompiliere und lese das Ergebnis
retdec-decompiler suspicious.exe
less suspicious.exe.c

Ausgabeformate

FlagErzeugt
(Standard)C-Quelle
-f pyPython-ähnlicher Pseudocode
--backend-emit-cfgKontrollfluss-Diagramme
--backend-emit-cgCall-Graph
--config out.jsonStrukturierte Analysekonfiguration/Ergebnisse
LLVM IRIntermediate .ll-Output während der Dekompilierung

Unterstützte Architekturen

ArchitekturFormate
x86 / x86-64PE, ELF, Mach-O
ARM / ThumbELF, PE, raw
MIPSELF, raw
PIC32ELF, Intel HEX
PowerPCELF

Die breite Architektur-Unterstützung macht RetDec besonders nützlich für Embedded- und Firmware-Arbeit, wo MIPS- und PIC32-Binärdateien häufig sind und Mainstream-Decompiler weniger bieten.

Nützliche Optionen

OptionEffekt
-a archErzwinge eine Architektur
-e endianLege Endianness fest (little/big)
-m modeModus: bin, raw, ll
--raw-entry-point ADDREinstiegspunkt für Raw-Binärdateien
--raw-section-vma ADDRLadeadresse für Raw-Code
--select-ranges A-BDekompiliere nur einen Adressbereich
--select-functions f1,f2Dekompiliere spezifische Funktionen
# Raw-Firmware-Blob: Sagen Sie RetDec, wie es geladen wird
retdec-decompiler -m raw -a mips -e big \
  --raw-entry-point 0x80000000 --raw-section-vma 0x80000000 firmware.bin

Analyse-Funktionen

FunktionBietet
DateiformaterkennungPE/ELF/Mach-O-Analyse
Compiler/Packer-ErkennungToolchain-Fingerprinting
Signaturbbasierte Funktions-IDErkenne statisch verknüpfte Library-Code
TyprekonstruktionStelle Strukturen und Typen wieder her
Debug-Info-VerwendungDWARF/PDB wenn verfügbar

Die Library-Funktions-Identifizierung ist in der Praxis sehr wichtig: Sie können die Tausende von Zeilen statisch verknüpfter libc überspringen und sich auf die Logik der Anwendung konzentrieren.

Integrationen

ToolPlugin
IDA ProRetDec IDA-Plugin
GhidraRetDec Ghidra-Plugin
radare2r2retdec
APIDekompiliere programmatisch via CLI/Config

RetDec vs andere Decompiler

AspektRetDecGhidraHex-Rays (IDA)Binary Ninja
KostenKostenlos/Open-SourceKostenlos/Open-SourceKommerziellKommerziell
ArchitekturenViele (inkl. PIC32)VieleViele (pro-Decompiler Lizenz)Viele
InteraktivNein (Batch)Ja (GUI)JaJa
Bestes fürBatch/Scripted-Dekompilierung, EmbeddedInteraktive REHöchste QualitätModernes API/UX

Ergänzt Ghidra für interaktive Arbeit — RetDec glänzt in automatisierten Pipelines und ungewöhnlichen Architekturen.

Ressourcen