支持增量混淆,mapping.xml中程序集不在当前混淆的程序集列表中时,仍然保留这些配置信息
parent
080a414f34
commit
399b2ccee6
|
@ -2,8 +2,7 @@
|
|||
"name": "Obfuz",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"GUID:167b4b7f91c16bb4183f7298af665076",
|
||||
"GUID:d6548fbf155e392419f0f6a6dcf078d9"
|
||||
"GUID:167b4b7f91c16bb4183f7298af665076"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
|
|
|
@ -2,6 +2,7 @@ using dnlib.DotNet;
|
|||
using Obfuz.Rename;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
@ -413,6 +414,22 @@ namespace Obfuz
|
|||
}
|
||||
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);
|
||||
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)
|
||||
{
|
||||
if (!_fieldRenames.TryGetValue(field, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
|
@ -460,6 +508,15 @@ namespace Obfuz
|
|||
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)
|
||||
{
|
||||
if (!_propertyRenames.TryGetValue(property, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
|
@ -473,6 +530,15 @@ namespace Obfuz
|
|||
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)
|
||||
{
|
||||
if (!_eventRenames.TryGetValue(eventDef, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
|
@ -485,6 +551,14 @@ namespace Obfuz
|
|||
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)
|
||||
{
|
||||
if (!_methodRenames.TryGetValue(method, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
|
@ -505,6 +579,19 @@ namespace Obfuz
|
|||
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)
|
||||
{
|
||||
if (!_paramRenames.TryGetValue(param, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
|
@ -518,6 +605,15 @@ namespace Obfuz
|
|||
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)
|
||||
{
|
||||
RenameRecord record = _modRenames[mod];
|
||||
|
|
|
@ -59,6 +59,10 @@ namespace Obfuz.Rename
|
|||
{
|
||||
return false;
|
||||
}
|
||||
if (typeDef.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -68,6 +72,10 @@ namespace Obfuz.Rename
|
|||
{
|
||||
return !s_monoBehaviourEvents.Contains(methodDef.Name);
|
||||
}
|
||||
if (methodDef.DeclaringType.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -78,6 +86,10 @@ namespace Obfuz.Rename
|
|||
{
|
||||
return !MetaUtil.IsSerializableField(fieldDef);
|
||||
}
|
||||
if (fieldDef.DeclaringType.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,7 +51,9 @@ namespace Obfuz
|
|||
{
|
||||
string filePath = SettingsPath;
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "com.code-philosophy.obfuz",
|
||||
"version": "7.9.0",
|
||||
"version": "1.0.0-beta",
|
||||
"displayName": "Obfuz",
|
||||
"description": "Obfuz is a powerful code obfuscation tool designed specifically for Unity projects.",
|
||||
"category": "Editor",
|
||||
|
|
Loading…
Reference in New Issue