
RetDec ist ein umstellbarer Maschinencode-Dekompilierer basierend auf LLVM.
Warnung
Das RetDec-Projekt befindet sich derzeit aufgrund fehlender Ressourcen im eingeschränkten Wartungsmodus:
- Pull-Requests sind willkommen. Sie werden prioritär geprüft, wenn möglich ohne Verzögerungen.
- Auf Issues wird mit Verzögerungen von bis zu einem Quartal reagiert. Issues werden nicht aktiv gelöst, es sei denn, sie betreffen die grundlegende Projektwartung.
- Die grundlegende Projektwartung wird fortgesetzt.
- Es werden nur noch sehr begrenzte Weiterentwicklungen durchgeführt.
RetDec ist ein retargetierbarer Maschinencode-Dekompilierer basierend auf LLVM.
Der Dekompilierer ist nicht auf eine bestimmte Zielarchitektur, ein bestimmtes Betriebssystem oder ein bestimmtes ausführbares Dateiformat beschränkt:
Funktionen:
Für weitere Informationen besuchen Sie
Es gibt zwei Möglichkeiten, RetDec zu beziehen und zu installieren:
retdec/share/retdec/README.md.Wir unterstützen derzeit Windows (7 oder höher), Linux, macOS und (experimentell) FreeBSD. Eine installierte Version von RetDec benötigt etwa 5 bis 6 GB freien Speicherplatz.
Bitte stellen Sie sicher, dass Sie die Anweisungen lesen, die der verwendeten RetDec-Version entsprechen. Wenn Sie unsicher sind, lesen Sie die Datei retdec/share/retdec/README.md in der Installation.
Nach der Installation von RetDec installieren Sie Microsoft Visual C++ Redistributable for Visual Studio 2017.
Installieren Sie die folgenden Programme:
Um eine Binärdatei namens test.exe zu dekompilieren, führen Sie Folgendes aus:
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
Für weitere Informationen führen Sie retdec-decompiler.exe mit --help aus.
Nach der Installation von RetDec installieren Sie die folgenden Pakete über den Paketmanager Ihrer Distribution:
Um eine Binärdatei namens test.exe zu dekompilieren, führen Sie Folgendes aus:
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Für weitere Informationen führen Sie retdec-decompiler mit --help aus.
Nach der Installation von RetDec installieren Sie die folgenden Pakete:
Um eine Binärdatei namens test.exe zu dekompilieren, führen Sie Folgendes aus:
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Für weitere Informationen führen Sie retdec-decompiler mit --help aus.
Derzeit gibt es keine vorgefertigten "Ports"-Pakete für FreeBSD. Sie müssen den Dekompilierer selbst erstellen und installieren. Der Prozess wird unten beschrieben.
Um eine Binärdatei namens test.exe zu dekompilieren, führen Sie Folgendes aus:
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Für weitere Informationen führen Sie retdec-decompiler mit --help aus.
Sie können problemlos verschiedene RetDec-Bibliotheken in Ihren Projekten verwenden – sofern diese mit CMake erstellt werden. Die RetDec-Installation enthält alle erforderlichen Header, Bibliotheken und CMake-Skripte.
Wenn Sie RetDec an einem Standard-Installationsort Ihres Systems installiert haben (z. B. /usr, /usr/local), müssen Sie lediglich Folgendes tun, um seine Komponenten zu verwenden:```cmake
find_package(retdec 5.0 REQUIRED
COMPONENTS
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::
[...]
)
Wenn Sie RetDec nicht an einem Ort installiert haben, an dem es automatisch erkannt werden kann, müssen Sie CMake helfen, es zu finden, bevor `find_package()` verwendet wird. Es gibt im Allgemeinen zwei Möglichkeiten (wählen und verwenden Sie nur eine):
1. Fügen Sie das RetDec-Installationsverzeichnis zu [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) hinzu:
```cmake
list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
```
2. Setzen Sie den Pfad zu den installierten RetDec CMake-Skripten auf `retdec_DIR`:
```cmake
set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
```
Siehe die Wiki-Seite [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) für die Liste der verfügbaren RetDec-Komponenten oder [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) für Demos zur Verwendung.
## Build und Installation
Dieser Abschnitt beschreibt einen lokalen Build und die Installation von RetDec. Anweisungen für Docker werden im nächsten Abschnitt gegeben.
### Anforderungen
#### Linux
* Ein C++-Compiler und eine Standard-C++-Bibliothek, die C++17 unterstützen (z. B. 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/) und [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/)
* Optional: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) und [Graphviz](http://www.graphviz.org/) zur Generierung der API-Dokumentation
Auf Debian-basierten Distributionen (z. B. Ubuntu) können die erforderlichen Pakete mit `apt-get` installiert werden:```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz
Auf RPM-basierten Distributionen (z.B. Fedora) können die erforderlichen Pakete mit dnf installiert werden:```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
Unter Arch Linux können die erforderlichen Pakete mit `pacman` installiert werden:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
Pakete sollten vorzugsweise über Homebrew installiert werden.
Pakete sollten über das vorkompilierte Paket-Repository von FreeBSD mit dem pkg-Befehl installiert oder mit der ports-Datenbankmethode von Grund auf neu erstellt werden.
pkg install cmake python37 git autotoolsportsnap fetchportsnap extractcmake
whereis cmakecd /usr/ports/devel/cmakemake install cleanHinweis: Obwohl RetDec jetzt eine systemweite Installation unterstützt (#94), empfehlen wir, RetDec lokal in ein bestimmtes Verzeichnis zu installieren, sofern Sie nicht den Paketmanager Ihrer Distribution verwenden. Der Grund dafür ist, dass die Deinstallation einfacher ist, da Sie nur ein einziges Verzeichnis entfernen müssen. Führen Sie für eine lokale Installation cmake mit dem Parameter -DCMAKE_INSTALL_PREFIX=<path> aus, wobei <path> das Verzeichnis ist, in das RetDec installiert werden soll (z. B. $HOME/projects/retdec-install unter Linux und macOS und C:\projects\retdec-install unter Windows).
git clone https://github.com/avast/retdeccd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N ist die Anzahl der Prozesse, die für die parallele Build verwendet werden sollen; typischerweise ergibt Anzahl der Kerne + 1 die schnellste Kompilierungszeit)make installcmd.exe)cd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>cmake --build . --config Release -- -mSie müssen die folgenden Parameter an cmake übergeben:
-DCMAKE_INSTALL_PREFIX=<path>, um den Installationspfad auf <path> zu setzen. Setzen Sie den Pfad in Anführungszeichen, wenn Sie unter Windows Rückwärtsschrägstriche verwenden (z. B. -DCMAKE_INSTALL_PREFIX="C:\retdec").-G<generator> ist -G"Visual Studio 15 2017" für 32-Bit-Build mit Visual Studio 2017 oder -G"Visual Studio 15 2017 Win64" für 64-Bit-Build mit Visual Studio 2017. Spätere Versionen von Visual Studio können verwendet werden.Sie können die folgenden zusätzlichen Parameter an cmake übergeben:
-DRETDEC_DOC=ON, um mit API-Dokumentation zu bauen (erfordert Doxygen und Graphviz, standardmäßig deaktiviert).-DRETDEC_TESTS=ON, um mit Tests zu bauen (standardmäßig deaktiviert).-DRETDEC_DEV_TOOLS=ON, um mit Entwicklertools zu bauen (standardmäßig deaktiviert).-DRETDEC_COMPILE_YARA=OFF, um die YARA-Regelkompilierung beim Installationsschritt zu deaktivieren (standardmäßig aktiviert).-DCMAKE_BUILD_TYPE=Debug, um mit Debug-Informationen zu bauen, was während der Entwicklung nützlich ist. Standardmäßig wird das Projekt im Release-Modus erstellt. Dies hat unter Windows keine Auswirkung, aber das Gleiche kann erreicht werden, indem cmake --build . mit dem Parameter --config Debug ausgeführt wird.-D<dep>_LOCAL_DIR=<path>, wobei <dep> aus {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} stammt (z. B. ), um den lokalen Repository-Klon unter für die RetDec-Abhängigkeit zu verwenden, anstatt zur Build-Zeit eine frische Kopie herunterzuladen. Mehrere solcher Optionen können gleichzeitig verwendet werden.Der Docker-Support wird von der Community bereitgestellt. Wenn etwas bei Ihnen nicht funktioniert oder Sie Verbesserungsvorschläge haben, öffnen Sie ein Issue oder einen PR.
Das Erstellen in Docker erfordert keine lokale Installation der erforderlichen Bibliotheken. Dies ist eine gute Option, um RetDec auszuprobieren, ohne die gesamte Build-Toolchain einrichten zu müssen.
Um das RetDec Docker-Image zu erstellen, führen Sie aus:``` docker build -t retdec - < Dockerfile
Dies erstellt das Image aus dem Master-Branch dieses Repositorys.
Um das Image mithilfe der lokalen Kopie des Repositorys zu erstellen, verwenden Sie das Entwicklungs-Dockerfile, `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev
Wenn Ihre uid nicht 1000 ist, stellen Sie sicher, dass das Verzeichnis mit Ihren Eingabebinärdateien für RetDec zugänglich ist:```
chmod 0777 /path/to/local/directory
Jetzt können Sie den Dekompiler in einem Container ausführen:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
Hinweis: Ändern Sie nicht den /destination Teil. Sie müssen nur /path/to/local/directory ändern. Ausgabedateien werden dann unter /path/to/local/directory generiert.
Wir generieren aktuelle RetDec-Pakete aus dem neuesten Commit im master-Zweig auf zwei Arten:
Die Builds sind hauptsächlich für RetDec-Entwickler, Mitwirkende und andere Personen gedacht, die mit dem Produkt experimentieren (z. B. Testen, ob ein Problem in der offiziellen Version im aktuellen master noch vorhanden ist).
Sie können diese nach Belieben verwenden, beachten Sie jedoch, dass es keine Garantien gibt, dass sie auf Ihrem System funktionieren (insbesondere die Linux-Version), und dass Regressionen möglich sind. Um eine stabile RetDec-Version zu erhalten, laden Sie entweder das neueste offizielle vorgebaute Paket herunter oder bauen Sie den neuesten RetDec-Version-Tag.
TeamCity
Github Actions
Sie finden Builds für macOS, Linux und Windows im letzten RetDec CI-Workflow-Lauf.
Siehe die Projektdokumentation für eine aktuelle Doxygen-generierte Softwarereferenz, die dem neuesten Commit im master-Zweig entspricht.
.dsm-Dateien).Copyright (c) 2017 Avast Software, lizenziert unter der MIT-Lizenz. Siehe die LICENSE-Datei für weitere Details.
RetDec enthält eine modifizierte PeLib-Bibliothek. Neue Module, die von Avast Software hinzugefügt wurden, sind unter der MIT-Lizenz lizenziert. Die ursprünglichen Quellen sind unter der folgenden Lizenz lizenziert:
LICENSE-PELIB-Datei für weitere Details.RetDec verwendet Drittanbieter-Bibliotheken oder andere Ressourcen, die zusammen mit ihren Lizenzen in der LICENSE-THIRD-PARTY-Datei aufgeführt sind.
Siehe die RetDec-Beitragsrichtlinien.
Diese Software wurde durch die Forschungsförderung TACR (Technologická agentura České republiky), ALFA-Programm Nr. TA01010667, unterstützt.
cmake --build . --config Release --target installcmake generierte retdec.sln in der Visual Studio IDE öffnen.cd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N ist die Anzahl der Prozesse, die für die parallele Build verwendet werden sollen; typischerweise ergibt Anzahl der Kerne + 1 die schnellste Kompilierungszeit)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 ist die Anzahl der Prozesse, die für die parallele Build verwendet werden sollen; typischerweise ergibt Anzahl der Kerne + 1 die schnellste Kompilierungszeit)make install-DCAPSTONE_LOCAL_DIR=<path><path>-DRETDEC_ENABLE_<component>=ON, um nur die angegebene(n) Komponente(n) zu bauen (mehrere solcher Optionen können gleichzeitig verwendet werden), und deren Abhängigkeiten. Standardmäßig werden alle Komponenten gebaut. Wenn mindestens eine Komponente über diesen Mechanismus aktiviert wird, werden alle anderen Komponenten, die nicht explizit aktiviert wurden (und nicht als Abhängigkeiten der aktivierten Komponenten benötigt werden), nicht gebaut. Siehe cmake/options.cmake für alle verfügbaren Komponentenoptionen.
-DRETDEC_ENABLE_ALL=ON kann verwendet werden, um alle Komponenten (wieder) zu aktivieren.-DRETDEC_ENABLE=<durch Kommas getrennte Komponentenliste> anstelle von -DRETDEC_ENABLE_<component>=ON verwendet werden (z. B. ist -DRETDEC_ENABLE=fileformat,loader,ctypesparser äquivalent zu -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).