Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
retdec — RetDec é um descompilador de código de máquina reorientável baseado em LLVM. | Kitploit
Ferramentas/GitHubGitHub/avast/retdec
Análise EstáticaEngenharia ReversaAnálise de MalwareAnálise de Binários
GitHubavast/retdec

retdec

RetDec é um descompilador de código de máquina reorientável baseado em LLVM.

Ver RepositórioSite
8.6k997há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

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

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

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:

  • Formatos de arquivo suportados: ELF, PE, Mach-O, COFF, AR (arquivo), Intel HEX e código de máquina bruto
  • Arquiteturas suportadas:
    • 32 bits: Intel x86, ARM, MIPS, PIC32 e PowerPC
    • 64 bits: x86-64, ARM64 (AArch64)

Recursos:

  • Análise estática de arquivos executáveis com informações detalhadas.
  • Detecção de compiladores e empacotadores.
  • Carregamento e decodificação de instruções.
  • Remoção baseada em assinaturas de código de biblioteca vinculado estaticamente.
  • Extração e utilização de informações de depuração (DWARF, PDB).
  • Reconstrução de expressões idiomáticas de instruções.
  • Detecção e reconstrução de hierarquias de classes C++ (RTTI, vtables).
  • Desofuscação de símbolos de binários C++ (GCC, MSVC, Borland).
  • Reconstrução de funções, tipos e construções de alto nível.
  • Desmontador integrado.
  • Saída em duas linguagens de alto nível: C e uma linguagem semelhante a Python.
  • Geração de grafos de chamada, grafos de fluxo de controle e várias estatísticas.

Para mais informações, confira nosso

  • Wiki (em andamento)
  • Palestra Botconf 2017: slides, vídeo
  • Palestra REcon Montreal 2018: slides
  • Publicações

Instalação

Existem duas maneiras de obter e instalar o RetDec:

  1. Baixe e descompacte um pacote pré-construído estável ou bleeding-edge e siga as instruções na seção Uso do arquivo retdec/share/retdec/README.md após descompactar.
  2. Construa o RetDec por conta própria a partir das fontes seguindo a seção Construção e Instalação. Após a instalação, siga as instruções abaixo.

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.

Uso

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.

Windows

  1. Após instalar o RetDec, instale o Microsoft Visual C++ Redistributable para Visual Studio 2017.

  2. Instale os seguintes programas:

    • UPX (Opcional: se desejar usar o desempacotador UPX na etapa de pré-processamento)
    • Graphviz (Opcional: se desejar gerar grafos de chamada ou fluxo de controle)
  3. Para descompilar um arquivo binário chamado test.exe, execute

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

    Para mais informações, execute retdec-decompiler.exe com --help.

Linux

  1. Após instalar o RetDec, instale os seguintes pacotes através do gerenciador de pacotes da sua distribuição:

    • UPX (Opcional: se desejar usar o desempacotador UPX na etapa de pré-processamento)
    • Graphviz (Opcional: se desejar gerar grafos de chamada ou fluxo de controle)
  2. Para descompilar um arquivo binário chamado test.exe, execute

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

    Para mais informações, execute retdec-decompiler com --help.

macOS

  1. Após instalar o RetDec, instale os seguintes pacotes:

    • UPX (Opcional: se desejar usar o desempacotador UPX na etapa de pré-processamento)
    • Graphviz (Opcional: se desejar gerar grafos de chamada ou fluxo de controle)
  2. Para descompilar um arquivo binário chamado test.exe, execute

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

    Para mais informações, execute retdec-decompiler com --help.

FreeBSD (Experimental)

  1. 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.

  2. Para descompilar um arquivo binário chamado test.exe, execute

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

    Para mais informações, execute retdec-decompiler com --help.

Uso das bibliotecas do RetDec

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:: [...] )

root@kitploit:~
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

root@kitploit:~
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

Windows

  • Microsoft Visual C++ (versão >= Visual Studio 2017 versão 15.7)
  • CMake (versão >= 3.6)
  • Git
  • OpenSSL (versão >= 1.1.1)
  • Python (versão >= 3.4)
  • Opcional: Doxygen e Graphviz para gerar documentação da API

macOS

Os pacotes devem ser preferencialmente instalados via Homebrew.

  • macOS >= 10.15
  • Instalação completa do Xcode (incluindo ferramentas de linha de comando, veja #425 e #433)
  • CMake (versão >= 3.6)
  • Git
  • OpenSSL (versão >= 1.1.1)
  • Python (versão >= 3.4)
  • autotools (autoconf, automake e libtool)
  • Opcional: Doxygen e Graphviz para gerar documentação da API

FreeBSD (Experimental)

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.

  • Instruções completas da ferramenta "pkg": método pkg do handbook
    • pkg install cmake python37 git autotools OU
  • Instruções completas do "ports": método ports do handbook
    • portsnap fetch
    • portsnap extract
  • Por exemplo, cmake seria
    • whereis cmake
    • cd /usr/ports/devel/cmake
    • make install clean

Process

Nota: 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).

  • Clone o repositório:
    • git clone https://github.com/avast/retdec
  • Linux:
    • cd retdec
    • mkdir build && cd build
    • 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
  • Windows:
    • Abra um prompt de comando (ex.: cmd.exe)
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<caminho> -G<gerador>
    • cmake --build . --config Release -- -m

Você 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").
  • (Apenas Windows) -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.

Compilar no Docker

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 Imagem

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

root@kitploit:~
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

Executar Container

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

root@kitploit:~
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.

Compilações Noturnas

Geramos pacotes atualizados do RetDec a partir do último commit no branch master de duas maneiras:

  • Usando nossos servidores TeamCity
  • Usando Github Actions.

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

  • Windows Server 2016, versão 10.0
  • Ubuntu Bionic Linux, versão 18.04
  • Mac OS X, versão 10.14.6

Github Actions

Você pode encontrar compilações para macOS, Linux e Windows na última execução do workflow CI do RetDec.

Documentação do Projeto

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.

Repositórios Relacionados

  • retdec-idaplugin -- Incorpora o RetDec no IDA (Interactive Disassembler) e torna seu uso muito mais fácil.
  • retdec-r2plugin -- Incorpora o RetDec no Radare2 e torna seu uso muito mais fácil.
  • retdec-regression-tests-framework -- Um framework para escrever e executar testes de regressão para o RetDec e ferramentas relacionadas. Isso é essencial se você planeja contribuir com o projeto RetDec.
  • retdec-regression-tests -- Um conjunto de testes de regressão para o RetDec e ferramentas relacionadas.
  • retdec-build-system-tests -- Um conjunto de testes para o sistema de compilação do RetDec. Isso também pode servir como uma coleção de demonstrações de como usar as bibliotecas do RetDec.
  • vim-syntax-retdecdsm -- Arquivo de realce de sintaxe do Vim para a saída do desassemblador do RetDec (arquivos .dsm).

Licença

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:

  • Copyright (c) 2004 - 2005 Sebastian Porst ([email protected]), licenciado sob a licença zlib/libpng. Consulte o arquivo 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.

Contribuindo

Consulte as diretrizes de contribuição do RetDec.

Agradecimentos

Este software foi apoiado pelo financiamento de pesquisa TACR (Agência de Tecnologia da República Tcheca), Programa ALFA No. TA01010667.

Baixar ferramenta
  • cmake --build . --config Release --target install
  • Alternativamente, você pode abrir retdec.sln gerado por cmake no IDE do Visual Studio
  • macOS:
    • cd retdec
    • mkdir build && cd build
    • 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
  • 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=<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.
    • Alternativamente, -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).