fkie-cad/dewolf
GitHub: fkie-cad/dewolf
dewolf 是一款基于 Binary Ninja 插件的研究型反编译器,将二进制代码重构为高级伪代码,供逆向分析与学术研究使用。
Stars: 223 | Forks: 12
[](https://github.com/fkie-cad/dewolf/actions/workflows/pipeline.yml)
[](https://github.com/fkie-cad/dewolf/actions/workflows/extended-pipeline.yml)
# dewolf
dewolf 是一款研究型反编译器,由德国(Fraunhofer FKIE)和新加坡(DSO National Laboratories)在 2019 年至 2021 年的科研合作期间共同开发。
dewolf 的重构基于先前的 DREAM/DREAM++ 方法 [Yakdan et al. NDSS 2015, IEEE (SP) 2016]。
dewolf 反编译器是作为 Binary Ninja 的插件实现的,并使用其 Medium-Level 中间语言作为起点。
尽管我们认为 dewolf 已经非常稳定,但它仍然是一个研究原型,并未针对生产环境进行大量优化。
因此,在将 dewolf 应用于真实二进制文件时,您可能会遇到一些 bug 甚至反编译失败的情况。
**如果您遇到任何 bug,请向我们报告,以便我们进一步改进 dewolf。 :)**
## 安装
### 依赖项
在开始之前,请确保您的计算机上已安装并可以使用以下依赖项:
- 至少 [Python 3.10](https://www.python.org/)
- [Binary Ninja (>=3.4)](https://binary.ninja/) 的最新稳定版本
- [astyle](https://code.tools/man/1/astyle/),用于正确缩进反编译的代码
- [libgraph-easy-perl](https://packages.ubuntu.com/source/focal/libgraph-easy-perl),仅在打印 ASCII 图表时需要
在 **Linux**(Ubuntu / Debian)下,您可以使用以下命令同时安装 **astyle** 和 **libgraph-easy-perl**:
```
sudo apt install astyle libgraph-easy-perl
```
在 **Windows** 下,请确保已将 **astyle** 的二进制文件添加到环境变量 Path 中。
### Binary Ninja 插件
按照以下步骤将 dewolf 设置为 Binary Ninja 的 GUI 插件。
之后,您将能够从 Binary Ninja 的停靠面板中查看反编译代码。
#### 步骤 1:
将 dewolf 仓库克隆到 Binary Ninja 的插件文件夹中,该文件夹位于与您的操作系统相对应的以下路径之一:
**Linux:** `~/.binaryninja/plugins`
**MacOS:** `~/Library/Application Support/Binary Ninja`
**Windows:** `%APPDATA%\Binary Ninja`
**注意:**
如果您想使用 Python 虚拟环境,请确保在接下来的步骤中以及启动 Binary Ninja 时都已启用它。
#### 步骤 2:
使用以下命令安装 dewolf 的 Python 依赖项:
```
pip install -r requirements.txt
```
#### 步骤 3:
使用以下命令安装 Binary Ninja 的 Python API:
```
python /scripts/install_api.py [--install-on-pyenv if using virtualenv]
```
**警告:** 对 dewolf 插件所做的更改只有在重启 Binary Ninja GUI 后才会生效。
## 使用方法
dewolf 反编译器既可以在命令行中使用,也可以在 Binary Ninja 中使用。
### GUI
通过 **Tools > dewolf decompiler** 启用 dewolf 反编译挂件后,将显示当前活动符号的反编译代码。
在 dewolf 挂件中,可以通过双击函数来在函数之间进行导航。
可以使用 *follow* 按钮切换所选函数的自动反编译功能。
反编译的代码会被缓存,可以通过 *decompile* 按钮重新生成,例如在二进制视图中修补指令之后。

### CLI
对于批量反编译,将 dewolf 作为命令行程序使用可能会更方便。
如果您想从命令行使用 dewolf,可以使用以下命令调用对整个二进制文件的反编译:
```
python decompile.py
```
如果您希望反编译特定的函数,可以将函数名作为第二个参数提供:
```
python decompile.py
```
默认情况下,生成的代码会显示在控制台上。
如果您想将输出写入文件,可以使用 `--output/-o` 标志进行指定。
请使用 `--help` 标志获取更多信息。
## 配置
dewolf 具有多个配置选项,其中一些可以通过 GUI 进行配置。
### 通过 GUI
您可以通过导航到 **Edit > Preferences > Settings** 或按下 Ctrl + , 从 Binary Ninja GUI 配置 dewolf。
在搜索栏中搜索 **dewolf**,将显示所有与 dewolf 相关的设置。
**警告:** 通过命令行界面启动 dewolf 时,不会考虑通过 Binary Ninja 所做的配置。要在通过 CLI 启动时配置 dewolf,请按照下一节的说明进行操作。
### 通过 CLI
要应用命令行模式的设置或使用 GUI 中未显示的高级设置,您可以在反编译器根文件夹中提供一个 *config.json* 文件。
此类配置文件的格式必须如下所示:
```
{
"section.key": value,
"expression-propagation.maximum_instruction_complexity": 5
}
```
所有可用的设置都可以在 `decompiler/util/default.json` 中找到。
## 支持
如果您有任何建议或 bug 报告,请在 Issue Tracker 中创建一个 issue。
如果您有任何问题或其他问题,欢迎发送电子邮件至:
[Dewolf@fkie.fraunhofer.de](mailto:dewolf@fkie.fraunhofer.de).
dewolf 是一款研究型反编译器,由德国(Fraunhofer FKIE)和新加坡(DSO National Laboratories)在 2019 年至 2021 年的科研合作期间共同开发。
dewolf 的重构基于先前的 DREAM/DREAM++ 方法 [Yakdan et al. NDSS 2015, IEEE (SP) 2016]。
dewolf 反编译器是作为 Binary Ninja 的插件实现的,并使用其 Medium-Level 中间语言作为起点。
尽管我们认为 dewolf 已经非常稳定,但它仍然是一个研究原型,并未针对生产环境进行大量优化。
因此,在将 dewolf 应用于真实二进制文件时,您可能会遇到一些 bug 甚至反编译失败的情况。
**如果您遇到任何 bug,请向我们报告,以便我们进一步改进 dewolf。 :)**
## 安装
### 依赖项
在开始之前,请确保您的计算机上已安装并可以使用以下依赖项:
- 至少 [Python 3.10](https://www.python.org/)
- [Binary Ninja (>=3.4)](https://binary.ninja/) 的最新稳定版本
- [astyle](https://code.tools/man/1/astyle/),用于正确缩进反编译的代码
- [libgraph-easy-perl](https://packages.ubuntu.com/source/focal/libgraph-easy-perl),仅在打印 ASCII 图表时需要
在 **Linux**(Ubuntu / Debian)下,您可以使用以下命令同时安装 **astyle** 和 **libgraph-easy-perl**:
```
sudo apt install astyle libgraph-easy-perl
```
在 **Windows** 下,请确保已将 **astyle** 的二进制文件添加到环境变量 Path 中。
### Binary Ninja 插件
按照以下步骤将 dewolf 设置为 Binary Ninja 的 GUI 插件。
之后,您将能够从 Binary Ninja 的停靠面板中查看反编译代码。
#### 步骤 1:
将 dewolf 仓库克隆到 Binary Ninja 的插件文件夹中,该文件夹位于与您的操作系统相对应的以下路径之一:
**Linux:** `~/.binaryninja/plugins`
**MacOS:** `~/Library/Application Support/Binary Ninja`
**Windows:** `%APPDATA%\Binary Ninja`
**注意:**
如果您想使用 Python 虚拟环境,请确保在接下来的步骤中以及启动 Binary Ninja 时都已启用它。
#### 步骤 2:
使用以下命令安装 dewolf 的 Python 依赖项:
```
pip install -r requirements.txt
```
#### 步骤 3:
使用以下命令安装 Binary Ninja 的 Python API:
```
python 标签:二进制分析, 二进制忍者插件, 云安全监控, 云安全运维, 云资产清单, 反编译器, 逆向工具, 逆向工程, 静态分析