|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEditor;
|
using System;
|
|
public class ConfusionModel
|
{
|
private string LS_KEY_RECONFUSION_MAP_FILE = Application.dataPath + "ReConfuseMapFile";
|
|
// 通过Assembly找到需要被混淆的ClassType
|
// 对这些ClassType的Field和Method根据配置建立索引
|
private const string PREV_FIX = "_";
|
private static int m_Seed = 0;
|
|
public string NewContent
|
{
|
get
|
{
|
return string.Format("{0}{1}", PREV_FIX, m_Seed++);
|
}
|
}
|
|
// 想要被混淆的文件夹路径
|
public Dictionary<string, ConfusionDirectoryInfo> confuseFileSourcePathDict = new Dictionary<string, ConfusionDirectoryInfo>();
|
|
// 类型对应的文件路径
|
public Dictionary<Type, string> typeToPathDict = new Dictionary<Type, string>();
|
// 类型里需要被混淆的变量或者方法名称对应列表
|
public Dictionary<Type, List<string>> confusionTypeDict = new Dictionary<Type, List<string>>();
|
// 记录类型里最终被混淆成了什么内容, 用于反混淆的时候替换
|
public Dictionary<Type, Dictionary<string, string>> confusionDict = new Dictionary<Type, Dictionary<string, string>>();
|
// 记录类型里最终被混淆成了什么内容, 用于反混淆的时候替换
|
public Dictionary<Type, Dictionary<string, string>> reConfusionDict = new Dictionary<Type, Dictionary<string, string>>();
|
// 通过反射搜集到的文件路径
|
public List<string> confusionScriptFilePath = new List<string>();
|
|
// 替换表生成路径
|
public string ReConfuseMapFileDir
|
{
|
get
|
{
|
return EditorPrefs.GetString(LS_KEY_RECONFUSION_MAP_FILE, Application.dataPath + "/ReConfusionMapFiles");
|
}
|
set
|
{
|
EditorPrefs.SetString(LS_KEY_RECONFUSION_MAP_FILE, value);
|
}
|
}
|
|
public ConfusionModel()
|
{
|
Reset();
|
}
|
|
public void Reset()
|
{
|
m_Seed = 0;
|
typeToPathDict.Clear();
|
confuseFileSourcePathDict.Clear();
|
confusionTypeDict.Clear();
|
confusionDict.Clear();
|
}
|
}
|