Commit Graph

72 Commits (b11336421418f39233dc3c8fd0c3c7ba8d121153)

Author SHA1 Message Date
walon b113364214 重构 ObfuzIgnore计算,使用 ObfuzIgnoreScopeComputeCache提升计算性能 2025-05-29 22:20:27 +08:00
walon 84ed5b127a 修复enabled pass计算的bug 2025-05-29 21:23:22 +08:00
walon 2312291040 修复计算assembly的obfuscation pass时总是使用默认值的bug 2025-05-29 20:59:12 +08:00
walon c3ed85fb3f - 不混淆`[Serializable]`类型的类型名
- 不混淆从MonoBehaviour和ScriptableObject继承或带`[Serializable]`的类型的public非静态成员字段和property
2025-05-29 16:16:32 +08:00
walon c173efe689 符号混淆开启debug情况下不读取但写入symbol-mapping-debug.xml文件,这样LinkXmlProcess中也能正确映射到混淆后的名字 2025-05-29 11:39:10 +08:00
walon 5ce7b9b5f4 当 symbol mapping文件不存在时跳过LinkXmlProcess 2025-05-29 11:07:29 +08:00
walon febb8c9fd8 修复计算虚函数名冲突域时只考虑到虚函数所定义的类,而未考虑到在整个类继承树内不冲突的bug 2025-05-29 09:20:40 +08:00
walon a6863b5089 常量加密支持array(byte[],int[],float[],int[,]等等) 2025-05-28 17:23:24 +08:00
walon 28ac98352d 构建过程中自动转换link.xml中原始的类型名为混淆后的名称,确保混淆后能正确保留类型 2025-05-28 12:00:07 +08:00
walon b85f3f54a0 优化UnityRenamePolicy,缓存计算结果,将整体混淆时间减少了一半左右 2025-05-28 10:11:48 +08:00
walon 620d695880 支持custom rename policy 2025-05-28 09:25:09 +08:00
walon ceb92fba40 符号混淆的规则文件中type规则新增hasCustomAttributes属性 2025-05-28 08:42:57 +08:00
walon cbd4f1ded9 symbol obfus规则支持type inherit过滤条件 2025-05-27 23:55:18 +08:00
walon 468ea6a343 修复 DOTSCompilerGenerated和BurstCompile判定没有用于method的bug 2025-05-27 22:50:05 +08:00
walon 94b9b7ee2f 缓存 UnityRenamePolicy::IsUnitySourceGeneratedAssemblyType的计算结果,优化性能 2025-05-27 22:21:24 +08:00
walon 77c6635eda 不混淆DOTS相关类型 2025-05-27 20:20:49 +08:00
walon 8f0a5bc0f2 修复默认混淆了DOTS生成的Unity.Entities.CodeGeneratedRegistry.AssemblyTypeRegistry类名,导致DOTS类型注册失败的Bug 2025-05-27 20:06:14 +08:00
walon 1b3c1c4958 symbol obfus规则中TypeSpec支持 applyToNestedTypes 属性 2025-05-27 19:02:18 +08:00
walon 22fca877f6 新增 符号混淆applyToMembers测试用例 2025-05-27 17:29:12 +08:00
walon 994e63966f 重构符号混淆的规则文件 2025-05-27 14:45:18 +08:00
walon f134b88c13 删除 ObfuzIgnoreAttribute.ApplyToMembers属性,因为没有必要,正常逻辑来说应该是ApplyToMembers 2025-05-27 10:28:34 +08:00
walon c1600f0f4d - Serializable类型名也会被混淆,但可序列化字段不会被混淆
- Obfuz.EncryptField类不会被混淆
- 必须是MonoBehaviour继承的类型中事件函数名才不会被混淆
2025-05-27 09:33:17 +08:00
walon 4ca7a53a1e 修改SystemRenamePolicy对Enum的value__字段的检查条件,由检查名字改为!field.IsStatic 2025-05-26 20:31:05 +08:00
walon b51893d154 ConstEncrypt不加密长度为0的字符串 2025-05-26 19:48:55 +08:00
walon 78699d7959 修复ObfuzIgnoreAttribute实现的bug 2025-05-26 19:22:55 +08:00
walon ad258e9c84 修复 symbol obfuscation rule文件中存在不在混淆列表的程序集时,BuildRuleResultCaches抛出空引用异常的bug 2025-05-26 17:24:23 +08:00
walon cd99a13562 change: ObfuzIgnoreAttribute的InheritByNestedTypes属性名改为ApplyToMembers 2025-05-25 12:42:38 +08:00
walon 9d77cfa269 调整symbol obfus的规则文件的规则定义 2025-05-25 12:28:54 +08:00
walon 702f20c6b0 修复FieldEncryption处理浮点类型时未插入castFloatAsInt指令,在il2cpp生成的代码为直接强转`(int)f`,运行结果错误的bug 2025-05-25 10:06:15 +08:00
walon c84d4bae5b 为泛型生成混淆名时仍然保留`{n}后缀,因为il2cpp会在typeof(G<T>)时出现问题 2025-05-25 08:40:53 +08:00
walon 6e989ccd36 修复当一个Type之前为不需要混淆名字,后面改为需要混淆时,仍然使用mapping文件中的newFullname作为新名字,而它的newFullname为空字符串串,导致il2cpp生成代码出现问题的严重bug。 2025-05-25 08:39:43 +08:00
walon e0da3da2bc RenameMethod时检查CustomAttribute 2025-05-25 08:20:33 +08:00
walon 882047eb6c MetaUtil::RetargetTypeRefInTypeSig 特殊处理来自mscorlib的类型,不再创建新的Class或ValueSig 2025-05-25 08:16:19 +08:00
walon b2ba676ec1 修复在Unity 2019上的编译错误 2025-05-24 12:55:53 +08:00
walon 1cd1b912ec 修复SymbolRename::CollectCArgumentWithTypeOf没考虑到NamedArgument有可能名称发生改变,仅仅判断了类型或者值是否可能包含类型引用,导致跳过收集 `[MyCustom(X=1)]`这样的属性的bug 2025-05-24 09:49:14 +08:00
walon b2d7637438 修复 VirtualMethodGroupCalculator没有考虑到某个类本身没有实现它的接口类的某个函数但它的父类实现了它的接口类的该函数时没有将接口的该函数和父类的该虚函数计算为一个Group的bug 2025-05-24 00:01:33 +08:00
walon 48f1dfe64a 修复RenameMethod未处理MethodImpl的bug 2025-05-23 23:06:18 +08:00
walon 647619943f 修复VirtualMethodGroup中仅包含非混淆程序集中函数时仍然试图改名的bug 2025-05-23 22:32:21 +08:00
walon f1a225cd81 修复 RenameRecordMap::InitAndAddRename初始化signature的bug 2025-05-23 22:11:41 +08:00
walon d64e57b370 修复虚函数分配名字未检查是否与每个虚函数所在类型其他函数冲突的严重bug 2025-05-23 20:40:54 +08:00
walon 5f4083066b 修复给虚函数分配名字时未考虑到不要与每个虚函数所在命名空间不冲突的bug 2025-05-23 19:48:55 +08:00
walon 5de469c4a6 修复 Obfuscator未检查AssembliesToObfuscate和nonObfuscatedButReferencingObfuscatedAssemblies列表存在空或者重复程序集名的问题 2025-05-23 19:47:43 +08:00
walon 28e276eda5 修复 MetaUtil::AppendIl2CppStackTraceNameOfTypeSig 无法处理TypedReference类型的bug 2025-05-23 19:46:44 +08:00
walon 41230aca29 修复BuildUnityAssemblySearchPaths的WebGL平台PlaybackEngine目录错误的bug。WebGL平台跟其他平台的路径规则不一样。 2025-05-23 12:54:08 +08:00
walon fb9ffae1e8 重构Obfuscator和Obfusacation Pass参数,不再直接传递Settings,而是传递SettingsFacade,简化大量参数复制代码 2025-05-23 12:47:57 +08:00
walon b6500147c2 CallObfusSettings新增maxProxyMethodCountPerDispatchMethod字段,设置每个dispatch函数中最多转发的函数个数 2025-05-23 12:01:04 +08:00
walon 3425abceb5 RvaData初始化时校验密钥的正确性,避免程序集混淆时使用的密钥与运行时加载的密钥不匹配的失误! 2025-05-23 11:45:37 +08:00
walon f5b45a0543 fix: 修复非混淆的程序集中虚函数override混淆程序集中函数,当基类虚函数名被混淆后没有同步修改非混淆程序集中override函数名的bug
remove: 删除 RenameRecordMap中维护parameter映射的代码
2025-05-23 11:13:45 +08:00
walon 4d8737f01c change: 如果类型中包含有`[RuntimeInitializeOnLoadMethod]`并且LoadType等于或者早于AfterAssembliesLoaded的函数,则类型的静态构造函数不混淆 2025-05-23 11:11:08 +08:00
walon d06caf5e38 change: SecretSettings.secretKeyOutputPath拆为staticSecretKeyOutputPath和dynamicSecretKeyOutputPath,方便单独指定每个key的输出路径 2025-05-23 11:09:27 +08:00