关于RetDec
RetDec是一款功能强大的基于LLVM的可重定目标机器代码反编译器,该工具支持的反编译器不限于任何特定的目标体系结构、操作系统或可执行文件格式。
当前版本的RetDec支持下列文件格式:
ELF
PE
Mach-O
COFF
AR(文档)
Intel HEX
原始机器代码
当前版本的RetDec支持下列体系结构:
32位:Intel x86、ARM、MIPS、PIC32和PowerPC
64位:x86-64,ARM64(AArch64)
1、提供带有详细信息的可执行文件静态分析数据;
2、编译器和封装器检测;
3、加载和指令解码;
4、基于签名的静态链接库代码移除;
5、提取和利用调试信息(DWARF、PDB);
6、指令语法重构;
7、C++类层次结构(RTTI、vtables)的检测和重构;
8、从C++二进制文件(GCC、MSVC、Borland)中分离符号;
9、函数、类型和高级构造器重构;
10、整合反汇编工具;
11、以两种高级语言输出:C和类似Python的语言;
12、生成调用图、控制流图和各种统计信息;
广大研究人员可以访问该项目的【Releases页面】下载预编译的RetDec稳定版。
当前版本的RetDec支持Windows 7+、Linux、macOS和FreeBSD操作系统,请预留大约5-6GB的磁盘空间。
1、安装Microsoft Visual C++ Redistributable for Visual Studio 2017;
2、安装UPX和Graphviz;
3、如需反编译名为text.exe的代码文件,可以运行下列命令:
$RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
(向右滑动,查看更多)
Linux
1、安装UPX和Graphviz;
2、如需反编译名为text.exe的代码文件,可以运行下列命令:
$RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
我们还可以直接在自己项目(需要使用CMake构建)中使用RetDec库。RetDec安装时包含了所有需要的头文件、代码库和CMake脚本。
接下来,就可以通过下列方式来使用其组件了:
find_package(retdec 5.0 REQUIRED
COMPONENTS
<component>
[...]
)
target_link_libraries(your-project
PUBLIC
retdec::<component>
[...]
)
在Docker中构建RetDec不需要在本地安装所需的依赖库,直接运行下列命令即可构建RetDec镜像:
docker build -t retdec - < Dockerfile
上述命令将从代码库的主分支构建镜像。
除此之外,我们也可以使用本地代码库拷贝来构建镜像,即使用开发版本的Dockerfile.dev:
git clone https://github.com/avast/retdec.git
docker build -t retdec:dev . -f Dockerfile.dev
如果你的uid不是1000,请确保RetDec能够访问目录中包含的输入代码文件:
chmod 0777 /path/to/local/directory
接下来,你就可以在容器中运行反编译器了:
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary
本项目的开发与发布遵循MIT和Zlib开源许可证协议。
RetDec:
https://github.com/avast/retdec
https://retdec.com/static/publications/retdec-slides-botconf-2017.pdf
https://www.youtube.com/watch?v=HHFvtt5b6yY
https://retdec.com/static/publications/retdec-slides-recon-2018.pdf
https://retdec.com/publications/
精彩推荐