📄️ 安装
Obfuz的Unity Package Manager URL安装地址:
📄️ 设置
Obfuz提供了极其丰富的配置选项和灵活的混淆规则配置文件,以支持商业游戏项目的各种复杂的需求。
📄️ Editor菜单
|菜单|描述|
📄️ 程序集
程序集类型
📄️ 加密
加密是Obfuz的核心机制,绝大多数Obfuscation Pass都跟加密有关,原因如下:
📄️ 函数体混淆
函数体混淆实际叫代码混淆。Obufz中对函数体混淆的Obfuscation Pass有一些统一的规则,因此在本文档中单独介绍。
📄️ Obfuscation Pass
Obfuz支持多种混淆算法,混淆时会按照某个顺序依次执行每个混淆算法,最终输出混淆后的程序集。由于这些混淆算法是一趟趟执行的,我们称之为Obfuscation Pass。
📄️ Obfuz CustomAttributes
Obfuz提供了多种CustomAttribute,方便直接在代码中配置混淆规则。目前支持的CustomAttribute有:
📄️ 符号混淆
符号指的是程序集元带名字的元数据。符号混淆会将这些符号的名称替换为混淆名,同时修复所有引用了这个符号的元数据,确保引用正确性。
📄️ 常量加密
加密代码中出现的常量可以有效保护代码安全。
📄️ 字段加密
加密字段值可以有效阻止恶意攻击者使用内存篡改之类的手段,保护代码安全。
📄️ 函数调用混淆
函数调用混淆会混淆代码中调用函数(静态、成员、虚函数)的方式,反编译代码后无法直接知晓运行了哪个函数,有效保护了代码安全。
📄️ 构建过程中执行混淆
Obfuz会自动在Unity的构建过程中执行混淆操作。
📄️ 单独执行混淆
有时会需要在构造流程之外执行混淆。例如使用HybridCLR热更新后,希望发布热更新代码前对热更新代码执行混淆。
📄️ 增量混淆与代码热更新
Obfuz支持增量混淆,大多数Obfusaction Pass会尽力保持混淆的稳定性。
📄️ 与HybridCLR协同工作
HybridCLR工作流并未考虑到代码混淆的情况,如果直接使用会遇到一些问题。
📄️ 反射与序列化
符号混淆会修改各种元数据的名称。这使得通过名称去反射查找类型、函数、字段等信息会失败。
📄️ 还原混淆堆栈日志
混淆后代码中输出的日志中的函数堆栈是混淆后的名称,这给跟踪问题带来很大障碍。对照symbol mapping文件(文档见符号混淆)