作茧,不是自缚,每一根丝的加持,都是为了保护!
Cocoons 是一个基于 LLVM (当前基于 LLVM 21.1.8) 的自定义编译工具链。通过在编译期(IR 层)对代码进行变换,有效增加逆向工程(静态分析、动态调试)的难度,从而保护 iOS / macOS 应用程序的核心逻辑和敏感数据。
- C/OC 字符串混淆 (String Obfuscation):
- 动态流加密:编译期生成随机种子并对标记字符串进行流加密,连同
\0一并混淆,彻底免疫字频分析。 - 局部使用时解密 (Just-in-Time Decryption):摒弃了传统的启动时全局解密,转而在每个字符串的调用处利用栈(Stack)动态分配并解密。实现“阅后即焚”,彻底防御全量内存 Dump 并发竞争,且实现零“脏内存”增长。
- 常量特征混淆:解密循环中的密钥与长度均通过数学拆解隐藏,避免逆向工具提取解密逻辑。
- 兼容 C 数组、C 指针及 Objective-C 的
NSString(内部支持 OC 字符串去重合并处理)。
- 动态流加密:编译期生成随机种子并对标记字符串进行流加密,连同
- 指令替换 (Instruction Substitution):
- 拦截并替换 5 种基础二元运算(加法、减法、按位与、按位或、按位异或)。
- 随机调度机制:为每种运算提供多种等价的复杂数学位运算规则,每次编译随机选取,确保生成的二进制特征多态。
- 多轮递归膨胀:支持指定混淆深度,对替换后生成的新指令进行二次或多次替换,令代码体积与理解成本呈指数级上升。
- 控制流平坦化 (Control Flow Flattening):打乱原有的代码执行逻辑,将所有基本块放入一个巨大的状态机(
switch-case)中循环执行,极大提高控制流图(CFG)的复杂度。(已在源码中实现) - 反调试 (Anti-Debugging):计划中。
$ git clone https://github.com/sweetloser/Cocoons.git确保您的 macOS 环境已安装 CMake 和 Ninja。进入项目根目录并执行构建脚本:
$ cd Cocoons
$ ./build.sh编译完成后,LLVM 工具链将被安装到系统的 Toolchains 目录中(通常在 ~/Library/Developer/Toolchains/ 或 /Library/Developer/Toolchains/)。
- 重启 Xcode。
- 在顶部菜单栏中选择:
Xcode->Toolchains-> 选择org.llvm.21.1.8(或类似名称的自定义工具链)。
在 Xcode 项目的 Build Settings -> Other C Flags 中,添加 -mllvm 并在其后紧跟开启功能的参数。
配置参数:Other C Flags 添加 -mllvm -cocoons-enable-str
为了兼顾性能,Cocoons 采用注解驱动的混淆方式,只对您标记的字符串进行加密。在代码中使用 __attribute__((annotate("obfuscate"))) 标记目标字符串:
// C 字符数组混淆
__attribute__((annotate("obfuscate"))) const char c_const_array[] = "C Array Hello World!";
// C 字符串指针混淆
__attribute__((annotate("obfuscate"))) const char *c_const_string = "C String Hello World!";
// Objective-C 字符串混淆
__attribute__((annotate("obfuscate"))) NSString *ocConstString = @"OC String Hello World!";配置参数:
Other C Flags添加-mllvm -cocoons-enable-sub(开启功能)。- (可选) 添加
-mllvm -cocoons-sub-loop=N指定混淆深度,N默认为1。
开启后,编译器将自动寻找并替换代码中的常见二元算术指令,若开启多轮循环(如 loop=2),生成的新指令将被再次混淆替换。
配置参数:Other C Flags 添加 -mllvm -cocoons-enable-fla
开启后,编译器会将函数内部的控制流转化为复杂的状态机。
最近更新
| 版本 | 发布时间 | LLVM 版本 | 更新内容 |
|---|---|---|---|
| 1.0.1 | 2026-02-10 | 21.1.8 | 修复字符串混淆在多 module 下的 bug |
历史记录
| 版本 | 发布时间 | LLVM 版本 | 更新内容 |
|---|---|---|---|
| v1.0.1 | 2026-02-10 | 21.1.8 | 修复多模块 Bug |
| v1.0.0 | 2026-02-09 | 21.1.8 | 增加 C/OC 字符串混淆及加法指令替换 |
| 混淆前 (IDA 视角) | 混淆后 (IDA 视角) |
|---|---|
![]() |
![]() |
| 混淆前 (CFG/伪代码) | 混淆后 (CFG/伪代码) |
|---|---|
![]() |
![]() |
如果您觉得 Cocoons 对您有帮助,欢迎点击右上角给一个 ★ Star!




