# Mergen 反混淆 LLVM IR 提升器

> 函数级提升器：对 Windows PE 二进制中的单个 x86-64 函数进行符号化提升，生成 LLVM IR，再反复运行 LLVM 与自定义优化 pass 直至收敛，使经混淆或虚拟化的代码化简为更清晰的控制流和语义，便于分析。其范围文档列出 119 个指令处理器，支持双向分支和若干已测试的跳转表形态；README 示例提升的是作者自己用 VMProtect 和 Themida 保护的小型测试函数，输出的 IR 可编译后在反编译器中查看。

- 类型：工具
- 目标：二进制
- 类别：原生分析工具
- 关联：基础工具
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始资源：<https://github.com/NaC-L/Mergen>
- 一手来源：<https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/mergen/>
- 记录 JSON：<https://awesomerea.org/resources/mergen/record.json>
- 英文版：[English](https://awesomerea.org/resources/mergen/index.md)

## 使用条件与局限

- 审阅时最新版本为 v0.7，发布于 2026-03-29，提供 iced 与 Zydis 两种解码后端的 Windows 版 lifter 和微测试可执行文件。所审阅的 main 分支提交日期为 2026-05-08，比随后打上的 v0.8 标签多 150 个提交，而该标签没有对应的发布版本。docs/SCOPE.md 将支持范围限定为 x86-64 PE 文件，且每次只处理一个函数：不支持 32 位 x86、其他文件格式与架构、自修改代码、所列 SSE2 整数指令之外的浮点或 AVX 代码，也不支持提升整个二进制；通用反编译不在项目目标之内。
- lifter 接收一个 PE 文件和目标函数地址，可用 --outline 指定不内联的地址；待分析的二进制须由分析者自行提供。VMProtect 检查使用的是未提交到仓库的本地受保护样本；所审阅的源码树只含源码、汇编和 C 测试源码及文档，没有预构建的可执行文件。输出为 LLVM IR 文本和 output_diagnostics.json，后者记录未能解析的间接跳转与返回。
- 主要在 Windows 上开发并进行 CI 测试，需要 CMake、Ninja、使用 MSVC 头文件和库的 clang-cl 以及 LLVM 18，默认的 iced 后端还需要 Rust/Cargo；仅用 Zydis 的构建路线使用仓库附带的 Zydis 4.1.0 合并源码，linux-pe 以 git 子模块引入。另有一个次要的 Ubuntu 22.04 Dockerfile，用于构建并导出 Linux 版 lifter。
- docs/SCOPE.md 报告：119 个处理器中有 115 个由 Unicorn 生成的预言（oracle）测试集覆盖，CI 用 lli 运行 33 个语义样本共 177 个运行时用例，并检查黄金 IR 哈希和 Windows 构建；文档还指出，对受保护代码的可靠性随保护级别而异。README 的分支示例仍称不支持超过两个目标的跳转，而较新的范围文档已列出若干经测试的跳转表形态。这些检查针对项目自行编译的样本，不涵盖任意受保护软件。
- LICENSE 为 GPL-3.0；附带的 Zydis 源码和子模块保留各自的许可证。提升得到的 IR 仍需分析者核实。

## 一手来源

1. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/README.md>
2. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/docs/SCOPE.md>
3. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/docs/BUILDING.md>
4. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/docs/REWRITE_BASELINE.md>
5. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/ARCHITECTURE.md>
6. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/README.md#L181>
7. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/lifter/core/Utils.cpp>
8. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/Dockerfile>
9. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/.gitmodules>
10. <https://github.com/NaC-L/Mergen/blob/199805706ac00e156cc7e2a53ccc647c380f1786/LICENSE>
11. <https://github.com/NaC-L/Mergen/releases/tag/v0.7>

## 同分区更多条目：原生二进制

- [readpe（原名 pev）PE 文件分析工具集](https://awesomerea.org/zh/resources/readpe/index.md) · 工具
- [malware-jail JavaScript 恶意代码沙箱](https://awesomerea.org/zh/resources/malware-jail/index.md) · 工具
- [gxpc XPC 通信嗅探工具](https://awesomerea.org/zh/resources/gxpc/index.md) · 工具
- [Manticore 符号执行工具](https://awesomerea.org/zh/resources/manticore/index.md) · 工具
- [Ghidra Ninja Ghidra 脚本合集](https://awesomerea.org/zh/resources/ghidra-ninja-scripts/index.md) · 工具
- [FindCrypt Ghidra 版密码常量识别脚本](https://awesomerea.org/zh/resources/findcrypt-ghidra/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
