Salta ai contenuti

Reko - Decompilatore Binario Open-Source

Reko - Decompilatore Binario Open-Source Cheatsheet

Reko è un decompilatore binario open-source scritto in C# che converte il codice macchina in sorgente leggibile simile a C. La sua caratteristica distintiva è l”ampiezza dell”architettura, specialmente per piattaforme legacy e esotiche: insieme a x86, x64 e ARM gestisce 6502, Z80, 68000, VAX, PDP-11, SPARC, PowerPC e molti altri. Questo lo rende la scelta pratica per il retrocomputing, il firmware vintage e i target embedded dove i tool mainstream non hanno supporto. Offre sia un decompilatore GUI che da linea di comando.

Installazione

MetodoCome
RilascioScarica da GitHub Releases (Windows/Linux/macOS)
GUIEsegui reko (UI WPF/Avalonia)
CLIdecompile / reko-cli binario
Dal sorgenteBuild la soluzione .NET
Verificareko-cli --version

Decompilazione da Linea di Comando

ComandoDescrizione
reko-cli binary.exeDecompila con rilevamento automatico del formato
reko-cli --arch x86-protected-32 raw.binForza un”architettura
reko-cli --base 0x8000 raw.binImposta l”indirizzo di caricamento
reko-cli --loader raw ...Tratta l”input come immagine raw
reko-cli -o outdir binaryDirectory di output
# Decompila una ROM Z80 raw caricata a 0x0000
reko-cli --loader raw --arch z80 --base 0x0000 game.rom

Artifact di Output

FileContiene
*.cSorgente C decompilato
*.hDichiarazioni di tipo/struct recuperate
*.disListato di disassembly
*.rekoFile di progetto (ricaricare nella GUI)
Grafico di chiamateStruttura del programma

Architetture Supportate (selezione)

ModernoLegacy / embedded
x86 / x86-646502 / 65C02
ARM / AArch64Z80 / 8080
MIPS68000 (m68k)
PowerPCVAX, PDP-11
SPARC8051, AVR
RISC-VCray, Alpha, e altri

Questo è il motivo per cui ricorrere a Reko: quando il binario è da una console degli anni ‘80, un controllore industriale o un mainframe, altri decompilatori semplicemente non lo caricano.

La Pipeline di Decompilazione

FaseFa
CaricamentoAnalizza il contenitore (PE/ELF/raw/ecc.)
ScansioneScopri codice vs dati, trova procedure
RiscritturaEleva le istruzioni a una rappresentazione intermedia
AnalisiData flow, inferenza di tipo, recupero di struttura
StrutturazioneRicostituisci loop e condizionali
OutputEmetti C e header

Comprendere le fasi aiuta quando l”output è scarso — di solito la fix è guidare la fase di scansione con punti di ingresso corretti e indirizzi di caricamento.

Lavoro nella GUI

TaskCome
Apri un binarioFile → Open, scegli loader/arch se richiesto
Sfoglia procedureRiquadro di elenco procedure
Visualizza C decompilatoRiquadro di codice per procedura
Rinomina/ritipaModifica i simboli per migliorare l”output
Riesegui l”analisiRianalizza dopo annotazioni
Salva progettoFile .reko preserva le tue annotazioni

L”iterazione — annota, rianalizza, leggi di nuovo — è come ottieni output genuinamente leggibile da un binario privato.

Miglioramento della Qualità dell”Output

ProblemaFix
Codice visto come datiContrassegna punti di ingresso / inizi di procedura
Indirizzo di caricamento sbagliatoImposta --base correttamente
Output indecifratoConferma architettura e endianness
Tutto senza nomeRinomina procedure/variabili mentre impari
Firme mancantiFornisci file di metadati di tipo/firma

Reko vs Altri Decompilatori

AspettoRekoGhidraRetDec
Architetture legacyEccezionaleBuonoModerato
GUI interattivaSì (più ricca)No
Batch scriptabileSì (CLI)
LinguaggioC#JavaC++
Migliore perTarget retro/esoticiRE interattivo generalePipeline batch, embedded

Usa Ghidra per RE interattivo mainstream e RetDec per pipeline batch; Reko guadagna il suo posto quando l”architettura è insolita.

Risorse