Loading...

文章背景图

RetDec:基于 LLVM 的可重定向机器码反编译器安装与使用指南

2026-10-27
0
- 字
- 分钟
|

RetDec:基于 LLVM 的可重定向机器码反编译器安装与使用指南

RetDec 是一个基于 LLVM 的可重定向机器码反编译器,不局限于特定架构、操作系统或可执行格式。它能对 ELF、PE、Mach-O、COFF、AR、Intel HEX 及原始机器代码做静态分析,还原出 C 与类 Python 两种高级语言输出,并生成调用图、控制流图与各类统计信息。

说明:RetDec 目前处于「有限维护模式」(limited maintenance mode),基础维护仍在继续,但近期提交在 12 个月内(shields 显示最近提交为 5 月),版本 v5.0,仍可正常用于反编译分析。

一、项目官方信息

项目 信息
GitHub 仓库 https://github.com/avast-tl/retdec
官方网站 https://retdec.com
开源协议 MIT
主要语言 C++(约 74.1%)
Star 数 8.7k+
支持格式 ELF、PE、Mach-O、COFF、AR、Intel HEX、原始机器码
支持架构 x86 / x86-64、ARM / ARM64、MIPS、PIC32、PowerPC

二、官方图片

RetDec 仓库社交预览图:

RetDec

三、环境要求

  • 支持平台:Windows 7+、Linux、macOS,(实验性)FreeBSD;
  • 安装需要约 5–6 GB 磁盘空间;
  • 快速上手推荐直接下载官方预编译包;
  • 源码编译需 C++17 编译器(GCC >= 7)、CMake >= 3.6、Git、OpenSSL >= 1.1.1、Python >= 3.4、autotools、pkg-config、m4、zlib;
  • 可选:UPX(预处理解包)、Graphviz(生成调用图/控制流图)。

四、部署步骤

方式 A:下载预编译包(推荐)

从 Releases(https://github.com/avast/retdec/releases )下载稳定版预编译包,解压后阅读 retdec/share/retdec/README.md 中的说明即可使用。官方还提供 TeamCity 与 GitHub Actions 的每日构建(bleeding-edge)包。

方式 B:Docker 构建

docker build -t retdec - < Dockerfile

用本地仓库副本则用开发版 Dockerfile:

docker build -t retdec:dev . -f Dockerfile.dev

方式 C:源码编译(Linux)

git clone https://github.com/avast/retdec
cd retdec
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<安装路径>
make -jN      # N 为并行编译进程数
make install

Debian/Ubuntu 可一键装齐依赖:

sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz

建议用 -DCMAKE_INSTALL_PREFIX=<路径> 本地安装到指定目录,卸载时只需删该目录。

五、使用方法

反编译一个二进制

以 test.exe 为例,各平台命令一致:

# Linux / macOS
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe

# Windows
%RETDEC_INSTALL_DIR%\bin\retdec-decompiler.exe test.exe

更多参数执行 retdec-decompiler --help。

Docker 里运行反编译

# 先确保输入目录对容器可访问
chmod 0777 /path/to/local/directory
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary

输出文件会生成到本地目录。

输出能力

  • 静态分析可执行文件并给出详细信息;
  • 编译器与加壳(packer)识别;
  • 加载与指令解码;
  • 基于签名剥离静态链接库代码;
  • 提取调试信息(DWARF、PDB);
  • 重构指令惯用法、C++ 类层次(RTTI、vtable);
  • C++ 符号反 mangling;
  • 重构函数、类型与高级控制结构;
  • 内置反汇编器,输出 C 与类 Python 两种高级语言;
  • 生成调用图、控制流图与统计信息(配合 Graphviz)。

作为库集成

RetDec 安装目录内含头文件、库与 CMake 脚本,CMake 工程可直接:

find_package(retdec 5.0 REQUIRED COMPONENTS <component>)
target_link_libraries(your-project PUBLIC retdec::<component>)

六、常见问题 FAQ

Q1:最快的使用方式? 下载官方预编译包解压即可,无需自己编译;源码编译链较长。

Q2:反编译命令是什么? retdec-decompiler 目标文件,Windows 为 retdec-decompiler.exe。

Q3:支持哪些文件格式和架构? 格式:ELF、PE、Mach-O、COFF、AR、Intel HEX、原始机器码;架构:x86/x86-64、ARM/ARM64、MIPS、PIC32、PowerPC。

Q4:需要多大磁盘空间? 安装后的 RetDec 约需 5–6 GB 空闲磁盘。

Q5:想生成调用图/控制流图怎么办? 安装 Graphviz,并在需要时配合 UPX 解包;RetDec 可据此产出 call graph 与 CFG。

Q6:项目还在维护吗? 处于有限维护模式:基础维护继续,PR 会评审,但 issue 响应较慢;仍可正常用于反编译分析。

七、跳转链接

  • GitHub 仓库:https://github.com/avast-tl/retdec
  • 官方网站:https://retdec.com
  • Releases:https://github.com/avast/retdec/releases
  • Wiki:https://github.com/avast/retdec/wiki
评论交流

文章目录