mcpField
L
llvm-obfuscation

llvm-obfuscation

github.com/gmh5225安全890114 次安装4 周前更新
代码仓库

关于 llvm-obfuscation

面向开发者的 LLVM 代码混淆参考技能,介绍软件保护与阻碍逆向分析的技术。内容涵盖常见变换、相关框架、自定义 Pass 指引、工具链集成及实现权衡。

主要功能

  1. 01控制流混淆技术
  2. 02数据与字符串混淆
  3. 03指令替换与虚拟化
  4. 04OLLVM 框架概览
  5. 05自定义 LLVM Pass 指引
  6. 06工具链集成参考

适用场景

  1. 01评估代码库的混淆方案
  2. 02规划 LLVM 混淆 Pass 实现
  3. 03比较 OLLVM 框架能力
  4. 04将混淆集成到编译工具链

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gmh5225/awesome-llvm-security --skill llvm-obfuscation

安装后在 Claude Code 中输入/llvm-obfuscation确认已加载。

详细介绍

LLVM 代码混淆技能

此技能全面介绍基于 LLVM 的代码混淆框架和技术,用于软件保护和反逆向工程。

核心混淆技术

控制流混淆
  • 控制流扁平化(CFF):将结构化控制流转换为带状态机的单一分发循环
  • 伪控制流(BCF):插入不透明谓词和死代码路径
  • CFG 随机化:随机排列基本块顺序并添加虚假边
数据混淆
  • 字符串加密:在编译时加密字符串字面量,并在运行时解密
  • 常量替换:用复杂表达式替换常量
  • 变量拆分:将变量拆分为多个组成部分
代码转换
  • 指令替换:用等效的复杂指令序列替换标准指令
  • MBA(混合布尔-算术):使用混合布尔-算术表达式进行混淆
  • 虚拟化(VMP):将代码转换为由内嵌 VM 执行的自定义字节码

主要 OLLVM 框架

经典 OLLVM
现代变体
  • Hikari:高级功能,包括函数包装器、反 class-dump
  • Pluto-Obfuscator:维护良好,支持 MBA、间接分支、全局加密
  • Arkari:具备增强功能的现代实现
  • o-mvll:面向 iOS/Android 的移动端混淆器
专用工具
  • IR VMP:GANGE666/xVMP、NiTianErXing666/SmallVmp,用于虚拟化
  • Warbird:Microsoft 的商业混淆技术

实现指南

创建自定义 LLVM 混淆 Pass
#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"

class MyObfuscationPass : public llvm::FunctionPass {
public:
    static char ID;
    MyObfuscationPass() : FunctionPass(ID) {}
    
    bool runOnFunction(llvm::Function &F) override {
        // Implement obfuscation logic
        for (auto &BB : F) {
            for (auto &I : BB) {
                // Transform instructions
            }
        }
        return true;
    }
};
最佳实践
  1. 保留语义:确保转换不会破坏程序正确性
  2. 随机化:使用带种子的随机数生成器,以确保构建可复现
  3. 分层方法:组合多种混淆技术
  4. 性能平衡:权衡运行时开销与保护级别
  5. 测试:针对不同输入和平台进行全面测试

工具链集成

NDK 集成
  • 将 OLLVM 与 Android NDK(r17-r23+)搭配使用
  • 示例:android-ndk-aarch64-host-LLVM6.0-Ollvm-Armariris
编译器工具链
  • ollvm-mingw:Windows 交叉编译
  • ollvm-rust:Rust 工具链集成
  • Swift 集成:swift-Ollvm11

反反混淆注意事项

实现混淆时:

  • 考虑抵御符号执行(SymCC、KLEE)的能力
  • 添加针对模式匹配反混淆工具的防护
  • 实现反调试检查
  • 使用动态分派阻碍静态分析

资源

请参阅主 README.md,获取 OLLVM 实现和相关工具的完整列表。

获取详细信息

需要获取详细且最新的资源链接、工具列表或项目参考时,请从以下位置获取最新数据:

https://raw.githubusercontent.com/gmh5225/awesome-llvm-security/refs/heads/main/README.md

此 README 包含精心整理的完整列表:

  • 80+ 个 OLLVM 实现和分支(OLLVM 部分)
  • MSVC Warbird 混淆工具(MSVC Warbird 部分)
  • 基于 IR 的 VMP 和虚拟化项目
  • 不同版本的 NDK 集成示例

评论

支持 Markdown