- Serializable类型名也会被混淆,但可序列化字段不会被混淆

- Obfuz.EncryptField类不会被混淆
- 必须是MonoBehaviour继承的类型中事件函数名才不会被混淆
before-split
walon 2025-05-27 09:33:17 +08:00
parent 4ca7a53a1e
commit c1600f0f4d
3 changed files with 11 additions and 16 deletions

View File

@ -7,7 +7,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies
{
private bool IsFullIgnoreObfuscatedType(TypeDef typeDef)
{
return typeDef.FullName == "Obfuz.ObfuzIgnoreAttribute" || typeDef.FullName == "Obfuz.ObfuzScope";
return typeDef.FullName == "Obfuz.ObfuzIgnoreAttribute" || typeDef.FullName == "Obfuz.ObfuzScope" || typeDef.FullName == "Obfuz.EncryptFieldAttribute";
}
public override bool NeedRename(TypeDef typeDef)

View File

@ -141,7 +141,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies
public override bool NeedRename(TypeDef typeDef)
{
if (MetaUtil.IsScriptOrSerializableType(typeDef))
if (MetaUtil.IsScriptType(typeDef))
{
return false;
}
@ -163,7 +163,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies
public override bool NeedRename(MethodDef methodDef)
{
TypeDef typeDef = methodDef.DeclaringType;
if (MetaUtil.IsInheritFromUnityObject(typeDef) && s_monoBehaviourEvents.Contains(methodDef.Name))
if (MetaUtil.IsInheritFromMonoBehaviour(typeDef) && s_monoBehaviourEvents.Contains(methodDef.Name))
{
return false;
}

View File

@ -116,7 +116,7 @@ namespace Obfuz.Utils
return null;
}
public static bool IsInheritFromUnityObject(TypeDef typeDef)
public static bool IsInheritFromMonoBehaviour(TypeDef typeDef)
{
TypeDef cur = typeDef;
while (true)
@ -126,7 +126,7 @@ namespace Obfuz.Utils
{
return false;
}
if (cur.Name == "Object" && cur.Namespace == "UnityEngine" && cur.Module.Name == "UnityEngine.CoreModule.dll")
if (cur.Name == "MonoBehaviour" && cur.Namespace == "UnityEngine" && cur.Module.Name == "UnityEngine.CoreModule.dll")
{
return true;
}
@ -134,18 +134,8 @@ namespace Obfuz.Utils
}
public static bool IsScriptOrSerializableType(TypeDef type)
public static bool IsScriptType(TypeDef type)
{
if (type.ContainsGenericParameter)
{
return false;
}
if (type.IsSerializable)
{
return true;
}
for (TypeDef parentType = GetBaseTypeDef(type); parentType != null; parentType = GetBaseTypeDef(parentType))
{
if ((parentType.Name == "MonoBehaviour" || parentType.Name == "ScriptableObject")
@ -159,6 +149,11 @@ namespace Obfuz.Utils
return false;
}
public static bool IsScriptOrSerializableType(TypeDef type)
{
return type.IsSerializable || IsScriptType(type);
}
public static bool IsSerializableTypeSig(TypeSig typeSig)
{
typeSig = typeSig.RemovePinnedAndModifiers();