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éthode | Comment |
|---|
| Version | Télécharger depuis GitHub Releases (Windows/Linux/macOS) |
| GUI | Exécuter reko (interface WPF/Avalonia) |
| CLI | decompile / reko-cli binaire |
| De source | Construire la solution .NET |
| Vérifier | reko-cli --version |
Décompilation en Ligne de Commande
| Commande | Description |
|---|
reko-cli binary.exe | Décompiler avec auto-détection de format |
reko-cli --arch x86-protected-32 raw.bin | Forcer une architecture |
reko-cli --base 0x8000 raw.bin | Définir l’adresse de chargement |
reko-cli --loader raw ... | Traiter l’entrée comme une image brute |
reko-cli -o outdir binary | Répertoire de sortie |
# Décompiler un ROM Z80 brut chargé à 0x0000
reko-cli --loader raw --arch z80 --base 0x0000 game.rom
Artefacts de Sortie
| Fichier | Contient |
|---|
*.c | Source C décompilée |
*.h | Déclarations de type/struct récupérées |
*.dis | Listing d’assemblage |
*.reko | Fichier projet (recharger dans la GUI) |
| Graphique d’appels | Structure du programme |
Architectures Supportées (sélection)
| Moderne | Hérité / embarqué |
|---|
| x86 / x86-64 | 6502 / 65C02 |
| ARM / AArch64 | Z80 / 8080 |
| MIPS | 68000 (m68k) |
| PowerPC | VAX, PDP-11 |
| SPARC | 8051, AVR |
| RISC-V | Cray, 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
| Phase | Fait |
|---|
| Chargement | Analyser le conteneur (PE/ELF/raw/etc.) |
| Analyse | Découvrir le code vs données, trouver les procédures |
| Réécriture | Lever les instructions à une représentation intermédiaire |
| Analyse | Flux de données, inférence de type, récupération de structure |
| Structuration | Reconstruire 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âche | Comment |
|---|
| Ouvrir un binaire | Fichier → Ouvrir, choisir le chargeur/arch si demandé |
| Parcourir les procédures | Volet 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’analyse | Réanalyser après annotations |
| Sauvegarder le projet | Fichier .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ème | Correction |
|---|
| Code vu comme données | Marquer les points d’entrée / débuts de procédure |
| Mauvaise adresse de chargement | Définir --base correctement |
| Sortie brouillée | Confirmer l’architecture et l’ordre des octets |
| Tout sans nom | Renommer les procédures/variables à mesure que vous les apprenez |
| Signatures manquantes | Fournir les fichiers de métadonnées type/signature |
Reko vs Autres Décompilateurs
| Aspect | Reko | Ghidra | RetDec |
|---|
| Architectures héritées | Exceptionnel | Bon | Modéré |
| GUI interactif | Oui | Oui (plus riche) | Non |
| Batch scriptable | Oui (CLI) | Oui | Oui |
| Langage | C# | Java | C++ |
| Meilleur pour | Cibles rétro/exotiques | RE interactif générale | Batch, 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