lich4/awesome-ollvm
GitHub: lich4/awesome-ollvm
收录了主流 OLLVM 混淆器实现及 IDA Pro 去混淆插件的精选列表,是代码混淆与逆向去混淆领域的实用参考索引。
Stars: 59 | Forks: 10
## 优秀的 OLLVM 列表
- [Obfuscator](#obfuscator)
- [Hikari](#Hikari)
- [Pluto](#Pluto)
- [goron](#goron)
- [O-MVLL](#O-MVLL)
- [VMP](#VMP)
### Obfuscator
[https://github.com/obfuscator-llvm/obfuscator](https://github.com/obfuscator-llvm/obfuscator)
最早的公开 Obfuscator-LLVM 实现,支持 LLVM 3.3~4.0。功能特性:
* 指令替换
* 虚假控制流
* 控制流平坦化
### Hikari
[https://github.com/HikariObfuscator/Hikari](https://github.com/HikariObfuscator/Hikari)
Hikari,支持 LLVM 6~8。功能特性(除 Obfuscator 外新增):
* Anti Class Dump (反类转储)
* 函数调用混淆
* 函数包装器
* 间接分支
* 基本块拆分
* 字符串加密
~~[https://github.com/61bcdefg/Hikari-LLVM15](https://github.com/61bcdefg/Hikari-LLVM15)~~
Hikari-LLVM15,基于 Hikari,支持 LLVM 15~19,目前闭源。功能特性(除 Hikari 外新增):
* 反调试
* Anti Hook (反 Hook)
* 常量加密
### goron
[https://github.com/amimo/goron](https://github.com/amimo/goron)
goron,支持 LLVM 7~10。功能特性(除 Obfuscator 外新增):
* 间接分支
* 间接调用
* 间接全局变量
[https://github.com/komimoe/Hikari](https://github.com/komimoe/Hikari)
Arkari,基于 goron,支持 LLVM 14~最新版。
⚠️ **注意:Goron 风格(Goron/Arkari)的间接相关混淆可以通过将数据段设置为只读来轻松去混淆。**
### Pluto
[https://github.com/bluesadi/Pluto](https://github.com/bluesadi/Pluto)
Pluto,支持 LLVM 14。功能特性(除 Obfuscator 外新增):
* MBA 混淆
* 随机控制流
* 基本块拆分
* Trap Angr (陷阱 Angr)
[https://github.com/za233/Polaris-Obfuscator](https://github.com/za233/Polaris-Obfuscator)
Polaris(原 Pluto),支持 LLVM16。功能特性(除 Obfuscator 外新增):
* 别名访问
* 间接分支
* 间接调用
* 字符串加密
* 合并函数
* 线性 MBA
* 污染字节插入 (MIR 层级)
* 函数拆分 (MIR 层级)
* 垃圾指令插入 (MIR 层级)
* 指令替换 (MIR 层级)
### O-MVLL
* [https://github.com/open-obfuscator/o-mvll](https://github.com/open-obfuscator/o-mvll)
O-MVLL 是一个基于 LLVM 的混淆器,由 Python 和 LLVM pass manager 驱动。功能特性(除 Obfuscator 外新增):
* Anti Hooking (反 Hook)
* 算术混淆 (MBA 混淆)
* 基本块复制
* 控制流断开
* 函数外联 (函数包装器)
* 间接分支
* 间接调用
* 不透明常量 (常量加密)
### amice
* [https://github.com/fuqiuluo/amice](https://github.com/fuqiuluo/amice)
Obfuscator-LLVM (OLLVM) pass 的 Rust 实现
* 字符串加密
* 间接调用混淆
* 间接分支混淆
* 基本块拆分
* Switch Lowering (Switch 降低)
* VM 平坦化
* 控制流平坦化
* MBA 算术混淆
* 虚假控制流
* 函数包装器
* 克隆函数 (常量特化)
* 别名访问混淆
* 自定义调用约定
* 延迟偏移加载 (AMA)
* 反类导出
* 参数聚合 (PAO)
* 指令虚拟化
* 函数外联 (BB2FUNC)
### VMP
* [https://github.com/NiTianErXing666/SmallVmp](https://github.com/NiTianErXing666/SmallVmp)
* [https://github.com/25077667/VMPilot](https://github.com/25077667/VMPilot)
* [https://github.com/GANGE666/xVMP](https://github.com/GANGE666/xVMP)
* [https://github.com/LeoChen-CoreMind/VMPacker](https://github.com/LeoChen-CoreMind/VMPacker)
## 优秀的 IDA 去混淆插件列表
- [AI](#AI)
- [Ctree](#Ctree)
- [Decryption](#Decryption)
- [Lifting](#Lifting)
- [MBA](#MBA)
- [Microcode](#Microcode)
- [OLLVM](#OLLVM)
- [VMP](#VMP)
### AI
* [aiDAPal](https://github.com/atredispartners/aidapal). 使用本地运行的、针对 Hex-Rays 伪代码微调过的 LLM 来辅助代码分析。
* [Gepetto](https://github.com/JusticeRage/Gepetto). 查询语言模型以加速逆向工程。
* [ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp). AI 驱动的逆向工程助手,通过 MCP 桥接 IDA Pro 与语言模型。
* [IDAssist](https://github.com/symgraph/IDAssist). 用于 IDA Pro 的 AI 驱动逆向工程插件。
* [IDAssistMCP](https://github.com/symgraph/IDAssistMCP). 独立的 IDA Pro MCP 服务器插件。
* [reverser_ai](https://github.com/mrphrazer/reverser_ai). 通过在消费级硬件上使用本地大型语言模型 (LLM) 提供自动化的逆向工程协助。
* [Rikugan](https://github.com/buzzer-re/Rikugan). 用于 IDA Pro 和 Binary Ninja 的逆向工程 Agent。
* [WPeChatGPT](https://github.com/WPeace-HcH/WPeChatGPT). 基于 OpenAI 和 DeepSeek 等常用 AI 大模型分析二进制文件。
其他有用的仓库:
* [BinAssist](https://github.com/symgraph/BinAssist). 提供 LLM 辅助分析二进制文件的 Binary Ninja 插件。
* [BinAssistMCP](https://github.com/symgraph/BinAssistMCP). 提供 MCP 功能的 Binary Ninja 插件。
* [GhidrAssist](https://github.com/symgraph/GhidrAssist). 用于 Ghidra 的 LLM 扩展,在逆向工程中启用 AI 协助。
* [GhidrAssistMCP](https://github.com/symgraph/GhidrAssistMCP). 用于 Ghidra 的 MCP 扩展。
* [GhidraMCP](https://github.com/LaurieWired/GhidraMCP). Ghidra 的 MCP 服务器。
* [LLM4Decompile](https://github.com/albertan017/LLM4Decompile). 逆向工程:使用大型语言模型反编译二进制代码。
* [RevEng.AI Ghidra](https://github.com/RevEngAI/plugin-ghidra). RevEng.AI Ghidra 插件。
### Ctree
* [herast](https://github.com/Mizari/herast). 自动化处理 IDA Pro 中 AST 的框架。
* [HexRaysCodeXplorer](https://github.com/REhints/HexRaysCodeXplorer). 用于更好代码导航的 Hex-Rays 反编译器插件。
* [HexraysToolbox](https://github.com/patois/HexraysToolbox). 在 Hexrays ctree 中查找代码模式。
* [HrDevHelper](https://github.com/patois/HRDevHelper). HexRays ctree 可视化插件。
* [strikeout](https://github.com/allthingsida/strikeout). 用于修补 Ctree 的 Hex-Rays 反编译器插件。
### 解密
* [AntiXorstr](https://github.com/lstaroth/AntiXorstr). 此插件用于还原 Xorstr。
* [xorstr-decrypt](https://github.com/yubie-re/ida-jm-xorstr-decrypt-plugin). 尝试在某些 x64 二进制文件中解密 JM Xorstr。
### 提升
* [HyRES](https://github.com/Sandspeare/HyRES). HyRES 是一种创新的混合推理技术,结合了静态分析、大型语言模型 (LLM) 和启发式方法,从剥离的二进制文件中恢复数据结构。
* [IDA2LLVM](https://github.com/Sandspeare/ida2llvm). 将微码 (IDA IR) 提升为 LLVM IR。
* [IDA2LLVM](https://github.com/loyaltypollution/ida2llvm). 动态二进制提升 IDA 代码到 LLVM IR。
其他有用的仓库:
* [Anvill](https://github.com/lifting-bits/anvill). anvill 从原始机器码中生成精美的 LLVM bitcode。
* [Llvm-mctoll](https://github.com/Microsoft/llvm-mctoll). 此工具静态 (AOT) 将二进制文件翻译(或提升)为 LLVM IR。
* [McSema](https://github.com/lifting-bits/mcsema). 将 x86、amd64、aarch64、sparc32 和 sparc64 程序二进制文件提升为 LLVM bitcode 的框架。
* [Miasm](https://github.com/cea-sec/miasm). Python 逆向工程框架。
* [Rellume](https://github.com/aengelke/rellume). 将机器码提升为高性能 LLVM IR。
* [RetDec](https://github.com/avast/retdec). RetDec 是一个基于 LLVM 的可重定目标机器码反编译器。
* [rev.ng](https://github.com/revng/revng). rev.ng 二进制分析框架和反编译器。
### MBA
* [D-810](https://gitlab.com/eshard/d810). 通过修改 IDA Pro 微码在反编译时进行去混淆。
* [gooMBA](https://github.com/HexRaysSA/goomba). 简化混合布尔算术 (MBA) 表达式。
其他有用的仓库:
* [GAMBA](https://github.com/DenuvoSoftwareSolutions/GAMBA). 简化通用混合布尔算术表达式。
* [msynth](https://github.com/mrphrazer/msynth). 用于简化混合布尔算术 (MBA) 表达式的代码去混淆框架。
* [POCKET](https://github.com/seekbytes/pocket). 混合布尔算术表达式混淆器。
* [SiMBA](https://github.com/DenuvoSoftwareSolutions/SiMBA). 高效去混淆线性混合布尔算术表达式。
* [sspam](https://github.com/quarkslab/sspam). 基于模式匹配的符号化简。
### Microcode
* [genmc](https://github.com/patois/genmc). 显示 Hex-Rays 微码。
* [Lucid](https://github.com/gaasedelen/lucid). 交互式 Hex-Rays 微码浏览器。
### OLLVM
* [AntiOllvm](https://github.com/IIIImmmyyy/AntiOllvm). 带有虚假运行时的 AntiOllvm Fla。
* [D-810](https://gitlab.com/eshard/d810). 通过修改 IDA Pro 微码在反编译时进行去混淆。
* [deflat](https://github.com/cq674350529/deflat)
* [HexRaysDeob](https://github.com/RolfRolles/HexRaysDeob). 用于对抗混淆编译器的插件。
* [hrtng](https://github.com/KasperskyLab/hrtng). 具有丰富功能的 IDA Pro 插件:解密、去混淆、打补丁、库代码识别以及各种伪代码转换。
* [MODeflattener](https://github.com/mrT4ntr4/MODeflattener). MODeflattener 使用 Miasm 去混淆被 OLLVM 混淆的控制流平坦化函数。
* [ObfDetect](https://github.com/mcdulltii/obfDetect). 用于精确定位混淆代码的 IDA 插件。
* [obpo-plugin](https://github.com/obpo-project/obpo-plugin). 一个 OLLVM-CFF 去混淆插件。
* [ollvm-unflattener](https://github.com/cdong1012/ollvm-unflattener). Obfuscator-llvm 控制流平坦化去混淆器。
* [Stadeo](https://github.com/eset/stadeo). 控制流平坦化和字符串去混淆器。
### VMP
* [NoVmpy](https://github.com/wallds/NoVmpy). 概念验证,基于 VTIL 驱动的 VMProtect x64 3.x 静态去虚拟化 IDA 集成工具。
* [VMAttack](https://github.com/anatolikalysch/VMAttack). 使用旨在对抗基于虚拟化的混淆的额外分析功能。
标签:C++, C2, Hikari, IDA, LLVM, OLLVM, Pluto, VMP, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码混淆, 反逆向, 可视化界面, 字符串加密, 指令替换, 控制流平坦化, 数据擦除, 编译器扩展, 网络安全, 虚假控制流, 软件保护, 逆向工具, 逆向工程, 隐私保护, 静态分析