代码水印
注意
自v4.0.0版本起,代码水印pass已被禁用,即使在ObfuscationPasses中开启WaterMark也不会生效。
原因是在某些特殊指令位置插入指令(例如在ldtoken与RuntimeHelpers.InitializeArray调用之间插入指令)会导致il2cpp.exe执行失败。
Obfuz往混淆后的程序集元数据中注入特殊的元数据及特定指令序列,形成可标识的水印特征。
代码水印的目标
- 版权标识:证明该代码是由你生成或授权发布的。
- 溯源追踪:用于标记不同用户或不同授权方生成的代码,若泄露可追查来源。
- 抗混淆还原:即使代码经过再次混淆或部分还原,水印仍可在某种程度上保留。
设置
ObfuzSettings.WatermarkSettings中包含相关设置,详细见文档设置。
水印标识类别
注入以下特殊水印标识:
- rva数据中注入水印Hash签名
- 生成特殊规则的类型及函数及字段
- 代码体中注入特定指令序列