安全软件公司 Avast 宣布了研发 7 年的机器码反编译器 RetDec 的开源版本。
RetDec 是可重定向的机器码反编译器,同时有在线反编译服务和 API ROPMEMU - 分析、解析、反编译复杂的代码重用攻击的框架,能对常见和传统的硬件架构的机器码进行反编译,支持 ARM, PIC32, PowerPC 以及 MIPS 架构的机器码。
RetDec 现在也开始提供网页服务。在 IoT 物联网设备越来越普及的今日,机器码反编译工作对于防范和发现安全威胁和恶意软件来说至关重要,尽管完全还原机器码的原始汇编指令是不可能的,但反汇编工作能够让生产可执行的等效代码,查看软件是否有恶意攻击意图代码。
反编译器不限于任何特定的目标架构,操作系统或可执行文件格式:
支持的文件格式:ELF,PE,Mach-O,COFF,AR(存档),Intel HEX和原始机器码。
支持的体系结构(仅限 32b):Intel x86,ARM,MIPS,PIC32 和 PowerPC。
特征:
具有详细信息的可执行文件的静态分析。
编译器和打包器检测。
加载和指令解码。
基于签名的静态链接库代码的删除。
调试信息的提取和利用(DWARF,PDB)。
指导习语的重构。
C ++类层次结构(RTTI,vtables)的检测和重构。
从C ++二进制文件中去除符号(GCC,MSVC,Borland)。
重构函数,类型和高级构造。
集成的反汇编。
以两种高级语言输出:C和Python类语言。
生成调用图,控制流图和各种统计信息。
目前只支持Windows和Linux。
从下面的列表中下载并解压缩一个预先构建的包,或者自己构建并安装反编译器(过程如下所述):
32b Windows(v3.0)
64b Windows(v3.0)
为Visual Studio 2015安装Microsoft Visual C ++可再发行组件。
按照RetDec的Windows环境设置指南安装MSYS2和其他所需的应用程序。
现在,你已经开始运行反编译器了。要反编译一个名为的二进制文件test.exe,请进入$RETDEC_INSTALLED_DIR/bin并运行:
test.exe
$RETDEC_INSTALLED_DIR/bin
bash decompile.sh test.exe
有关更多信息,请运行
bash decompile.sh –help
目前还没有针对Linux的预建包。你将不得不自己建立和安装反编译器。该过程如下所述。
构建反编译器之后,您将需要通过发行版的包管理器安装以下包:
GNU Bash
UPX
bc
Graphviz
3.现在,你已经开始运行反编译器了。要反编译一个名为的二进制文件test.exe,请进入$RETDEC_INSTALLED_DIR/bin并运行:
./decompile.sh test.exe
./decompile.sh --help