
RetDec es un descompilador de código máquina reorientable basado en LLVM.
Advertencia
El proyecto RetDec se encuentra actualmente en un modo de mantenimiento limitado debido a la falta de recursos:
- Se aceptan Pull Requests. Se revisan con prioridad, si es posible sin demoras.
- Los Issues se atienden con demoras de hasta un trimestre. Los Issues no se resuelven activamente a menos que estén relacionados con el mantenimiento básico del proyecto.
- El mantenimiento básico del proyecto continúa.
- Solo se lleva a cabo un desarrollo muy limitado.
RetDec es un descompilador de código máquina reorientable basado en LLVM.
El descompilador no se limita a ninguna arquitectura de destino, sistema operativo o formato de archivo ejecutable en particular:
Características:
Para obtener más información, consulte:
Hay dos formas de obtener e instalar RetDec:
retdec/share/retdec/README.md después de descomprimirlo.Actualmente soportamos Windows (7 o posterior), Linux, macOS y (experimentalmente) FreeBSD. Una versión instalada de RetDec requiere aproximadamente 5 a 6 GB de espacio libre en disco.
Asegúrese de leer las instrucciones correspondientes a la versión de RetDec que utiliza. En caso de duda, consulte el archivo retdec/share/retdec/README.md en la instalación.
Después de instalar RetDec, instale Microsoft Visual C++ Redistributable para Visual Studio 2017.
Instale los siguientes programas:
Para descompilar un archivo binario llamado test.exe, ejecute
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
Para más información, ejecute retdec-decompiler.exe con --help.
Después de instalar RetDec, instale los siguientes paquetes mediante el administrador de paquetes de su distribución:
Para descompilar un archivo binario llamado test.exe, ejecute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para más información, ejecute retdec-decompiler con --help.
Después de instalar RetDec, instale los siguientes paquetes:
Para descompilar un archivo binario llamado test.exe, ejecute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para más información, ejecute retdec-decompiler con --help.
Actualmente no hay paquetes "ports" precompilados para FreeBSD. Tendrá que compilar e instalar el descompilador por su cuenta. El proceso se describe a continuación.
Para descompilar un archivo binario llamado test.exe, ejecute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para más información, ejecute retdec-decompiler con --help.
Puede usar fácilmente varias bibliotecas de RetDec en sus proyectos, siempre que estén compiladas con CMake. La instalación de RetDec contiene todos los encabezados, bibliotecas y scripts de CMake necesarios.
Si instaló RetDec en una ubicación de instalación estándar de su sistema (por ejemplo, /usr, /usr/local), todo lo que necesita hacer para usar sus componentes es:```cmake
find_package(retdec 5.0 REQUIRED
COMPONENTS
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::
[...]
)
Si no instaló RetDec en algún lugar donde pueda ser descubierto automáticamente, necesita ayudar a CMake a encontrarlo antes de usar `find_package()`. Generalmente hay dos formas de hacerlo (elija y use solo una):
1. Agregue el directorio de instalación de 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. Establezca la ruta a los scripts CMake de RetDec instalados en `retdec_DIR`:
```cmake
set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
```
Vea la página wiki de [Resumen del Repositorio](https://github.com/avast/retdec/wiki/Repository-Overview) para la lista de componentes disponibles de RetDec, o [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) para demostraciones sobre cómo usarlos.
## Compilación e Instalación
Esta sección describe la compilación e instalación local de RetDec. Las instrucciones para Docker se dan en la siguiente sección.
### Requisitos
#### Linux
* Un compilador de C++ y una biblioteca estándar de C++ que admitan C++17 (por ejemplo, GCC >= 7)
* [CMake](https://cmake.org/) (versión >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (versión >= 1.1.1)
* [Python](https://www.python.org/) (versión >= 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/) y [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/)
* Opcional: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) y [Graphviz](http://www.graphviz.org/) para generar documentación de la API
En distribuciones basadas en Debian (por ejemplo, Ubuntu), los paquetes requeridos se pueden instalar 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
En distribuciones basadas en RPM (por ejemplo, Fedora), los paquetes requeridos se pueden instalar 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
En Arch Linux, los paquetes necesarios se pueden instalar con `pacman`:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
Los paquetes deberían instalarse preferiblemente mediante Homebrew.
Los paquetes deben instalarse a través del repositorio de paquetes precompilados de FreeBSD usando el comando pkg o compilados desde cero usando el método de base de datos ports.
pkg install cmake python37 git autotools
ORportsnap fetchportsnap extractcmake sería
whereis cmakecd /usr/ports/devel/cmakemake install cleanNota: Aunque RetDec ahora soporta una instalación a nivel de sistema (#94), a menos que uses el gestor de paquetes de tu distribución para instalarlo, recomendamos instalar RetDec localmente en un directorio designado. La razón es que la desinstalación será más fácil ya que solo necesitarás eliminar un único directorio. Para realizar una instalación local, ejecuta cmake con el parámetro -DCMAKE_INSTALL_PREFIX=<path>, donde <path> es el directorio en el que se instalará RetDec (ej. $HOME/projects/retdec-install en Linux y macOS, y C:\projects\retdec-install en Windows).
git clone https://github.com/avast/retdeccd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N es el número de procesos a usar para la compilación en paralelo; típicamente número de núcleos + 1 da el tiempo de compilación más rápido)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 generado por cmake en el IDE de Visual Studiocd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<path>make -jN (N es el número de procesos a usar para la compilación en paralelo; típicamente número de núcleos + 1 da el tiempo de compilación más rápido)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 es el número de procesos a usar para la compilación en paralelo; típicamente número de núcleos + 1 da el tiempo de compilación más rápido)make installDebes pasar los siguientes parámetros a cmake:
-DCMAKE_INSTALL_PREFIX=<path> para establecer la ruta de instalación a <path>. Pon la ruta entre comillas si usas barras invertidas en Windows (ej. -DCMAKE_INSTALL_PREFIX="C:\retdec").-G<generator> es -G"Visual Studio 15 2017" para compilación de 32 bits usando Visual Studio 2017, o -G"Visual Studio 15 2017 Win64" para compilación de 64 bits usando Visual Studio 2017. Se pueden usar versiones posteriores de Visual Studio.Puedes pasar los siguientes parámetros adicionales a cmake:
-DRETDEC_DOC=ON para compilar con documentación de API (requiere Doxygen y Graphviz, desactivado por defecto).-DRETDEC_TESTS=ON para compilar con pruebas (desactivado por defecto).-DRETDEC_DEV_TOOLS=ON para compilar con herramientas de desarrollo (desactivado por defecto).-DRETDEC_COMPILE_YARA=OFF para desactivar la compilación de reglas YARA en el paso de instalación (activado por defecto).-DCMAKE_BUILD_TYPE=Debug para compilar con información de depuración, útil durante el desarrollo. Por defecto, el proyecto se compila en modo Release. Esto no tiene efecto en Windows, pero se puede lograr lo mismo ejecutando cmake --build . con el parámetro --config Debug.-D<dep>_LOCAL_DIR=<path> donde <dep> es de {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} (ej. -DCAPSTONE_LOCAL_DIR=<path>), para usar el clon del repositorio local en <path> para la dependencia de RetDec en lugar de descargar una copia nueva en tiempo de compilación. Se pueden usar varias opciones de este tipo al mismo tiempo.-DRETDEC_ENABLE_<component>=ON para compilar solo el/los componente(s) especificado(s) (se pueden usar varias opciones a la vez), y sus dependencias. Por defecto, se compilan todos los componentes. Si al menos un componente se habilita mediante este mecanismo, todos los demás componentes que no se hayan habilitado explícitamente (y no sean necesarios como dependencias de los componentes habilitados) no se compilan. Consulta cmake/options.cmake para todas las opciones de componentes disponibles.
-DRETDEC_ENABLE_ALL=ON se puede usar para (re)habilitar todos los componentes.-DRETDEC_ENABLE=<lista de componentes separados por comas> en lugar de -DRETDEC_ENABLE_<component>=ON (ej. -DRETDEC_ENABLE=fileformat,loader,ctypesparser es equivalente a -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).El soporte para Docker es mantenido por la comunidad. Si algo no funciona o tienes sugerencias de mejora, abre un issue o PR.
Compilar en Docker no requiere la instalación de las bibliotecas necesarias localmente. Esta es una buena opción para probar RetDec sin tener que configurar todo el toolchain de compilación.
Para compilar la imagen Docker de RetDec, ejecuta``` docker build -t retdec - < Dockerfile
Esto construye la imagen desde la rama master de este repositorio.
Para construir la imagen usando la copia local del repositorio, utiliza el Dockerfile de desarrollo, `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev
Si su uid no es 1000, asegúrese de que el directorio que contiene sus archivos binarios de entrada sea accesible para RetDec:```
chmod 0777 /path/to/local/directory
Ahora, puedes ejecutar el descompilador dentro de un contenedor:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
Nota: No modifique la parte /destination. Solo necesita cambiar /path/to/local/directory. Los archivos de salida se generarán en /path/to/local/directory.
Generamos paquetes actualizados de RetDec a partir del último commit en la rama master de dos maneras:
Las compilaciones están destinadas principalmente para ser utilizadas por desarrolladores de RetDec, contribuyentes y otras personas que experimentan con el producto (por ejemplo, probando si un problema presente en la versión oficial aún existe en el master actual).
Puede usarlas como desee, pero tenga en cuenta que no hay garantías de que funcionen en su sistema (especialmente la versión de Linux), y que las regresiones son una posibilidad. Para obtener una versión estable de RetDec, descargue el último paquete precompilado oficial o compile la etiqueta de la última versión de RetDec.
TeamCity
Github Actions
Puede encontrar compilaciones para macOS, Linux y Windows en la última ejecución del flujo de trabajo CI de RetDec.
Consulte la documentación del proyecto para obtener una referencia de software generada por Doxygen actualizada correspondiente al último commit en la rama master.
.dsm).Copyright (c) 2017 Avast Software, licenciado bajo la licencia MIT. Consulte el archivo LICENSE para más detalles.
RetDec incorpora una biblioteca PeLib modificada. Los nuevos módulos añadidos por Avast Software están licenciados bajo la licencia MIT. Las fuentes originales están licenciadas bajo la siguiente licencia:
LICENSE-PELIB para más detalles.RetDec utiliza bibliotecas de terceros u otros recursos enumerados, junto con sus licencias, en el archivo LICENSE-THIRD-PARTY.
Consulte las directrices de contribución de RetDec.
Este software fue apoyado por la financiación de investigación TACR (Agencia de Tecnología de la República Checa), Programa ALFA No. TA01010667.