版本升级说明
本文档介绍当前版本(v4.x)相对于上一个版本(v3.x)的改动,以及升级时需要注意的事项。
旧版本的文档仍然可以通过页面右上角的版本下拉框切换到 v3.x 查看。
改动概览
| 改动 | 影响 |
|---|---|
| 移除了多态dll的支持 | 使用了多态dll的工程需要移除相关配置与构建流程 |
禁用了代码水印(WaterMark) | 开启该pass不会生效 |
obfuz4hybridclr要求HybridCLR v9.0.0+ | 低版本HybridCLR的工程需要升级,或继续使用obfuz4hybridclr v3.x |
移除了多态dll的支持
v4.0.0移除了多态dll(Polymorphic Dll)功能,obfuz与obfuz4hybridclr中相关的代码、设置和代码生成模板均已删除。
具体来说:
ObfuzSettings中不再有PolymorphicDllSettings,即原先的Enable、Code Generation Secret Key、Disable Load Standard Dll等选项全部不再存在。- obfuz4hybridclr不再生成多态dll相关的C++代码(
PolymorphicRawImage等)。
如何升级
- 如果你的工程没有开启多态dll,则不需要做任何事情。
- 如果你的工程开启了多态dll,升级后相关设置会自动失效。请检查你的构建脚本,移除对多态dll相关接口的调用;同时清理
HybridCLRData目录下由旧版本生成的多态dll相关的C++文件,避免残留文件导致il2cpp编译失败。 - 如果你仍然依赖多态dll功能,请继续使用obfuz
v3.x版本。
多态dll的文档参见v3.x版本文档中的多态dll。
禁用了代码水印
代码水印pass已被禁用,即使在ObfuscationPasses中开启WaterMark也不会生效。
原因是在某些特殊指令位置插入指令会导致il2cpp.exe执行失败,例如在ldtoken与RuntimeHelpers.InitializeArray调用之间插入指令。
WatermarkSettings中的设置依然保留,但不会产生任何效果。
如何升级
无需修改配置。
obfuz4hybridclr要求HybridCLR v9.0.0+
obfuz4hybridclr自v4.0.0版本起,仅支持HybridCLR v9.0.0及以上版本。
HybridCLR v9.0.0调整了构建流程相关的接口,obfuz4hybridclr v4.0.0已适配新接口,因此不再兼容更低版本的HybridCLR。
如何升级
二者选其一:
- 将HybridCLR升级到
v9.0.0及以上版本,然后使用obfuz4hybridclrv4.x。 - 保持HybridCLR为低版本,继续使用obfuz4hybridclr
v3.x。
注意obfuz与obfuz4hybridclr的大版本号需要保持一致,即obfuz4hybridclr v4.x需要配合obfuz v4.x使用。
详细文档见与HybridCLR协同工作。
补充说明:执行栈混淆早已被禁用
这不是v4.x的改动,但v3.x的文档中未作说明,因此在这里补充。
执行栈混淆pass自v3.0.0版本起就已被禁用,即使在ObfuscationPasses中开启EvalStackObfus也不会生效。
原因是该pass的性价比过低:它会显著增大混淆后的程序集体积,但带来的逆向难度提升有限。如果后续无法优化,该功能可能会被彻底移除。
EvalStackObfusSettings中的设置依然保留,但不会产生任何效果。无需修改配置。如果你希望进一步提高混淆强度,建议改用表达式混淆与控制流混淆。