支持增量混淆,mapping.xml中程序集不在当前混淆的程序集列表中时,仍然保留这些配置信息
parent
080a414f34
commit
399b2ccee6
|
@ -2,8 +2,7 @@
|
||||||
"name": "Obfuz",
|
"name": "Obfuz",
|
||||||
"rootNamespace": "",
|
"rootNamespace": "",
|
||||||
"references": [
|
"references": [
|
||||||
"GUID:167b4b7f91c16bb4183f7298af665076",
|
"GUID:167b4b7f91c16bb4183f7298af665076"
|
||||||
"GUID:d6548fbf155e392419f0f6a6dcf078d9"
|
|
||||||
],
|
],
|
||||||
"includePlatforms": [
|
"includePlatforms": [
|
||||||
"Editor"
|
"Editor"
|
||||||
|
|
|
@ -2,6 +2,7 @@ using dnlib.DotNet;
|
||||||
using Obfuz.Rename;
|
using Obfuz.Rename;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
@ -413,6 +414,22 @@ namespace Obfuz
|
||||||
}
|
}
|
||||||
root.AppendChild(assemblyNode);
|
root.AppendChild(assemblyNode);
|
||||||
}
|
}
|
||||||
|
foreach (RenameMappingAssembly ass in _assemblies.Values)
|
||||||
|
{
|
||||||
|
if (_modRenames.Keys.Any(m => m.Assembly.Name == ass.oldAssName))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var assemblyNode = doc.CreateElement("assembly");
|
||||||
|
assemblyNode.SetAttribute("name", ass.oldAssName);
|
||||||
|
assemblyNode.SetAttribute("newName", ass.status == RenameStatus.Renamed ? ass.newAssName : "");
|
||||||
|
assemblyNode.SetAttribute("status", ass.status.ToString());
|
||||||
|
foreach (var e in ass.types)
|
||||||
|
{
|
||||||
|
WriteTypeMapping(assemblyNode, e.Key, e.Value);
|
||||||
|
}
|
||||||
|
root.AppendChild(assemblyNode);
|
||||||
|
}
|
||||||
doc.Save(_mappingFile);
|
doc.Save(_mappingFile);
|
||||||
Debug.Log($"Mapping file saved to {Path.GetFullPath(_mappingFile)}");
|
Debug.Log($"Mapping file saved to {Path.GetFullPath(_mappingFile)}");
|
||||||
}
|
}
|
||||||
|
@ -447,6 +464,37 @@ namespace Obfuz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void WriteTypeMapping(XmlElement assNode, string fullName, RenameMappingType type)
|
||||||
|
{
|
||||||
|
var typeNode = assNode.OwnerDocument.CreateElement("type");
|
||||||
|
typeNode.SetAttribute("fullName", fullName);
|
||||||
|
typeNode.SetAttribute("newFullName", type.status == RenameStatus.Renamed ? type.newFullName : "");
|
||||||
|
typeNode.SetAttribute("status", type.status.ToString());
|
||||||
|
|
||||||
|
foreach (var e in type.fields)
|
||||||
|
{
|
||||||
|
string signature = e.Key;
|
||||||
|
RenameMappingField field = e.Value;
|
||||||
|
WriteFieldMapping(typeNode, e.Key, e.Value);
|
||||||
|
}
|
||||||
|
foreach (var e in type.properties)
|
||||||
|
{
|
||||||
|
WritePropertyMapping(typeNode, e.Key, e.Value);
|
||||||
|
}
|
||||||
|
foreach (var e in type.events)
|
||||||
|
{
|
||||||
|
WriteEventMapping(typeNode, e.Key, e.Value);
|
||||||
|
}
|
||||||
|
foreach (var e in type.methods)
|
||||||
|
{
|
||||||
|
WriteMethodMapping(typeNode, e.Key, e.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
assNode.AppendChild(typeNode);
|
||||||
|
}
|
||||||
|
|
||||||
private void WriteFieldMapping(XmlElement typeEle, FieldDef field)
|
private void WriteFieldMapping(XmlElement typeEle, FieldDef field)
|
||||||
{
|
{
|
||||||
if (!_fieldRenames.TryGetValue(field, out var record) || record.status == RenameStatus.NotRenamed)
|
if (!_fieldRenames.TryGetValue(field, out var record) || record.status == RenameStatus.NotRenamed)
|
||||||
|
@ -460,6 +508,15 @@ namespace Obfuz
|
||||||
typeEle.AppendChild(fieldNode);
|
typeEle.AppendChild(fieldNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WriteFieldMapping(XmlElement typeEle, string signature, RenameMappingField field)
|
||||||
|
{
|
||||||
|
var fieldNode = typeEle.OwnerDocument.CreateElement("field");
|
||||||
|
fieldNode.SetAttribute("signature", signature);
|
||||||
|
fieldNode.SetAttribute("newName", field.newName);
|
||||||
|
//fieldNode.SetAttribute("status", record.status.ToString());
|
||||||
|
typeEle.AppendChild(fieldNode);
|
||||||
|
}
|
||||||
|
|
||||||
private void WritePropertyMapping(XmlElement typeEle, PropertyDef property)
|
private void WritePropertyMapping(XmlElement typeEle, PropertyDef property)
|
||||||
{
|
{
|
||||||
if (!_propertyRenames.TryGetValue(property, out var record) || record.status == RenameStatus.NotRenamed)
|
if (!_propertyRenames.TryGetValue(property, out var record) || record.status == RenameStatus.NotRenamed)
|
||||||
|
@ -473,6 +530,15 @@ namespace Obfuz
|
||||||
typeEle.AppendChild(propertyNode);
|
typeEle.AppendChild(propertyNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WritePropertyMapping(XmlElement typeEle, string signature, RenameMappingProperty property)
|
||||||
|
{
|
||||||
|
var propertyNode = typeEle.OwnerDocument.CreateElement("property");
|
||||||
|
propertyNode.SetAttribute("signature", signature);
|
||||||
|
propertyNode.SetAttribute("newName", property.newName);
|
||||||
|
//propertyNode.SetAttribute("status", record.status.ToString());
|
||||||
|
typeEle.AppendChild(propertyNode);
|
||||||
|
}
|
||||||
|
|
||||||
private void WriteEventMapping(XmlElement typeEle, EventDef eventDef)
|
private void WriteEventMapping(XmlElement typeEle, EventDef eventDef)
|
||||||
{
|
{
|
||||||
if (!_eventRenames.TryGetValue(eventDef, out var record) || record.status == RenameStatus.NotRenamed)
|
if (!_eventRenames.TryGetValue(eventDef, out var record) || record.status == RenameStatus.NotRenamed)
|
||||||
|
@ -485,6 +551,14 @@ namespace Obfuz
|
||||||
typeEle.AppendChild(eventNode);
|
typeEle.AppendChild(eventNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WriteEventMapping(XmlElement typeEle, string signature, RenameMappingEvent eventDef)
|
||||||
|
{
|
||||||
|
var eventNode = typeEle.OwnerDocument.CreateElement("event");
|
||||||
|
eventNode.SetAttribute("signature", signature);
|
||||||
|
eventNode.SetAttribute("newName", eventDef.newName);
|
||||||
|
typeEle.AppendChild(eventNode);
|
||||||
|
}
|
||||||
|
|
||||||
private void WriteMethodMapping(XmlElement typeEle, MethodDef method)
|
private void WriteMethodMapping(XmlElement typeEle, MethodDef method)
|
||||||
{
|
{
|
||||||
if (!_methodRenames.TryGetValue(method, out var record) || record.status == RenameStatus.NotRenamed)
|
if (!_methodRenames.TryGetValue(method, out var record) || record.status == RenameStatus.NotRenamed)
|
||||||
|
@ -505,6 +579,19 @@ namespace Obfuz
|
||||||
typeEle.AppendChild(methodNode);
|
typeEle.AppendChild(methodNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WriteMethodMapping(XmlElement typeEle, string signature, RenameMappingMethod method)
|
||||||
|
{
|
||||||
|
var methodNode = typeEle.OwnerDocument.CreateElement("method");
|
||||||
|
methodNode.SetAttribute("signature", signature);
|
||||||
|
methodNode.SetAttribute("newName", method.newName);
|
||||||
|
//methodNode.SetAttribute("status", record != null ? record.status.ToString() : RenameStatus.NotRenamed.ToString());
|
||||||
|
foreach (RenameMappingMethodParam param in method.parameters)
|
||||||
|
{
|
||||||
|
WriteMethodParamMapping(methodNode, param);
|
||||||
|
}
|
||||||
|
typeEle.AppendChild(methodNode);
|
||||||
|
}
|
||||||
|
|
||||||
private void WriteMethodParamMapping(XmlElement methodEle, ParamDef param)
|
private void WriteMethodParamMapping(XmlElement methodEle, ParamDef param)
|
||||||
{
|
{
|
||||||
if (!_paramRenames.TryGetValue(param, out var record) || record.status == RenameStatus.NotRenamed)
|
if (!_paramRenames.TryGetValue(param, out var record) || record.status == RenameStatus.NotRenamed)
|
||||||
|
@ -518,6 +605,15 @@ namespace Obfuz
|
||||||
methodEle.AppendChild(paramNode);
|
methodEle.AppendChild(paramNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WriteMethodParamMapping(XmlElement methodEle, RenameMappingMethodParam param)
|
||||||
|
{
|
||||||
|
var paramNode = methodEle.OwnerDocument.CreateElement("param");
|
||||||
|
paramNode.SetAttribute("index", param.index.ToString());
|
||||||
|
paramNode.SetAttribute("newName", param.newName);
|
||||||
|
//paramNode.SetAttribute("status", record.status.ToString());
|
||||||
|
methodEle.AppendChild(paramNode);
|
||||||
|
}
|
||||||
|
|
||||||
public void AddRename(ModuleDefMD mod, string newName)
|
public void AddRename(ModuleDefMD mod, string newName)
|
||||||
{
|
{
|
||||||
RenameRecord record = _modRenames[mod];
|
RenameRecord record = _modRenames[mod];
|
||||||
|
|
|
@ -59,6 +59,10 @@ namespace Obfuz.Rename
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (typeDef.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,6 +72,10 @@ namespace Obfuz.Rename
|
||||||
{
|
{
|
||||||
return !s_monoBehaviourEvents.Contains(methodDef.Name);
|
return !s_monoBehaviourEvents.Contains(methodDef.Name);
|
||||||
}
|
}
|
||||||
|
if (methodDef.DeclaringType.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +86,10 @@ namespace Obfuz.Rename
|
||||||
{
|
{
|
||||||
return !MetaUtil.IsSerializableField(fieldDef);
|
return !MetaUtil.IsSerializableField(fieldDef);
|
||||||
}
|
}
|
||||||
|
if (fieldDef.DeclaringType.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,9 @@ namespace Obfuz
|
||||||
{
|
{
|
||||||
string filePath = SettingsPath;
|
string filePath = SettingsPath;
|
||||||
var arr = InternalEditorUtility.LoadSerializedFileAndForget(filePath);
|
var arr = InternalEditorUtility.LoadSerializedFileAndForget(filePath);
|
||||||
s_Instance = arr.Length > 0 ? arr[0] as ObfuzSettings : CreateInstance<ObfuzSettings>();
|
//Debug.Log($"typeof arr:{arr?.GetType()} arr[0]:{(arr != null && arr.Length > 0 ? arr[0].GetType(): null)}");
|
||||||
|
|
||||||
|
s_Instance = arr != null && arr.Length > 0 ? (ObfuzSettings)arr[0] : CreateInstance<ObfuzSettings>();
|
||||||
return s_Instance;
|
return s_Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "com.code-philosophy.obfuz",
|
"name": "com.code-philosophy.obfuz",
|
||||||
"version": "7.9.0",
|
"version": "1.0.0-beta",
|
||||||
"displayName": "Obfuz",
|
"displayName": "Obfuz",
|
||||||
"description": "Obfuz is a powerful code obfuscation tool designed specifically for Unity projects.",
|
"description": "Obfuz is a powerful code obfuscation tool designed specifically for Unity projects.",
|
||||||
"category": "Editor",
|
"category": "Editor",
|
||||||
|
|
Loading…
Reference in New Issue