copyleftdev/reflow
GitHub: copyleftdev/reflow
一款基于熵引导与图分析的 UEFI 固件解析与 NVRAM 提取工具。
Stars: 0 | Forks: 0
# 重新流动
用 Rust 编写的 UEFI 固件 ROM 解析器和 NVRAM 提取器。
解析 Intel SPI 闪存镜像,提取固件卷、NVRAM 变量以及 DXE/SMM 模块。在不依赖任何格式假设的前提下,使用熵分析、马尔可夫字节转移模型和小波分析对未知区域进行分类。
从 [efi_fuzz](https://github.com/Sentinel-One/efi_fuzz) 重写的解析流水线。
## 安装
```
cargo install --path .
```
## 用法
```
reflow parse rom.bin # dump full structure
reflow nvram rom.bin --output nvram/ # extract NVRAM variables
reflow entropy rom.bin --json # entropy heatmap
reflow depex rom.bin --dot > deps.dot # dependency graph (Graphviz)
reflow corpus rom.bin --output afl_inputs/ # fuzzing corpus from NVRAM
reflow modules rom.bin --json # modules ranked by centrality
```
## 解析内容
- **Flash 布局** — Intel Flash Descriptor 区域(BIOS、ME、GbE、PDR)
- **固件卷** — FFS2/FFS3 文件系统,嵌套卷
- **FFS 文件** — PE32 可执行文件、DEPEX 依赖项、UI 名称
- **NVRAM 变量** — NVAR 格式(AMI、Phoenix、Insyde)
- **压缩** — EFI 1.1 Tiano(LZ77+Huffman)与 LZMA
- **DEPEX** — 基于栈的依赖字节码,通过拓扑排序与介数中心性进行完整图分析
## 分类能力(无需解析)
熵与统计方法在任何格式特定解析器运行前识别区域:
| 熵(比特/字节) | 卡方检验 | 分类 |
|-----------------|----------|------|
| ~0.0 | 任意 | 填充(0x00/0xFF) |
| 1.0–4.0 | 高 | 结构化数据(NVRAM、GUID) |
| 4.0–6.5 | 高 | 机器代码(x86/ARM) |
| 7.0–7.9 | > 500 | 压缩(LZMA、Tiano) |
| 7.99+ | ~256 | 加密或随机数据 |
附加分类器:马尔可夫字节转移指纹(基于 KL 散度与参考模型对比)、ACF/抖动谱分析用于重复结构检测、Haar 小波分解用于多尺度边界检测。
## 真实固件测试
在 OVMF、MinnowBoard 与 Dell SPI 闪存转储上进行验证。包含 271 项测试,涵盖确定性模拟测试与种子化 PRNG 对抗输入生成。
```
cargo test
```
## 许可证
MIT
标签:DEPEX, efi_fuzz, FFS2, FFS3, Graphviz, GUID, Haar 小波, Huffman, Intel SPI 闪存, KL散度, LZ77, LZMA, NVRAM 提取, PE32, ROM 解析, Rust 重写, SEO: NVRAM 提取工具, SEO: UEFI 固件解析器, SEO: 熵引导区域分类, UEFI, 中心性, 介数中心性, 依赖图, 加密检测, 压缩算法, 可视化界面, 固件解析, 图分析, 字节转移模型, 拓扑排序, 无格式假设, 模糊测试语料, 熵分析, 熵热图, 统计分类, 通知系统, 随机数据检测, 频谱分析, 马尔可夫模型