# CoBRA 混合布尔-算术表达式化简器

> Trail of Bits 开发的 C++23 混合布尔-算术（MBA）表达式化简器。MBA 是一种混淆技术，会把简单运算改写为算术、按位与移位运算交织的复杂形式。cobra-cli 接受一个表达式和 1 至 64 位的位宽，输出更简单的等价式：工作列表调度器组合签名向量与基变换技术、带常量掩码的半线性处理、多项式恢复、混合乘积分解和子表达式提升，每个结果都会用随机输入抽查，也可选用 Z3 做等价性证明。同一引擎还以库的形式提供，并可编译为 LLVM 优化遍插件，对其在 LLVM IR 中检测到的 MBA 表达式进行化简。

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

## 使用条件与局限

- 审阅时最新版本为 v1.3.0，发布于 2026-06-30，未附带预编译二进制。所审阅的 master 提交比该版本多八个提交：修改 README、升级 CI 依赖、改为仅在构建优化遍插件时才要求 LLVM，以及使 cobra-core 能用 MSVC 构建。
- 从源码构建需要 CMake 3.20+ 和 C++23 编译器（GCC 13+、Clang 17+ 或 Apple Clang 16+）；依赖超级构建会编译 Abseil 和 Highway，启用测试时还会编译 GoogleTest。LLVM 优化遍插件需要 LLVM 19 至 22，通过 opt 以 cobra-simplify 名称运行，仅在化简结果开销更低时才替换表达式，并会丢弃 nuw/nsw 标志。只有 CMake 找到 Z3 时才会编译 Z3 校验功能，否则 cobra-cli 会提示 --verify 被忽略。CI 每次都在 Ubuntu 24.04 上用 Clang 22 和 LLVM 22 构建，GCC 14 和 macOS 15 构建仅针对版本标签运行；Windows 不在 CI 范围内。
- cobra-cli 以文本形式接收混淆表达式，默认最多 16 个变量，因此二进制中的表达式须先借助其他工具恢复，或以 LLVM IR 形式交给优化遍处理。README 列出的已知局限包括：算术与按位运算深度交织、提升后仍耗尽工作列表预算的混合多项式 MBA；少数只在布尔输入上成立、因而被报告为校验失败的候选结果；以及不提供通用逻辑最小化。
- README 报告共有 1,195 项测试；DATASETS.md 报告，在来自七个来源、35 个数据集文件的 75,126 个可解析表达式中，有 75,023 个完成化简并通过抽查（99.86%）。OSES 子集因内存耗尽或每个表达式需耗时数分钟而被停用，其数字来自此前的一次运行；DATASETS.md 称这些数字在每次 CI 运行时都会核对，但所审阅的 CI 工作流排除了数据集基准测试。
- CoBRA 本身采用 Apache-2.0 许可。test/datasets 中的文件转载自第三方研究项目：THIRD_PARTY_LICENSES 将其中大部分列为实际适用 GPL-3.0-only，Loki 数据集为 AGPL-3.0-only，OSES 和 ObfuscatorX 数据集的许可证未说明或未知。

## 一手来源

1. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/README.md>
2. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/BUILD.md>
3. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/DATASETS.md>
4. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/THIRD_PARTY_LICENSES>
5. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/docs/methodology/README.md>
6. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/CMakeLists.txt>
7. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/tools/cobra-cli/main.cpp>
8. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/lib/llvm/CobraPass.cpp>
9. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/test/llvm/CMakeLists.txt>
10. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/.github/workflows/ci.yml>
11. <https://github.com/trailofbits/CoBRA/blob/af44b8ad7c8ec548d431463475e93b0118e77a29/LICENSE>
12. <https://github.com/trailofbits/CoBRA/releases/tag/v1.3.0>

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

- [ollvm-unflattener OLLVM 控制流平坦化去混淆工具](https://awesomerea.org/zh/resources/ollvm-unflattener/index.md) · 工具
- [GolangAnalyzerExtension Ghidra Go 分析扩展](https://awesomerea.org/zh/resources/ghidra-golanganalyzerextension/index.md) · 工具
- [IDA iOS Helper iOS 逆向辅助插件](https://awesomerea.org/zh/resources/ida-ios-helper/index.md) · 工具
- [MAMBO 动态二进制修改框架](https://awesomerea.org/zh/resources/mambo/index.md) · 工具
- [Class Informer MSVC RTTI 类信息插件](https://awesomerea.org/zh/resources/class-informer/index.md) · 工具
- [Kam1n0 汇编代码克隆搜索平台](https://awesomerea.org/zh/resources/kam1n0/index.md) · 工具

## 关于此条目

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