Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
retdec — RetDec 是一款基于 LLVM 的可重定向机器码反编译器。 | Kitploit
工具/GitHubGitHub/avast/retdec
静态分析逆向工程恶意软件分析二进制分析
GitHubavast/retdec

retdec

RetDec 是一款基于 LLVM 的可重定向机器码反编译器。

查看仓库网站
8.6k9973个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

警告

RetDec 项目目前由于资源不足处于有限维护模式:

  • 欢迎提交 Pull Requests。它们会被优先审查,尽可能不延迟。
  • 对问题的响应可能会有最多一个季度的延迟。除非与基本项目维护相关,否则不会积极解决问题。
  • 基本项目维护仍在继续。
  • 仅进行非常有限的开发。

RetDec

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

RetDec 是一个基于 LLVM 的可重定向机器码反编译器。

反编译器不限于任何特定的目标架构、操作系统或可执行文件格式:

  • 支持的文件格式:ELF、PE、Mach-O、COFF、AR(归档)、Intel HEX 和原始机器码。
  • 支持的架构:
    • 32位:Intel x86、ARM、MIPS、PIC32 和 PowerPC
    • 64位:x86-64、ARM64(AArch64)

特性:

  • 带有详细信息的可执行文件静态分析。
  • 编译器和打包器检测。
  • 加载和指令解码。
  • 基于签名移除静态链接的库代码。
  • 提取并利用调试信息(DWARF、PDB)。
  • 指令惯用法的重构。
  • 检测和重构 C++ 类层次结构(RTTI、vtables)。
  • 来自 C++ 二进制文件的符号反修饰(GCC、MSVC、Borland)。
  • 函数、类型和高层结构的重构。
  • 集成反汇编器。
  • 输出两种高级语言:C 和类 Python 语言。
  • 生成调用图、控制流图及各种统计信息。

更多信息,请查看我们的

  • Wiki(正在进行中)
  • Botconf 2017 演讲:幻灯片、视频
  • REcon Montreal 2018 演讲:幻灯片
  • 出版物

安装

有两种获取和安装 RetDec 的方式:

  1. 下载并解压预构建的 稳定版 或 前沿版 包,然后按照解压后 retdec/share/retdec/README.md 文件中的"使用"部分的说明进行操作。
  2. 通过源代码自行构建 RetDec,请遵循构建与安装部分。安装后,请按照以下说明操作。

我们目前支持 Windows(7 或更高版本)、Linux、macOS 和(实验性)FreeBSD。安装后的 RetDec 版本大约需要 5 到 6 GB 的可用磁盘空间。

使用

请确保您阅读的说明与所使用的 RetDec 版本相对应。如果不确定,请参考安装目录中的 retdec/share/retdec/README.md 文件。

Windows

  1. 在安装 RetDec 后,安装 Microsoft Visual C++ Redistributable for Visual Studio 2017。

  2. 安装以下程序:

    • UPX(可选:如果希望在预处理阶段使用 UPX 解包器)
    • Graphviz(可选:如果希望生成调用图或控制流图)
  3. 要反编译名为 test.exe 的二进制文件,运行:

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

    更多信息,请使用 --help 参数运行 retdec-decompiler.exe。

Linux

  1. 在安装 RetDec 后,通过您的发行版的包管理器安装以下软件包:

    • UPX(可选:如果希望在预处理阶段使用 UPX 解包器)
    • Graphviz(可选:如果希望生成调用图或控制流图)
  2. 要反编译名为 test.exe 的二进制文件,运行:

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

    更多信息,请使用 --help 参数运行 retdec-decompiler。

macOS

  1. 在安装 RetDec 后,安装以下软件包:

    • UPX(可选:如果希望在预处理阶段使用 UPX 解包器)
    • Graphviz(可选:如果希望生成调用图或控制流图)
  2. 要反编译名为 test.exe 的二进制文件,运行:

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

    更多信息,请使用 --help 参数运行 retdec-decompiler。

FreeBSD(实验性)

  1. 目前 FreeBSD 没有预构建的“ports”软件包。您需要自行构建和安装反编译器。过程如下所述。

  2. 要反编译名为 test.exe 的二进制文件,运行:

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

    更多信息,请使用 --help 参数运行 retdec-decompiler。

使用 RetDec 库

您可以轻松地在项目中使用各种 RetDec 库——前提是它们使用 CMake 构建。RetDec 安装包含了所有必要的头文件、库和 CMake 脚本。

如果您将 RetDec 安装到系统的标准安装位置(例如 /usr、/usr/local),使用其组件只需要:```cmake find_package(retdec 5.0 REQUIRED COMPONENTS [...] ) target_link_libraries(your-project PUBLIC retdec:: [...] )

root@kitploit:~
如果你没有将 RetDec 安装在 CMake 可以自动发现的位置,则需要在使用 `find_package()` 之前帮助 CMake 找到它。通常有两种方法(请选择并使用其中一种):

1. 将 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. 将已安装 RetDec CMake 脚本的路径设置为 `retdec_DIR`:
    ```cmake
    set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
    ```

请参阅 [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) 维基页面查看可用的 RetDec 组件列表,或查看 [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) 了解如何使用它们。

## 构建与安装

本节介绍 RetDec 的本地构建与安装。有关 Docker 的说明,请参见下一节。

### 要求

#### Linux

* 支持 C++17 的 C++ 编译器和标准 C++ 库(例如 GCC >= 7)
* [CMake](https://cmake.org/)(版本 >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/)(版本 >= 1.1.1)
* [Python](https://www.python.org/)(版本 >= 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/) 和 [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/)
* 可选:[Doxygen](http://www.stack.nl/~dimitri/doxygen/) 和 [Graphviz](http://www.graphviz.org/) 用于生成 API 文档

在基于 Debian 的发行版(例如 Ubuntu)上,可以使用 `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

在基于RPM的发行版(例如Fedora)上,所需的软件包可以使用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:~
在Arch Linux上,所需的软件包可以使用`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++(版本 >= Visual Studio 2017 版本 15.7)
  • CMake(版本 >= 3.6)
  • Git
  • OpenSSL(版本 >= 1.1.1)
  • Python(版本 >= 3.4)
  • 可选:Doxygen 和 Graphviz 用于生成 API 文档

macOS

建议通过 Homebrew 安装软件包。

  • macOS >= 10.15
  • 完整的 Xcode 安装(包括命令行工具,参见 #425 和 #433)
  • CMake(版本 >= 3.6)
  • Git
  • OpenSSL(版本 >= 1.1.1)
  • Python(版本 >= 3.4)
  • autotools(autoconf、automake 和 libtool)
  • 可选:Doxygen 和 Graphviz 用于生成 API 文档

FreeBSD(实验性)

建议通过 FreeBSD 的预编译包仓库使用 pkg 命令安装软件包,或使用 ports 数据库方法从源码编译。

  • 完整 "pkg" 工具说明:手册 pkg 方法
    • pkg install cmake python37 git autotools 或者
  • 完整 "ports" 说明:手册 ports 方法
    • portsnap fetch
    • portsnap extract
  • 例如,cmake 的安装方式如下
    • whereis cmake
    • cd /usr/ports/devel/cmake
    • make install clean

构建过程

注意:虽然 RetDec 现在支持系统级安装(#94),但除非你使用发行版的包管理器进行安装,否则我们建议将 RetDec 安装在本地指定目录中。原因是卸载时只需删除一个目录更加方便。要进行本地安装,请在运行 cmake 时使用 -DCMAKE_INSTALL_PREFIX=<path> 参数,其中 <path> 是 RetDec 将安装到的目录(例如 Linux 和 macOS 上的 $HOME/projects/retdec-install,Windows 上的 C:\projects\retdec-install)。

  • 克隆仓库:
    • git clone https://github.com/avast/retdec
  • Linux:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN(N 是用于并行构建的进程数,通常是核心数 + 1 可获得最快的编译时间)
    • make install
  • Windows:
    • 打开命令提示符(例如 cmd.exe)
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>
    • cmake --build . --config Release -- -m

你必须向 cmake 传递以下参数:

  • -DCMAKE_INSTALL_PREFIX=<path> 用于将安装路径设置为 <path>。如果你在 Windows 上使用反斜杠,请对路径进行引号处理(例如 -DCMAKE_INSTALL_PREFIX="C:\retdec")。
  • (仅限 Windows)-G<generator> 为 -G"Visual Studio 15 2017" 用于使用 Visual Studio 2017 进行 32 位构建,或 -G"Visual Studio 15 2017 Win64" 用于 64 位构建。可以使用更高版本的 Visual Studio。

你可以向 cmake 传递以下附加参数:

  • -DRETDEC_DOC=ON 用于构建 API 文档(需要 Doxygen 和 Graphviz,默认禁用)。
  • -DRETDEC_TESTS=ON 用于构建测试(默认禁用)。
  • -DRETDEC_DEV_TOOLS=ON 用于构建开发工具(默认禁用)。
  • -DRETDEC_COMPILE_YARA=OFF 用于在安装步骤禁用 YARA 规则编译(默认启用)。
  • -DCMAKE_BUILD_TYPE=Debug 用于构建包含调试信息的版本,这在开发过程中很有用。默认情况下,项目以 Release 模式构建。此参数在 Windows 上无效,但可以通过运行带有 --config Debug 参数的 cmake --build . 实现相同效果。
  • -D<dep>_LOCAL_DIR=<path> 其中 <dep> 是 {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD}(例如 -DCAPSTONE_LOCAL_DIR=<path>),用于使用指定路径 <path> 下的本地仓库克隆作为 RetDec 的依赖项,而不是在构建时下载新的副本。可以同时使用多个此类选项。

在 Docker 中构建

Docker 支持由社区维护。如果遇到问题或有改进建议,请提交 issue 或 PR。

构建镜像

在 Docker 中构建无需在本地安装所需的库。这是在不搭建完整构建工具链的情况下尝试 RetDec 的不错选择。

要构建 RetDec Docker 镜像,请运行``` docker build -t retdec - < Dockerfile

root@kitploit:~
这将从该仓库的主分支构建镜像。

要使用仓库的本地副本构建镜像,请使用开发Dockerfile `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev

运行容器

如果您的 uid 不是 1000,请确保包含您输入的二进制文件的目录对 RetDec 可访问:``` chmod 0777 /path/to/local/directory

root@kitploit:~
现在,您可以在容器内运行反编译器:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary

注意:不要修改 /destination 部分。您只需更改 /path/to/local/directory。然后输出文件将会生成到 /path/to/local/directory。

夜间构建

我们从 master 分支的最新提交生成最新版本的 RetDec 包,采用两种方式:

  • 使用我们的 TeamCity 服务器
  • 使用 Github Actions。

这些构建主要用于 RetDec 开发者、贡献者以及其他尝试该产品的人员(例如,测试官方发布版本中的问题是否仍然存在于当前的 master 中)。

您可以随意使用它们,但请注意,我们不保证它们能在您的系统上正常工作(尤其是 Linux 版本),并且可能存在回归问题。要获取稳定的 RetDec 版本,请下载最新的官方预构建包或构建最新的 RetDec 版本标签。

TeamCity

  • Windows Server 2016, 版本 10.0
  • Ubuntu Bionic Linux, 版本 18.04
  • Mac OS X, 版本 10.14.6

Github Actions

您可以在最新的 RetDec CI 工作流运行中找到 macOS、Linux 和 Windows 的构建。

项目文档

请参阅项目文档以获取与 master 分支最新提交对应的最新 Doxygen 生成的软件参考。

相关仓库

  • retdec-idaplugin — 将 RetDec 嵌入 IDA(交互式反汇编器)中,使其使用更加便捷。
  • retdec-r2plugin — 将 RetDec 嵌入 Radare2 中,使其使用更加便捷。
  • retdec-regression-tests-framework — 用于为 RetDec 及相关工具编写和运行回归测试的框架。如果您计划为 RetDec 项目做出贡献,这是必需的。
  • retdec-regression-tests — 一套针对 RetDec 及相关工具的回归测试用例。
  • retdec-build-system-tests — 一套针对 RetDec 构建系统的测试。同时也可作为展示如何使用 RetDec 库的演示集合。
  • vim-syntax-retdecdsm — 用于 RetDec 反汇编器输出(.dsm 文件)的 Vim 语法高亮文件。

许可证

版权所有 (c) 2017 Avast Software,遵循 MIT 许可证。详情请参阅 LICENSE 文件。

RetDec 包含一个修改过的 PeLib 库。由 Avast Software 添加的新模块遵循 MIT 许可证。原始源码遵循以下许可证:

  • 版权所有 (c) 2004 - 2005 Sebastian Porst ([email protected]),遵循 zlib/libpng 许可证。详情请参阅 LICENSE-PELIB 文件。

RetDec 使用的第三方库或其他资源及其许可证列在 LICENSE-THIRD-PARTY 文件中。

贡献

请参阅 RetDec 贡献指南。

致谢

本软件得到了研究资助 TACR(捷克共和国技术局)ALFA 计划 No. TA01010667 的支持。

下载工具
  • cmake --build . --config Release --target install
  • 或者,你也可以在 Visual Studio IDE 中打开由 cmake 生成的 retdec.sln
  • macOS:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN(N 是用于并行构建的进程数,通常是核心数 + 1 可获得最快的编译时间)
    • make install
  • FreeBSD:
    • sudo pkg install git cmake
    • git clone https://github.com/avast/retdec
    • cd retdec
    • mkdir build && cd build
    • root@kitploit:~
      # FreeBSD(和其他 BSD 系统)需要 cmake、python3、git、autotools。OpenSSL 预装在系统中,但请检查其版本。
      # 每个软件包可能有更新的版本。
      # 查看已安装的内容:
      sudo pkg info cmake python37 autotools
      # 安装/升级它们:
      sudo pkg install cmake python37 autotools
      
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN(N 是用于并行构建的进程数,通常是核心数 + 1 可获得最快的编译时间)
    • make install
  • -DRETDEC_ENABLE_<component>=ON 用于仅构建指定的组件(可以同时使用多个此类选项)及其依赖项。默认情况下,所有组件都会被构建。如果通过此机制启用了至少一个组件,则所有未显式启用(且不是已启用组件的依赖项)的组件将不会被构建。请参见 cmake/options.cmake 获取所有可用组件选项。
    • 可以使用 -DRETDEC_ENABLE_ALL=ON 来(重新)启用所有组件。
    • 或者,也可以使用 -DRETDEC_ENABLE=<逗号分隔的组件列表> 代替 -DRETDEC_ENABLE_<component>=ON(例如 -DRETDEC_ENABLE=fileformat,loader,ctypesparser 等效于 -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON)。