Salta ai contenuti

RetDec - Decompilatore di Codice Macchina Retargetabile

RetDec - Decompilatore di Codice Macchina Retargetabile Cheatsheet

RetDec (Retargetable Decompiler, di Avast) è un decompilatore open-source di codice macchina che converte binari compilati in codice di alto livello leggibile. “Retargetabile” è la proprietà chiave: piuttosto che essere costruito per un”architettura, eleva molti set di istruzioni — x86, ARM, MIPS, PIC32, PowerPC — in LLVM IR, poi decompila quella rappresentazione comune in C o uno pseudocodice simile a Python. Viene eseguito in modalità standalone e si integra con IDA, Ghidra e radare2.

Installazione

MetodoCome
Build di rilascioScarica il pacchetto precostruito da GitHub Releases
Dal sorgenteBuild CMake (vedi la documentazione di build del repo)
Dockerdocker run -v "$PWD:/dst" retdec/retdec
Verificaretdec-decompiler --version

Decompilazione di Base

ComandoDescrizione
retdec-decompiler binary.exeDecompila a binary.exe.c
retdec-decompiler -o out.c binaryScegli il percorso di output
retdec-decompiler --backend-no-debug binaryOutput più pulito
retdec-decompiler --cleanup binaryRimuovi file intermedi
retdec-decompiler --helpElenco completo delle opzioni
# Decompila e leggi il risultato
retdec-decompiler suspicious.exe
less suspicious.exe.c

Formati di Output

FlagProduce
(default)Sorgente C
-f pyPseudocodice simile a Python
--backend-emit-cfgGrafici di flusso di controllo
--backend-emit-cgGrafico di chiamate
--config out.jsonConfigurazione e risultati di analisi strutturati
LLVM IROutput intermedio .ll durante la decompilazione

Architetture Supportate

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

L”ampia copertura dell”architettura rende RetDec particolarmente utile per il lavoro su firmware e embedded, dove i binari MIPS e PIC32 sono comuni e i decompilatori mainstream offrono meno.

Opzioni Utili

OpzioneEffetto
-a archForza un”architettura
-e endianImposta l”endianness (little/big)
-m modeModalità: bin, raw, ll
--raw-entry-point ADDRPunto di ingresso per binari raw
--raw-section-vma ADDRIndirizzo di caricamento per codice raw
--select-ranges A-BDecompila solo un intervallo di indirizzi
--select-functions f1,f2Decompila funzioni specifiche
# Blob di firmware raw: dì a RetDec come caricarlo
retdec-decompiler -m raw -a mips -e big \
  --raw-entry-point 0x80000000 --raw-section-vma 0x80000000 firmware.bin

Caratteristiche di Analisi

CaratteristicaFornisce
Rilevamento del formato di fileParsing PE/ELF/Mach-O
Rilevamento di compilatore/packerFingerprinting della toolchain
ID di funzione basato su firmaRiconosci il codice di libreria collegato staticamente
Ricostruzione di tipoRecupera strutture e tipi
Utilizzo di informazioni di debugDWARF/PDB quando disponibili

L”identificazione della funzione di libreria è importante nella pratica: ti consente di saltare le migliaia di linee di libc collegato staticamente e concentrarti sulla logica propria dell”applicazione.

Integrazioni

ToolPlugin
IDA ProPlugin RetDec IDA
GhidraPlugin RetDec Ghidra
radare2r2retdec
APIDecompila programmaticamente via CLI/config

RetDec vs Altri Decompilatori

AspettoRetDecGhidraHex-Rays (IDA)Binary Ninja
CostoGratuito/open-sourceGratuito/open-sourceCommercialeCommerciale
ArchitettureMolte (incl. PIC32)MolteMolte (per licenza decompilatore)Molte
InterattivoNo (batch)Sì (GUI)
Migliore perDecompilazione batch/scriptata, embeddedLavoro interattivo REOutput di qualità massimaUX e API moderna

Complementare a Ghidra per il lavoro interattivo — RetDec eccelle per i pipeline automatizzati e le architetture insolite.

Risorse