Aller au contenu

Reko - Décompilateur Binaire Open-Source

Reko - Décompilateur Binaire Open-Source

Reko est un décompilateur binaire open-source écrit en C# qui convertit le code machine en source de type C lisible. Sa caractéristique distinctive est la largeur d’architecture, en particulier pour les plates-formes exotiques et héritées : aux côtés de x86, x64 et ARM, il gère 6502, Z80, 68000, VAX, PDP-11, SPARC, PowerPC et bien d’autres. Cela en fait le choix pratique pour l’informatique rétro, le firmware vintage et les cibles embarquées où les outils grand public n’ont aucun support. Il offre à la fois un décompilateur GUI et en ligne de commande.

Installation

MéthodeComment
VersionTélécharger depuis GitHub Releases (Windows/Linux/macOS)
GUIExécuter reko (interface WPF/Avalonia)
CLIdecompile / reko-cli binaire
De sourceConstruire la solution .NET
Vérifierreko-cli --version

Décompilation en Ligne de Commande

CommandeDescription
reko-cli binary.exeDécompiler avec auto-détection de format
reko-cli --arch x86-protected-32 raw.binForcer une architecture
reko-cli --base 0x8000 raw.binDéfinir l’adresse de chargement
reko-cli --loader raw ...Traiter l’entrée comme une image brute
reko-cli -o outdir binaryRépertoire de sortie
# Décompiler un ROM Z80 brut chargé à 0x0000
reko-cli --loader raw --arch z80 --base 0x0000 game.rom

Artefacts de Sortie

FichierContient
*.cSource C décompilée
*.hDéclarations de type/struct récupérées
*.disListing d’assemblage
*.rekoFichier projet (recharger dans la GUI)
Graphique d’appelsStructure du programme

Architectures Supportées (sélection)

ModerneHérité / embarqué
x86 / x86-646502 / 65C02
ARM / AArch64Z80 / 8080
MIPS68000 (m68k)
PowerPCVAX, PDP-11
SPARC8051, AVR
RISC-VCray, Alpha et plus

C’est la raison de choisir Reko : quand le binaire vient d’une console des années 1980, d’un contrôleur industriel ou d’un mainframe, les autres décompilateurs ne le chargent simplement pas.

Le Pipeline de Décompilation

PhaseFait
ChargementAnalyser le conteneur (PE/ELF/raw/etc.)
AnalyseDécouvrir le code vs données, trouver les procédures
RéécritureLever les instructions à une représentation intermédiaire
AnalyseFlux de données, inférence de type, récupération de structure
StructurationReconstruire les boucles et les conditionnels
SortieÉmettre C et les en-têtes

Comprendre les phases aide quand la sortie est mauvaise — généralement la correction guide la phase Analyse avec les points d’entrée corrects et les adresses de chargement.

Travail dans la GUI

TâcheComment
Ouvrir un binaireFichier → Ouvrir, choisir le chargeur/arch si demandé
Parcourir les procéduresVolet de liste des procédures
Afficher C décompiléVolet de code par procédure
Renommer/retypeÉditer les symboles pour améliorer la sortie
Ré-exécuter l’analyseRéanalyser après annotations
Sauvegarder le projetFichier .reko préserve vos annotations

L’itération — annoter, réanalyser, relire — est comment vous obtenez une sortie véritablement lisible à partir d’un binaire dépouillé.

Améliorer la Qualité de Sortie

ProblèmeCorrection
Code vu comme donnéesMarquer les points d’entrée / débuts de procédure
Mauvaise adresse de chargementDéfinir --base correctement
Sortie brouilléeConfirmer l’architecture et l’ordre des octets
Tout sans nomRenommer les procédures/variables à mesure que vous les apprenez
Signatures manquantesFournir les fichiers de métadonnées type/signature

Reko vs Autres Décompilateurs

AspectRekoGhidraRetDec
Architectures héritéesExceptionnelBonModéré
GUI interactifOuiOui (plus riche)Non
Batch scriptableOui (CLI)OuiOui
LangageC#JavaC++
Meilleur pourCibles rétro/exotiquesRE interactif généraleBatch, pipelines embarqués

Utilisez Ghidra pour le RE interactif grand public et RetDec pour les pipelines batch ; Reko gagne sa place quand l’architecture est inhabituelle.

Ressources