
RetDec est un décompilateur de code machine reconfigurable basé sur LLVM.
Avertissement
Le projet RetDec est actuellement en mode maintenance limité en raison d'un manque de ressources :
- Les Pull Requests sont les bienvenues. Elles sont examinées en priorité, si possible sans délais.
- Les issues reçoivent une réponse avec des délais pouvant aller jusqu'à un trimestre. Les issues ne sont pas activement résolues sauf si elles concernent la maintenance de base du projet.
- La maintenance de base du projet se poursuit.
- Seul un développement très limité est effectué.
RetDec est un désassembleur de code machine reconfigurable basé sur LLVM.
Le désassembleur n'est pas limité à une architecture cible, un système d'exploitation ou un format de fichier exécutable particulier :
Fonctionnalités :
Pour plus d'informations, consultez :
Il existe deux façons d'obtenir et d'installer RetDec :
retdec/share/retdec/README.md après décompression.Nous supportons actuellement Windows (7 ou ultérieur), Linux, macOS et (expérimentalement) FreeBSD. Une version installée de RetDec nécessite environ 5 à 6 Go d'espace disque libre.
Assurez-vous de lire les instructions correspondant à la version de RetDec utilisée. En cas de doute, reportez-vous au fichier retdec/share/retdec/README.md dans l'installation.
Après installation de RetDec, installez Microsoft Visual C++ Redistributable for Visual Studio 2017.
Installez les programmes suivants :
Pour décompiler un fichier binaire nommé test.exe, exécutez
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
Pour plus d'informations, exécutez retdec-decompiler.exe avec --help.
Après installation de RetDec, installez les paquets suivants via le gestionnaire de paquets de votre distribution :
Pour décompiler un fichier binaire nommé test.exe, exécutez
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Pour plus d'informations, exécutez retdec-decompiler avec --help.
Après installation de RetDec, installez les paquets suivants :
Pour décompiler un fichier binaire nommé test.exe, exécutez
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Pour plus d'informations, exécutez retdec-decompiler avec --help.
Il n'existe actuellement aucun paquet ports pré-construit pour FreeBSD. Vous devrez construire et installer le désassembleur vous-même. Le processus est décrit ci-dessous.
Pour décompiler un fichier binaire nommé test.exe, exécutez
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Pour plus d'informations, exécutez retdec-decompiler avec --help.
Vous pouvez facilement utiliser diverses bibliothèques RetDec dans vos projets - s'ils sont construits avec CMake. L'installation de RetDec contient tous les en-têtes, bibliothèques et scripts CMake nécessaires.
Si vous avez installé RetDec dans un emplacement d'installation standard de votre système (par exemple /usr, /usr/local), tout ce que vous devez faire pour utiliser ses composants est :```cmake
find_package(retdec 5.0 REQUIRED
COMPONENTS
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::
[...]
)
Si vous n'avez pas installé RetDec à un endroit où il peut être automatiquement découvert, vous devez aider CMake à le trouver avant que `find_package()` ne soit utilisé. Il existe généralement deux façons de procéder (choisissez-en une seule) :
1. Ajoutez le répertoire d'installation de RetDec à [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) :
```cmake
list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
```
2. Définissez le chemin vers les scripts CMake installés de RetDec dans `retdec_DIR` :
```cmake
set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
```
Consultez la page wiki [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) pour la liste des composants RetDec disponibles, ou [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) pour des démonstrations sur la façon de les utiliser.
## Compilation et installation
Cette section décrit une compilation et installation locale de RetDec. Les instructions pour Docker sont données dans la section suivante.
### Prérequis
#### Linux
* Un compilateur C++ et une bibliothèque standard C++ supportant C++17 (par exemple GCC >= 7)
* [CMake](https://cmake.org/) (version >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (version >= 1.1.1)
* [Python](https://www.python.org/) (version >= 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/), et [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/)
* Optionnel : [Doxygen](http://www.stack.nl/~dimitri/doxygen/) et [Graphviz](http://www.graphviz.org/) pour générer la documentation de l'API
Sur les distributions basées sur Debian (par exemple Ubuntu), les paquets requis peuvent être installés avec `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
Sur les distributions basées sur RPM (par exemple Fedora), les paquets requis peuvent être installés avec 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
Sur Arch Linux, les paquets nécessaires peuvent être installés avec `pacman` :```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
Les paquets devraient de préférence être installés via Homebrew.
Les paquets doivent être installés via le dépôt de paquets précompilés de FreeBSD à l'aide de la commande pkg ou construits à partir des sources en utilisant la méthode de la base de données ports.
pkg install cmake python37 git autotools
OUportsnap fetchportsnap extractcmake serait
whereis cmakecd /usr/ports/devel/cmakemake install cleanRemarque : Bien que RetDec prenne désormais en charge une installation à l'échelle du système (#94), sauf si vous utilisez le gestionnaire de paquets de votre distribution pour l'installer, nous vous recommandons d'installer RetDec localement dans un répertoire désigné. La raison en est que la désinstallation sera plus facile car vous n'aurez qu'à supprimer un seul répertoire. Pour effectuer une installation locale, exécutez cmake avec le paramètre -DCMAKE_INSTALL_PREFIX=<path>, où <path> est le répertoire dans lequel RetDec sera installé (p. ex. $HOME/projects/retdec-install sous Linux et macOS, et C:\projects\retdec-install sous Windows).
git clone https://github.com/avast/retdeccd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N est le nombre de processus à utiliser pour la compilation parallèle, généralement le nombre de cœurs + 1 donne le temps de compilation le plus rapide)make installcmd.exe)cd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>cmake --build . --config Release -- -mcmake --build . --config Release --target installretdec.sln généré par cmake dans l'IDE Visual Studiocd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N est le nombre de processus à utiliser pour la compilation parallèle, généralement le nombre de cœurs + 1 donne le temps de compilation le plus rapide)make installsudo pkg install git cmakegit clone https://github.com/avast/retdeccd retdecmkdir build && cd build# 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=<path>make -jN (N est le nombre de processus à utiliser pour la compilation parallèle, généralement le nombre de cœurs + 1 donne le temps de compilation le plus rapide)make installVous devez passer les paramètres suivants à cmake :
-DCMAKE_INSTALL_PREFIX=<path> pour définir le chemin d'installation sur <path>. Mettez le chemin entre guillemets si vous utilisez des antislashs sous Windows (p. ex. -DCMAKE_INSTALL_PREFIX="C:\retdec").-G<generator> est -G"Visual Studio 15 2017" pour une compilation 32 bits avec Visual Studio 2017, ou -G"Visual Studio 15 2017 Win64" pour une compilation 64 bits avec Visual Studio 2017. Des versions ultérieures de Visual Studio peuvent être utilisées.Vous pouvez passer les paramètres supplémentaires suivants à cmake :
-DRETDEC_DOC=ON pour compiler avec la documentation de l'API (nécessite Doxygen et Graphviz, désactivé par défaut).-DRETDEC_TESTS=ON pour compiler avec les tests (désactivé par défaut).-DRETDEC_DEV_TOOLS=ON pour compiler avec les outils de développement (désactivé par défaut).-DRETDEC_COMPILE_YARA=OFF pour désactiver la compilation des règles YARA lors de l'installation (activé par défaut).-DCMAKE_BUILD_TYPE=Debug pour compiler avec les informations de débogage, ce qui est utile pendant le développement. Par défaut, le projet est compilé en mode Release. Cela n'a aucun effet sous Windows, mais on peut obtenir la même chose en exécutant cmake --build . avec le paramètre --config Debug.-D<dep>_LOCAL_DIR=<path> où <dep> fait partie de {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} (p. ex. -DCAPSTONE_LOCAL_DIR=<path>), pour utiliser un clone local du dépôt à <path> comme dépendance RetDec au lieu de télécharger une copie fraîche au moment de la compilation. Plusieurs options de ce type peuvent être utilisées en même temps.-DRETDEC_ENABLE_<component>=ON pour ne compiler que le(s) composant(s) spécifié(s) (plusieurs options de ce type peuvent être utilisées à la fois), ainsi que ses (leurs) dépendances. Par défaut, tous les composants sont compilés. Si au moins un composant est activé via ce mécanisme, tous les autres composants qui n'ont pas été explicitement activés (et qui ne sont pas nécessaires comme dépendances des composants activés) ne sont pas compilés. Voir cmake/options.cmake pour toutes les options de composants disponibles.
-DRETDEC_ENABLE_ALL=ON peut être utilisé pour (ré-)activer tous les composants.-DRETDEC_ENABLE=<liste de composants séparés par des virgules> peut être utilisé à la place de -DRETDEC_ENABLE_<component>=ON (p. ex. -DRETDEC_ENABLE=fileformat,loader,ctypesparser équivaut à -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).Le support Docker est maintenu par la communauté. Si quelque chose ne fonctionne pas pour vous ou si vous avez des suggestions d'amélioration, ouvrez un issue ou une PR.
La compilation dans Docker ne nécessite pas d'installation locale des bibliothèques requises. C'est une bonne option pour essayer RetDec sans configurer toute la chaîne d'outils de compilation.
Pour créer l'image Docker RetDec, exécutez``` docker build -t retdec - < Dockerfile
Ceci construit l'image depuis la branche master de ce dépôt. Pour construire l'image en utilisant la copie locale du dépôt, utilisez le Dockerfile de développement, `Dockerfile.dev` :```
docker build -t retdec:dev . -f Dockerfile.dev
Si votre uid n'est pas 1000, assurez-vous que le répertoire contenant vos fichiers binaires d'entrée est accessible pour RetDec :```
chmod 0777 /path/to/local/directory
Maintenant, vous pouvez exécuter le décompilateur dans un conteneur :```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
Note : Ne modifiez pas la partie /destination. Vous devez seulement changer /path/to/local/directory. Les fichiers de sortie seront alors générés vers /path/to/local/directory.
Nous générons des paquets RetDec à jour à partir du dernier commit dans la branche master de deux manières :
Ces compilations sont principalement destinées aux développeurs de RetDec, aux contributeurs et aux autres personnes expérimentant le produit (par exemple, pour tester si un problème présent dans la version officielle existe toujours dans le master actuel).
Vous pouvez les utiliser comme vous le souhaitez, mais gardez à l'esprit qu'il n'y a aucune garantie qu'elles fonctionneront sur votre système (en particulier la version Linux) et que des régressions sont possibles. Pour obtenir une version stable de RetDec, téléchargez le dernier paquet préconstruit officiel ou construisez la dernière étiquette de version de RetDec.
TeamCity
Github Actions
Vous pouvez trouver des compilations pour macOS, Linux et Windows dans le dernier exécution du workflow CI de RetDec.
Voir la documentation du projet pour une référence logicielle générée par Doxygen, mise à jour et correspondant au dernier commit dans la branche master.
.dsm).Copyright (c) 2017 Avast Software, sous licence MIT. Voir le fichier LICENSE pour plus de détails.
RetDec intègre une bibliothèque PeLib modifiée. Les nouveaux modules ajoutés par Avast Software sont sous licence MIT. Les sources originales sont sous la licence suivante :
LICENSE-PELIB pour plus de détails.RetDec utilise des bibliothèques tierces ou d'autres ressources listées, avec leurs licences, dans le fichier LICENSE-THIRD-PARTY.
Voir les directives de contribution de RetDec.
Ce logiciel a été soutenu par le financement de la recherche TACR (Technology Agency of the Czech Republic), programme ALFA n° TA01010667.