Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
retdec — RetDec è un decompilatore di codice macchina ri-targetizzabile basato su LLVM. | Kitploit
Strumenti/GitHubGitHub/avast/retdec
Analisi StaticaReverse EngineeringAnalisi MalwareAnalisi di Binari
GitHubavast/retdec

retdec

RetDec è un decompilatore di codice macchina ri-targetizzabile basato su LLVM.

Vedi RepositorySito web
8.6k9973 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Avviso

Il progetto RetDec è attualmente in modalità di manutenzione limitata a causa della mancanza di risorse:

  • Le Pull Request sono benvenute. Vengono revisionate con priorità, se possibile senza ritardi.
  • Le segnalazioni (issues) vengono gestite con ritardi fino a un trimestre. Le segnalazioni non vengono risolte attivamente a meno che non riguardino la manutenzione di base del progetto.
  • La manutenzione di base del progetto continua.
  • Viene portato avanti solo uno sviluppo molto limitato.

RetDec

Travis CI build status TeamCity build status))/statusIcon) RetDec CI

RetDec è un decompilatore di codice macchina retargetable basato su LLVM.

Il decompilatore non è limitato a nessuna architettura target, sistema operativo o formato di file eseguibile particolare:

  • Formati di file supportati: ELF, PE, Mach-O, COFF, AR (archivio), Intel HEX e codice macchina grezzo
  • Architetture supportate:
    • 32 bit: Intel x86, ARM, MIPS, PIC32 e PowerPC
    • 64 bit: x86-64, ARM64 (AArch64)

Caratteristiche:

  • Analisi statica dei file eseguibili con informazioni dettagliate.
  • Rilevamento del compilatore e del packer.
  • Caricamento e decodifica delle istruzioni.
  • Rimozione basata su firme del codice di libreria collegato staticamente.
  • Estrazione e utilizzo delle informazioni di debug (DWARF, PDB).
  • Ricostruzione di idiomi di istruzioni.
  • Rilevamento e ricostruzione delle gerarchie di classi C++ (RTTI, vtables).
  • Demangling dei simboli da binari C++ (GCC, MSVC, Borland).
  • Ricostruzione di funzioni, tipi e costrutti di alto livello.
  • Disassemblatore integrato.
  • Output in due linguaggi di alto livello: C e un linguaggio simile a Python.
  • Generazione di grafi delle chiamate, grafi di flusso di controllo e varie statistiche.

Per maggiori informazioni, consulta

  • Wiki (in corso)
  • Talk Botconf 2017: slides, video
  • Talk REcon Montreal 2018: slides
  • Pubblicazioni

Installazione

Ci sono due modi per ottenere e installare RetDec:

  1. Scaricare e decomprimere un pacchetto pre-compilato stabile o bleeding-edge e seguire le istruzioni nella sezione Use del file retdec/share/retdec/README.md dopo averlo decompresso.
  2. Compilare RetDec da soli dai sorgenti seguendo la sezione Build and Installation. Dopo l'installazione, seguire le istruzioni qui sotto.

Supportiamo attualmente Windows (7 o successivo), Linux, macOS e (sperimentalmente) FreeBSD. Una versione installata di RetDec richiede circa 5 a 6 GB di spazio libero su disco.

Utilizzo

Assicurati di leggere le istruzioni corrispondenti alla versione di RetDec utilizzata. In caso di dubbio, fai riferimento al file retdec/share/retdec/README.md nell'installazione.

Windows

  1. Dopo aver installato RetDec, installa Microsoft Visual C++ Redistributable per Visual Studio 2017.

  2. Installa i seguenti programmi:

    • UPX (Opzionale: se vuoi usare l'unpacker UPX nella fase di preprocessing)
    • Graphviz (Opzionale: se vuoi generare grafi delle chiamate o di flusso di controllo)
  3. Per decompilare un file binario chiamato test.exe, esegui

    root@kitploit:~
    $RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
    

    Per maggiori informazioni, esegui retdec-decompiler.exe con --help.

Linux

  1. Dopo aver installato RetDec, installa i seguenti pacchetti tramite il gestore pacchetti della tua distribuzione:

    • UPX (Opzionale: se vuoi usare l'unpacker UPX nella fase di preprocessing)
    • Graphviz (Opzionale: se vuoi generare grafi delle chiamate o di flusso di controllo)
  2. Per decompilare un file binario chiamato test.exe, esegui

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Per maggiori informazioni, esegui retdec-decompiler con --help.

macOS

  1. Dopo aver installato RetDec, installa i seguenti pacchetti:

    • UPX (Opzionale: se vuoi usare l'unpacker UPX nella fase di preprocessing)
    • Graphviz (Opzionale: se vuoi generare grafi delle chiamate o di flusso di controllo)
  2. Per decompilare un file binario chiamato test.exe, esegui

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Per maggiori informazioni, esegui retdec-decompiler con --help.

FreeBSD (Sperimentale)

  1. Attualmente non ci sono pacchetti "ports" pre-compilati per FreeBSD. Dovrai compilare e installare il decompilatore da solo. Il processo è descritto di seguito.

  2. Per decompilare un file binario chiamato test.exe, esegui

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Per maggiori informazioni, esegui retdec-decompiler con --help.

Utilizzo delle librerie RetDec

Puoi facilmente utilizzare varie librerie RetDec nei tuoi progetti - se sono compilate con CMake. L'installazione di RetDec contiene tutti gli header, le librerie e gli script CMake necessari.

Se hai installato RetDec in una posizione di installazione standard del tuo sistema (es. /usr, /usr/local), tutto ciò che devi fare per usare i suoi componenti è:```cmake find_package(retdec 5.0 REQUIRED COMPONENTS [...] ) target_link_libraries(your-project PUBLIC retdec:: [...] )

root@kitploit:~
Se non hai installato RetDec in un luogo in cui possa essere scoperto automaticamente, devi aiutare CMake a trovarlo prima di utilizzare `find_package()`. Ci sono generalmente due modi per farlo (scegline e usa solo uno):

1. Aggiungi la directory di installazione di RetDec a [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html):
    ```cmake
    list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
    ```

2. Imposta il percorso degli script CMake di RetDec installati su `retdec_DIR`:
    ```cmake
    set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
    ```

Consulta la pagina wiki [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) per l'elenco dei componenti RetDec disponibili, o [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) per esempi su come utilizzarli.

## Compilazione e Installazione

Questa sezione descrive una compilazione e installazione locale di RetDec. Le istruzioni per Docker sono fornite nella sezione successiva.

### Requisiti

#### Linux

* Un compilatore C++ e una libreria standard C++ che supportino C++17 (ad esempio GCC >= 7)
* [CMake](https://cmake.org/) (versione >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (versione >= 1.1.1)
* [Python](https://www.python.org/) (versione >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/) e [libtool](https://www.gnu.org/software/libtool/))
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [m4](https://www.gnu.org/software/m4/m4.html)
* [zlib](http://zlib.net/)
* Opzionale: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) e [Graphviz](http://www.graphviz.org/) per generare la documentazione dell'API

Sulle distribuzioni basate su Debian (ad esempio Ubuntu), i pacchetti necessari possono essere installati con `apt-get`:```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz

Sulle distribuzioni basate su RPM (es. Fedora), i pacchetti richiesti possono essere installati con dnf:```sh sudo dnf install gcc gcc-c++ cmake make git openssl openssl-devel python3 autoconf automake libtool pkg-config m4 zlib-devel upx doxygen graphviz

root@kitploit:~
Su Arch Linux, i pacchetti necessari possono essere installati con `pacman`:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz

Windows

  • Microsoft Visual C++ (versione >= Visual Studio 2017 versione 15.7)
  • CMake (versione >= 3.6)
  • Git
  • OpenSSL (versione >= 1.1.1)
  • Python (versione >= 3.4)
  • Opzionale: Doxygen e Graphviz per generare la documentazione API

macOS

I pacchetti dovrebbero essere preferibilmente installati tramite Homebrew.

  • macOS >= 10.15
  • Installazione completa di Xcode (inclusi gli strumenti da riga di comando, vedi #425 e #433)
  • CMake (versione >= 3.6)
  • Git
  • OpenSSL (versione >= 1.1.1)
  • Python (versione >= 3.4)
  • autotools (autoconf, automake, e libtool)
  • Opzionale: Doxygen e Graphviz per generare la documentazione API

FreeBSD (Sperimentale)

I pacchetti dovrebbero essere installati tramite il repository di pacchetti precompilati di FreeBSD usando il comando pkg o compilati da zero usando il metodo del database ports.

  • Istruzioni complete per lo strumento pkg: manuale (metodo pkg)
    • pkg install cmake python37 git autotools OPPURE
  • Istruzioni complete per i ports: manuale (metodo ports)
    • portsnap fetch
    • portsnap extract
  • Ad esempio, per cmake si farebbe:
    • whereis cmake
    • cd /usr/ports/devel/cmake
    • make install clean

Processo

Nota: Sebbene RetDec ora supporti un'installazione a livello di sistema (#94), a meno che tu non usi il gestore di pacchetti della tua distribuzione per installarlo, raccomandiamo di installare RetDec localmente in una directory designata. Il motivo è che la disinstallazione sarà più semplice poiché sarà necessario rimuovere solo una singola directory. Per eseguire un'installazione locale, esegui cmake con il parametro -DCMAKE_INSTALL_PREFIX=<percorso>, dove <percorso> è la directory in cui verrà installato RetDec (ad es. $HOME/projects/retdec-install su Linux e macOS, e C:\projects\retdec-install su Windows).

  • Clona il repository:
    • git clone https://github.com/avast/retdec
  • Linux:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<percorso>
    • make -jN (N è il numero di processi da usare per la build parallela, tipicamente numero di core + 1 dà il tempo di compilazione più veloce)
    • make install
  • Windows:
    • Apri un prompt dei comandi (ad es. cmd.exe)
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<percorso> -G<generatore>
    • cmake --build . --config Release -- -m

Devi passare i seguenti parametri a cmake:

  • -DCMAKE_INSTALL_PREFIX=<percorso> per impostare il percorso di installazione a <percorso>. Racchiudi il percorso tra virgolette se usi backslash su Windows (ad es. -DCMAKE_INSTALL_PREFIX="C:\retdec").
  • (Solo Windows) -G<generatore> è -G"Visual Studio 15 2017" per una build a 32 bit usando Visual Studio 2017, o -G"Visual Studio 15 2017 Win64" per una build a 64 bit usando Visual Studio 2017. È possibile utilizzare versioni successive di Visual Studio.

Puoi passare i seguenti parametri aggiuntivi a cmake:

  • -DRETDEC_DOC=ON per compilare con la documentazione API (richiede Doxygen e Graphviz, disabilitato per impostazione predefinita).
  • -DRETDEC_TESTS=ON per compilare con i test (disabilitato per impostazione predefinita).
  • -DRETDEC_DEV_TOOLS=ON per compilare con gli strumenti di sviluppo (disabilitato per impostazione predefinita).
  • -DRETDEC_COMPILE_YARA=OFF per disabilitare la compilazione delle regole YARA al momento dell'installazione (abilitato per impostazione predefinita).
  • -DCMAKE_BUILD_TYPE=Debug per compilare con informazioni di debug, utile durante lo sviluppo. Per impostazione predefinita, il progetto viene compilato in modalità Release. Questo non ha effetto su Windows, ma la stessa cosa può essere ottenuta eseguendo cmake --build . con il parametro --config Debug.
  • -D<dep>_LOCAL_DIR=<percorso> dove <dep> proviene da {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} (ad es. ), per utilizzare il clone del repository locale in per la dipendenza RetDec invece di scaricare una copia fresca al momento della compilazione. Possono essere usate più opzioni di questo tipo contemporaneamente.

Compilare in Docker

Il supporto Docker è mantenuto dalla community. Se qualcosa non funziona per te o se hai suggerimenti per miglioramenti, apri un issue o una PR.

Compilare l'immagine

Compilare in Docker non richiede l'installazione locale delle librerie necessarie. Questa è una buona opzione per provare RetDec senza impostare l'intera toolchain di compilazione.

Per compilare l'immagine Docker di RetDec, esegui``` docker build -t retdec - < Dockerfile

root@kitploit:~
Questo crea l'immagine dal branch master di questo repository.

Per creare l'immagine usando la copia locale del repository, usa il Dockerfile di sviluppo, `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev

Esegui Container

Se il tuo uid non è 1000, assicurati che la directory che contiene i tuoi file binari di input sia accessibile per RetDec:``` chmod 0777 /path/to/local/directory

root@kitploit:~
Ora puoi eseguire il decompilatore all'interno di un contenitore:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary

Nota: non modificare la parte /destination. Devi solo cambiare /path/to/local/directory. I file di output verranno quindi generati in /path/to/local/directory.

Build notturne

Generiamo pacchetti RetDec aggiornati dall'ultimo commit nel branch master in due modi:

  • Utilizzando i nostri server TeamCity
  • Utilizzando Github Actions.

Le build sono pensate principalmente per essere utilizzate dagli sviluppatori di RetDec, dai contributori e da altre persone che sperimentano con il prodotto (ad esempio, testare se un problema presente nella release ufficiale esiste ancora nel master corrente).

Puoi usarle come desideri, ma tieni presente che non ci sono garanzie che funzionino sul tuo sistema (specialmente la versione Linux), e che le regressioni sono possibili. Per ottenere una versione stabile di RetDec, scarica l'ultimo pacchetto precompilato ufficiale o compila l'ultimo tag di versione di RetDec.

TeamCity

  • Windows Server 2016, version 10.0
  • Ubuntu Bionic Linux, version 18.04
  • Mac OS X, version 10.14.6

Github Actions

Puoi trovare le build per macOS, Linux e Windows nell'ultima esecuzione del workflow CI di RetDec.

Documentazione del progetto

Vedi la documentazione del progetto per un riferimento software aggiornato generato da Doxygen corrispondente all'ultimo commit nel branch master.

Repository correlati

  • retdec-idaplugin -- Incorpora RetDec in IDA (Interactive Disassembler) e ne facilita notevolmente l'uso.
  • retdec-r2plugin -- Incorpora RetDec in Radare2 e ne facilita notevolmente l'uso.
  • retdec-regression-tests-framework -- Un framework per scrivere ed eseguire test di regressione per RetDec e strumenti correlati. È indispensabile se intendi contribuire al progetto RetDec.
  • retdec-regression-tests -- Una suite di test di regressione per RetDec e strumenti correlati.
  • retdec-build-system-tests -- Una suite di test per il sistema di build di RetDec. Può anche servire come raccolta di demo su come utilizzare le librerie RetDec.
  • vim-syntax-retdecdsm -- File di evidenziazione sintattica per Vim per l'output del disassemblatore di RetDec (file .dsm).

Licenza

Copyright (c) 2017 Avast Software, concesso in licenza sotto la licenza MIT. Consulta il file LICENSE per maggiori dettagli.

RetDec incorpora una libreria PeLib modificata. I nuovi moduli aggiunti da Avast Software sono concessi in licenza sotto la licenza MIT. I sorgenti originali sono concessi in licenza sotto la seguente licenza:

  • Copyright (c) 2004 - 2005 Sebastian Porst ([email protected]), concesso in licenza sotto la licenza zlib/libpng. Consulta il file LICENSE-PELIB per maggiori dettagli.

RetDec utilizza librerie di terze parti o altre risorse elencate, insieme alle loro licenze, nel file LICENSE-THIRD-PARTY.

Contribuire

Vedi le linee guida per contribuire a RetDec.

Ringraziamenti

Questo software è stato supportato dal finanziamento di ricerca TACR (Technology Agency of the Czech Republic), Programma ALFA n. TA01010667.

Scarica lo strumento
  • cmake --build . --config Release --target install
  • In alternativa, puoi aprire retdec.sln generato da cmake nell'IDE di Visual Studio
  • macOS:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<percorso>
    • make -jN (N è il numero di processi da usare per la build parallela, tipicamente numero di core + 1 dà il tempo di compilazione più veloce)
    • make install
  • FreeBSD:
    • sudo pkg install git cmake
    • git clone https://github.com/avast/retdec
    • cd retdec
    • mkdir build && cd build
    • root@kitploit:~
      # FreeBSD (and other BSDs) do need cmake, python3, git, autotools. OpenSSL is pre-installed in the OS but check its version.
      # Later versions may be available for each of the packages.
      # See what is installed:
      sudo pkg info cmake python37 autotools
      # Install/upgrade them:
      sudo pkg install cmake python37 autotools
      
    • cmake .. -DCMAKE_INSTALL_PREFIX=<percorso>
    • make -jN (N è il numero di processi da usare per la build parallela, tipicamente numero di core + 1 dà il tempo di compilazione più veloce)
    • make install
  • -DCAPSTONE_LOCAL_DIR=<percorso>
    <percorso>
  • -DRETDEC_ENABLE_<componente>=ON per compilare solo il/i componente/i specificato/i (possono essere usate più opzioni di questo tipo contemporaneamente) e le loro dipendenze. Per impostazione predefinita, vengono compilati tutti i componenti. Se almeno un componente viene abilitato tramite questo meccanismo, tutti gli altri componenti che non sono stati esplicitamente abilitati (e non sono necessari come dipendenze dei componenti abilitati) non vengono compilati. Vedi cmake/options.cmake per tutte le opzioni dei componenti disponibili.
    • -DRETDEC_ENABLE_ALL=ON può essere usato per (ri-)abilitare tutti i componenti.
    • In alternativa, è possibile utilizzare -DRETDEC_ENABLE=<elenco di componenti separati da virgola> invece di -DRETDEC_ENABLE_<componente>=ON (ad es. -DRETDEC_ENABLE=fileformat,loader,ctypesparser è equivalente a -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).