cdong1012/ollvm-unflattener
GitHub: cdong1012/ollvm-unflattener
基于 Miasm 符号执行引擎的 OLLVM 控制流平坦化反混淆工具,支持跨平台二进制文件分析与还原。
Stars: 245 | Forks: 27
# ollvm-unflattener
一个用于反混淆 OLLVM (Obfuscator-LLVM) 控制流平坦化的 Python 工具。该工具利用 Miasm 框架来分析并恢复被 OLLVM 控制流平坦化技术混淆的函数的原始控制流。
## 项目描述
OLLVM (Obfuscator-LLVM) 是一款流行的代码混淆工具,实现了多种混淆技术,包括函数级别的控制流平坦化。控制流平坦化通过使用状态变量和分发机制,将函数的原始流程转换为扁平结构,这使得在逆向工程过程中难以理解程序的逻辑。
该工具:
- 通过识别和连接基本块,重构被混淆函数的原始控制流
- 生成恢复了原始控制流的反混淆二进制文件
- 通过广度优先搜索 (BFS) 跟踪目标函数的调用,支持多层函数反混淆
- 支持 Windows 和 Linux 二进制文件(x86 和 x64 架构)的反混淆
本项目受到了 [MODeflattener](https://github.com/mrT4ntr4/MODeflattener) 和 [Quarkslab](https://blog.quarkslab.com/deobfuscation-recovering-an-ollvm-protected-program.html) 精彩工作的启发!与通过静态方法解决 CFF 反混淆的 **MODeflattener** 不同,本项目利用 Miasm 的符号执行引擎来执行并恢复原始控制流。
## 安装
### 前置条件
- Python 3.10+
- Git
### 设置
1. 克隆仓库:
```
git clone https://github.com/cdong1012/ollvm-unflattener.git
cd ollvm-unflattener
```
2. 安装所需依赖:
```
pip install -r requirements.txt
```
`requirements.txt` 文件包含:
```
miasm
graphviz
keystone-engine
```
## 使用
### 基本用法
```
python unflattener -i -o
标签:CFG复原, CTF安全工具, DNS 反向解析, Keystone引擎, Miasm, OLLVM, Python, x86架构, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码保护, 代码反混淆, 恶意代码分析, 控制流平坦化, 无后门, 符号执行, 逆向工具, 逆向工程, 配置文件, 静态分析