
RetDec é um descompilador de código de máquina reorientável baseado em LLVM.
Aviso
O projeto RetDec está atualmente em um modo de manutenção limitada devido à falta de recursos:
- Pull Requests são bem-vindos. Eles são revisados com prioridade, se possível sem atrasos.
- As issues são respondidas com atrasos de até um trimestre. As issues não são resolvidas ativamente, a menos que estejam relacionadas à manutenção básica do projeto.
- A manutenção básica do projeto continua.
- Apenas um desenvolvimento muito limitado está sendo realizado.
RetDec é um descompilador de código de máquina reorientável baseado no LLVM.
O descompilador não está limitado a nenhuma arquitetura de destino, sistema operacional ou formato de arquivo executável específico:
Recursos:
Para mais informações, confira nosso
Existem duas maneiras de obter e instalar o RetDec:
retdec/share/retdec/README.md após descompactar.Atualmente, oferecemos suporte ao Windows (7 ou superior), Linux, macOS e (experimentalmente) FreeBSD. Uma versão instalada do RetDec requer aproximadamente 5 a 6 GB de espaço livre em disco.
Por favor, certifique-se de estar lendo as instruções correspondentes à versão do RetDec utilizada. Em caso de dúvida, consulte o arquivo retdec/share/retdec/README.md na instalação.
Após instalar o RetDec, instale o Microsoft Visual C++ Redistributable para Visual Studio 2017.
Instale os seguintes programas:
Para descompilar um arquivo binário chamado test.exe, execute
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
Para mais informações, execute retdec-decompiler.exe com --help.
Após instalar o RetDec, instale os seguintes pacotes através do gerenciador de pacotes da sua distribuição:
Para descompilar um arquivo binário chamado test.exe, execute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para mais informações, execute retdec-decompiler com --help.
Após instalar o RetDec, instale os seguintes pacotes:
Para descompilar um arquivo binário chamado test.exe, execute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para mais informações, execute retdec-decompiler com --help.
Atualmente, não existem pacotes "ports" pré-construídos para FreeBSD. Você terá que construir e instalar o descompilador por conta própria. O processo está descrito abaixo.
Para descompilar um arquivo binário chamado test.exe, execute
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
Para mais informações, execute retdec-decompiler com --help.
Você pode usar facilmente várias bibliotecas do RetDec em seus projetos - se eles forem construídos com CMake. A instalação do RetDec contém todos os cabeçalhos, bibliotecas e scripts CMake necessários.
Se você instalou o RetDec em um local de instalação padrão do seu sistema (por exemplo, /usr, /usr/local), tudo o que você precisa fazer para usar seus componentes é:```cmake
find_package(retdec 5.0 REQUIRED
COMPONENTS
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::
[...]
)
Se você não instalou o RetDec em um local onde ele possa ser descoberto automaticamente, você precisa ajudar o CMake a encontrá-lo antes que `find_package()` seja usado. Geralmente, há duas maneiras de fazer isso (escolha e use apenas uma):
1. Adicione o diretório de instalação do 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. Defina o caminho para os scripts CMake instalados do RetDec como `retdec_DIR`:
```cmake
set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
```
Veja a página wiki [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) para a lista de componentes disponíveis do RetDec, ou o [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) para demonstrações de como usá-los.
## Construção e Instalação
Esta seção descreve uma construção e instalação local do RetDec. As instruções para Docker são fornecidas na próxima seção.
### Requisitos
#### Linux
* Um compilador C++ e uma biblioteca C++ padrão compatíveis com C++17 (por exemplo, GCC >= 7)
* [CMake](https://cmake.org/) (versão >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (versão >= 1.1.1)
* [Python](https://www.python.org/) (versão >= 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/)
* Opcional: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) e [Graphviz](http://www.graphviz.org/) para gerar documentação da API
Em distribuições baseadas em Debian (ex.: Ubuntu), os pacotes necessários podem ser instalados com `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
Em distribuições baseadas em RPM (por exemplo, Fedora), os pacotes necessários podem ser instalados com 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
No Arch Linux, os pacotes necessários podem ser instalados com `pacman`:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz
Os pacotes devem ser preferencialmente instalados via Homebrew.
Os pacotes devem ser instalados via o repositório de pacotes pré-compilados do FreeBSD usando o comando pkg ou compilados a partir do zero usando o método do banco de dados ports.
pkg install cmake python37 git autotools
OUportsnap fetchportsnap extractcmake seria
whereis cmakecd /usr/ports/devel/cmakemake install cleanNota: Embora o RetDec agora suporte uma instalação em todo o sistema (#94), a menos que você use o gerenciador de pacotes da sua distribuição para instalá-lo, recomendamos instalar o RetDec localmente em um diretório designado. A razão para isso é que a desinstalação será mais fácil, pois você precisará apenas remover um único diretório. Para realizar uma instalação local, execute cmake com o parâmetro -DCMAKE_INSTALL_PREFIX=<caminho>, onde <caminho> é o diretório no qual o RetDec será instalado (por exemplo, $HOME/projects/retdec-install no Linux e macOS, e C:\projects\retdec-install no Windows).
git clone https://github.com/avast/retdeccd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<caminho>make -jN (N é o número de processos a serem usados para compilação paralela, normalmente número de núcleos + 1 fornece o tempo de compilação mais rápido)make installcmd.exe)cd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<caminho> -G<gerador>cmake --build . --config Release -- -mVocê deve passar os seguintes parâmetros para cmake:
-DCMAKE_INSTALL_PREFIX=<caminho> para definir o caminho de instalação para <caminho>. Coloque o caminho entre aspas se estiver usando barras invertidas no Windows (por exemplo, -DCMAKE_INSTALL_PREFIX="C:\retdec").-G<gerador> é -G"Visual Studio 15 2017" para compilação de 32 bits usando Visual Studio 2017, ou -G"Visual Studio 15 2017 Win64" para compilação de 64 bits usando Visual Studio 2017. Versões posteriores do Visual Studio podem ser usadas.Você pode passar os seguintes parâmetros adicionais para cmake:
-DRETDEC_DOC=ON para compilar com documentação da API (requer Doxygen e Graphviz, desabilitado por padrão).-DRETDEC_TESTS=ON para compilar com testes (desabilitado por padrão).-DRETDEC_DEV_TOOLS=ON para compilar com ferramentas de desenvolvimento (desabilitado por padrão).-DRETDEC_COMPILE_YARA=OFF para desabilitar a compilação de regras YARA na etapa de instalação (habilitado por padrão).-DCMAKE_BUILD_TYPE=Debug para compilar com informações de depuração, o que é útil durante o desenvolvimento. Por padrão, o projeto é compilado no modo Release. Isso não tem efeito no Windows, mas o mesmo pode ser alcançado executando cmake --build . com o parâmetro --config Debug.-D<dep>_LOCAL_DIR=<caminho> onde <dep> é de {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} (exemplo: ), para usar o clone do repositório local em para a dependência do RetDec em vez de baixar uma cópia nova no momento da compilação. Várias dessas opções podem ser usadas ao mesmo tempo.O suporte ao Docker é mantido pela comunidade. Se algo não funcionar para você ou se tiver sugestões de melhorias, abra um issue ou PR.
Compilar no Docker não requer instalação das bibliotecas necessárias localmente. Esta é uma boa opção para experimentar o RetDec sem configurar toda a cadeia de ferramentas de compilação.
Para compilar a imagem Docker do RetDec, execute``` docker build -t retdec - < Dockerfile
Isto cria a imagem a partir do ramo master deste repositório.
Para criar a imagem usando a cópia local do repositório, utilize o Dockerfile de desenvolvimento, `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev
Se o seu uid não for 1000, certifique-se de que o diretório contendo seus arquivos binários de entrada está acessível para o RetDec:```
chmod 0777 /path/to/local/directory
Agora, você pode executar o descompilador dentro de um container:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
Nota: Não modifique a parte /destination. Você só precisa alterar /path/to/local/directory. Os arquivos de saída serão então gerados em /path/to/local/directory.
Geramos pacotes atualizados do RetDec a partir do último commit no branch master de duas maneiras:
Essas compilações são destinadas principalmente a desenvolvedores do RetDec, contribuidores e outras pessoas experimentando o produto (por exemplo, testando se um problema presente na versão oficial ainda existe no master atual).
Você pode usá-las como desejar, mas lembre-se de que não há garantias de que funcionarão no seu sistema (especialmente a versão Linux), e que regressões são uma possibilidade. Para obter uma versão estável do RetDec, baixe o último pacote pré-compilado oficial ou compile a tag da versão mais recente do RetDec.
TeamCity
Github Actions
Você pode encontrar compilações para macOS, Linux e Windows na última execução do workflow CI do RetDec.
Consulte a documentação do projeto para obter uma referência de software gerada pelo Doxygen e atualizada correspondente ao último commit no branch master.
.dsm).Copyright (c) 2017 Avast Software, licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
O RetDec incorpora uma biblioteca PeLib modificada. Novos módulos adicionados pela Avast Software são licenciados sob a licença MIT. As fontes originais são licenciadas sob a seguinte licença:
LICENSE-PELIB para mais detalhes.O RetDec usa bibliotecas de terceiros ou outros recursos listados, juntamente com suas licenças, no arquivo LICENSE-THIRD-PARTY.
Consulte as diretrizes de contribuição do RetDec.
Este software foi apoiado pelo financiamento de pesquisa TACR (Agência de Tecnologia da República Tcheca), Programa ALFA No. TA01010667.
cmake --build . --config Release --target installretdec.sln gerado por cmake no IDE do Visual Studiocd retdecmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=<caminho>make -jN (N é o número de processos a serem usados para compilação paralela, normalmente número de núcleos + 1 fornece o tempo de compilação mais 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=<caminho>make -jN (N é o número de processos a serem usados para compilação paralela, normalmente número de núcleos + 1 fornece o tempo de compilação mais rápido)make install-DCAPSTONE_LOCAL_DIR=<caminho><caminho>-DRETDEC_ENABLE_<componente>=ON para compilar apenas o(s) componente(s) especificado(s) (várias dessas opções podem ser usadas de uma vez) e suas dependências. Por padrão, todos os componentes são compilados. Se pelo menos um componente for habilitado por meio desse mecanismo, todos os outros componentes que não foram explicitamente habilitados (e não são necessários como dependências dos componentes habilitados) não são compilados. Consulte cmake/options.cmake para todas as opções de componentes disponíveis.
-DRETDEC_ENABLE_ALL=ON pode ser usado para (re-)abilitar todos os componentes.-DRETDEC_ENABLE=<lista de componentes separados por vírgula> pode ser usado em vez de -DRETDEC_ENABLE_<componente>=ON (exemplo: -DRETDEC_ENABLE=fileformat,loader,ctypesparser é equivalente a -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).