diff --git a/Editor/ObfuscateUtil.cs b/Editor/ObfuscateUtil.cs index 4296676..1fee99d 100644 --- a/Editor/ObfuscateUtil.cs +++ b/Editor/ObfuscateUtil.cs @@ -19,8 +19,7 @@ // SOFTWARE. using dnlib.DotNet; -using dnlib.DotNet.PolymorphicWriter; -using HybridCLR.Editor; +using HybridCLR; using Obfuz; using Obfuz.Settings; using Obfuz.Unity; @@ -101,38 +100,5 @@ namespace Obfuz4HybridCLR Obfuscator obfuz = builder.Build(); obfuz.Run(); } - - public static void GeneratePolymorphicDll(string originalDllPath, string outputDllPath) - { - ModuleDef oldMod = ModuleDefMD.Load(originalDllPath); - var obfuzSettings = ObfuzSettings.Instance; - - var opt = new NewDllModuleWriterOptions(oldMod) - { - MetadataWriter = new PolymorphicMetadataWriter(obfuzSettings.polymorphicDllSettings.codeGenerationSecretKey), - }; - PolymorphicModuleWriter writer = new PolymorphicModuleWriter(oldMod, opt); - writer.Write(outputDllPath); - Debug.Log($"GeneratePolymorphicDll {originalDllPath} => {outputDllPath}"); - } - - public static void GeneratePolymorphicCodes(string libil2cppDir) - { - PolymorphicDllSettings settings = ObfuzSettings.Instance.polymorphicDllSettings; - if (!settings.enable) - { - UnityEngine.Debug.LogWarning("Polymorphic code generation is disabled in Obfuz settings."); - return; - } - var options = new PolymorphicCodeGenerator.Options - { - GenerationSecretKey = settings.codeGenerationSecretKey, - Libil2cppDir = libil2cppDir, - TemplateDir = ObfuscateUtil.TemplatePathInPackage, - DisableLoadStandardDll = settings.disableLoadStandardDll, - }; - var generator = new PolymorphicCodeGenerator(options); - generator.Generate(); - } } } diff --git a/Editor/Polymorphic.meta b/Editor/Polymorphic.meta deleted file mode 100644 index 6a8a589..0000000 --- a/Editor/Polymorphic.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 52d353fb8d6d94c4aa03452a2cd9773f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Editor/Polymorphic/PolymorphicCodeGenerator.cs b/Editor/Polymorphic/PolymorphicCodeGenerator.cs deleted file mode 100644 index 58eb050..0000000 --- a/Editor/Polymorphic/PolymorphicCodeGenerator.cs +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright 2025 Code Philosophy -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using dnlib.DotNet.PolymorphicWriter; -using HybridCLR.Editor.Installer; -using HybridCLR.Editor.Template; - -public class PolymorphicCodeGenerator -{ - public class Options - { - public string GenerationSecretKey { get; set; } - - public string Libil2cppDir { get; set; } - - public string TemplateDir { get; set; } - - public bool DisableLoadStandardDll { get; set; } = true; - } - - private readonly string _libil2cppDir; - private readonly string _metadataDir; - private readonly string _templateDir; - - private readonly string _generationSecretKey; - private readonly bool _disableLoadStandardImage; - - private readonly PolymorphicMetadataWriter writer; - - public PolymorphicCodeGenerator(Options options) - { - _libil2cppDir = options.Libil2cppDir; - _metadataDir = Path.Combine(_libil2cppDir, "hybridclr", "metadata"); - _templateDir = options.TemplateDir; - - _generationSecretKey = options.GenerationSecretKey; - _disableLoadStandardImage = options.DisableLoadStandardDll; - - writer = new PolymorphicMetadataWriter(_generationSecretKey); - } - - private void CopyMetadataReaderHeader() - { - string srcFile = $"{_templateDir}/MetadataReader.h.tpl"; - string dstFile = $"{_metadataDir}/MetadataReader.h"; - File.Copy(srcFile, dstFile, true); - UnityEngine.Debug.Log($"Copy MetadataReader header from {srcFile} to {dstFile}"); - } - - private void GeneratePolymorphicDefs() - { - string tplFile = $"{_templateDir}/PolymorphicDefs.h.tpl"; - var frr = new FileRegionReplace(File.ReadAllText(tplFile, Encoding.UTF8)); - var lines = new List(); - lines.Add($"#define POLYMORPHIC_IMAGE_SIGNATURE \"{writer.ImageSignature}\""); - lines.Add($"\tconstexpr uint32_t kPolymorphicImageVersion = {writer.FormatVersion};"); - lines.Add($"\tconstexpr uint32_t kFormatVariantVersion = {writer.FormatVariant};"); - string codes = string.Join("\n", lines); - frr.Replace("POLYMORPHIC_DEFINES", codes); - - string outputFile = $"{_metadataDir}/PolymorphicDefs.h"; - frr.Commit(outputFile); - } - - private void GeneratePolymorphicDatas() - { - string tplFile = $"{_templateDir}/PolymorphicDatas.h.tpl"; - var frr = new FileRegionReplace(File.ReadAllText(tplFile, Encoding.UTF8)); - List lines = new List(); - var sb = new StringBuilder(); - foreach (var type in writer.GetPolymorphicTypes()) - { - var polymorphicType = writer.GetPolymorphicClassDef(type); - lines.Add($"\tstruct {type.Name}"); - lines.Add("\t{"); - foreach (var field in polymorphicType.Fields) - { - lines.Add($"\t\t{field.fieldWriter.CppTypeName} {field.name};"); - } - - lines.Add("\t\tvoid Read(MetadataReader& reader)"); - lines.Add("\t\t{"); - - foreach (var field in polymorphicType.Fields) - { - lines.Add($"\t\t\t{field.fieldWriter.GetMarshalCode(field.name, "reader")};"); - } - lines.Add("\t\t}"); - lines.Add("\t};"); - lines.Add(""); - } - - string codes = string.Join("\n", lines); - frr.Replace("POLYMORPHIC_DATA", codes); - - - string outputFile = $"{_metadataDir}/PolymorphicDatas.h"; - frr.Commit(outputFile); - } - - private void GeneratePolymorphicRawImageHeader() - { - string tplFile = $"{_templateDir}/PolymorphicRawImage.h.tpl"; - var frr = new FileRegionReplace(File.ReadAllText(tplFile, Encoding.UTF8)); - - - var tableMetaInfoMap = TableMetaInfos.tableMetaInfos.ToDictionary(t => "Raw" + t.csharpTypeName + "Row"); - List lines = new List(); - foreach (Type rowType in writer.GetPolymorphicTableRowTypes()) - { - TableMetaInfo table = tableMetaInfoMap[rowType.Name]; - - lines.Add($"\t\tvirtual Tb{table.cppTypeName} Read{table.cppTypeName}(uint32_t rawIndex) override;"); - } - - frr.Replace("READ_TABLES_OVERRIDES", string.Join("\n", lines)); - - string outputFile = $"{_metadataDir}/PolymorphicRawImage.h"; - frr.Commit(outputFile); - } - - private void GeneratePolymorphicRawImageSource() - { - string tplFile = $"{_templateDir}/PolymorphicRawImage.cpp.tpl"; - var frr = new FileRegionReplace(File.ReadAllText(tplFile, Encoding.UTF8)); - - var tableMetaInfoMap = TableMetaInfos.tableMetaInfos.ToDictionary(t => "Raw" + t.csharpTypeName + "Row"); - { - List lines = new List(); - - foreach (Type rowType in writer.GetAllTableRowTypes()) - { - TableMetaInfo table = tableMetaInfoMap[rowType.Name]; - PolymorphicClassDef polymorphicClassDef = writer.CreateTableRowClassDefForCodeGeneration(rowType); - lines.Add("\t\t{"); - lines.Add($"\t\t\tauto& table = _tableRowMetas[(int)TableType::{table.cppEnumName}];"); - foreach (var fieldDef in polymorphicClassDef.Fields) - { - FieldMetaInfo field = table.fields.First(f => f.csharpName == fieldDef.name); - lines.Add($"\t\t\ttable.push_back({{{field.cppRowSize}}});"); - } - lines.Add("\t\t}"); - } - string codes = string.Join("\n", lines); - frr.Replace("TABLE_ROW_METADS", codes); - } - { - List lines = new List(); - foreach (Type rowType in writer.GetPolymorphicTableRowTypes()) - { - TableMetaInfo table = tableMetaInfoMap[rowType.Name]; - PolymorphicClassDef polymorphicClassDef = writer.CreateTableRowClassDefForCodeGeneration(rowType); - - lines.Add($"\tTb{table.cppTypeName} PolymorphicRawImage::Read{table.cppTypeName}(uint32_t rawIndex)"); - lines.Add("\t{"); - lines.Add($"\t\tIL2CPP_ASSERT(rawIndex > 0 && rawIndex <= GetTable(TableType::{table.cppEnumName}).rowNum);"); - lines.Add($"\t\tconst byte* rowPtr = GetTableRowPtr(TableType::{table.cppEnumName}, rawIndex);"); - lines.Add($"\t\tauto& rowSchema = GetRowSchema(TableType::{table.cppEnumName});"); - lines.Add($"\t\tTb{table.cppTypeName} data;"); - for (int i = 0; i < polymorphicClassDef.Fields.Count; i++) - { - var fieldDef = polymorphicClassDef.Fields[i]; - FieldMetaInfo field = table.fields.First(f => f.csharpName == fieldDef.name); - lines.Add($"\t\tdata.{field.cppName} = ReadColumn(rowPtr, rowSchema[{i}]);"); - } - lines.Add("\t\treturn data;"); - lines.Add("\t}"); - } - - frr.Replace("READ_TABLES_IMPLEMENTATIONS", string.Join("\n", lines)); - } - string outputFile = $"{_metadataDir}/PolymorphicRawImage.cpp"; - frr.Commit(outputFile); - } - - private void GenerateRawImageInit() - { - string tplFile = $"{_metadataDir}/Image.cpp"; - var frr = new FileRegionReplace(File.ReadAllText(tplFile, Encoding.UTF8)); - - { - List lines = new List(); - lines.Add(@"#include ""PolymorphicRawImage.h"""); - - frr.Replace("INCLUDE_RAW_IMAGE_HEADERS", string.Join("\n", lines)); - } - { - List lines = new List(); - - lines.Add("\t\tif (std::strncmp((const char*)imageData, \"CODEPHPY\", 8) == 0)"); - lines.Add("\t\t{"); - lines.Add("\t\t\t_rawImage = new PolymorphicRawImage();"); - lines.Add("\t\t}"); - lines.Add("\t\telse"); - lines.Add("\t\t{"); - if (_disableLoadStandardImage) - { - lines.Add("\t\t\treturn LoadImageErrorCode::UNKNOWN_IMAGE_FORMAT;"); - } - else - { - lines.Add("\t\t\t_rawImage = new RawImage();"); - } - lines.Add("\t\t}"); - lines.Add("\t\treturn LoadImageErrorCode::OK;"); - - frr.Replace("INIT_RAW_IMAGE", string.Join("\n", lines)); - } - - - frr.Commit(tplFile); - } - - public void Generate() - { - var installerController = new InstallerController(); - if (new Version(installerController.PackageVersion) < new Version(8, 4, 0)) - { - throw new Exception("Polymorphic code generation requires com.code-philosophy.hybridclr package version 8.4.0 or higher."); - } - - CopyMetadataReaderHeader(); - GeneratePolymorphicDefs(); - GeneratePolymorphicDatas(); - GeneratePolymorphicRawImageHeader(); - GeneratePolymorphicRawImageSource(); - GenerateRawImageInit(); - } -} diff --git a/Editor/Polymorphic/PolymorphicCodeGenerator.cs.meta b/Editor/Polymorphic/PolymorphicCodeGenerator.cs.meta deleted file mode 100644 index 6d7baec..0000000 --- a/Editor/Polymorphic/PolymorphicCodeGenerator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b66b21680bfc8744682ea6536aa2ec77 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Editor/Polymorphic/TableMetaInfos.cs b/Editor/Polymorphic/TableMetaInfos.cs deleted file mode 100644 index fa68849..0000000 --- a/Editor/Polymorphic/TableMetaInfos.cs +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright 2025 Code Philosophy -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -using System.Collections.Generic; - -class FieldMetaInfo { - public readonly string csharpName; - public readonly string cppName; - public readonly string cppRowSize; - public FieldMetaInfo(string csharpName, string cppName, string cppRowSize) { - this.csharpName = csharpName; - this.cppName = cppName; - this.cppRowSize = cppRowSize; - } - - public FieldMetaInfo(string csharpName, string cppRowSize) : this(csharpName, csharpName.Substring(0, 1).ToLower() + csharpName.Substring(1), cppRowSize) { - } -} - -class TableMetaInfo { - public readonly string csharpTypeName; - public readonly string cppTypeName; - public readonly string cppEnumName; - public readonly List fields; - - public TableMetaInfo(string csharpTypeName, string cppTypeName, string cppEnumName, List fields) { - this.csharpTypeName = csharpTypeName; - this.cppTypeName = cppTypeName; - this.cppEnumName = cppEnumName; - this.fields = fields; - } - - - public TableMetaInfo(string csharpTypeName, List fields) : this(csharpTypeName, csharpTypeName, csharpTypeName.ToUpper(), fields) { - } -} - -class TableMetaInfos { - public static readonly List tableMetaInfos = new List { - new TableMetaInfo("Module", new List { - new FieldMetaInfo("Generation", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Mvid", "ComputGUIDIndexByte()"), - new FieldMetaInfo("EncId", "ComputGUIDIndexByte()"), - new FieldMetaInfo("EncBaseId", "ComputGUIDIndexByte()"), - }), - new TableMetaInfo("TypeRef", new List { - new FieldMetaInfo("ResolutionScope", "ComputTableIndexByte(TableType::MODULE, TableType::MODULEREF, TableType::ASSEMBLYREF, TableType::TYPEREF, TagBits::ResoulutionScope)"), - new FieldMetaInfo("Name", "typeName", "ComputStringIndexByte()"), - new FieldMetaInfo("Namespace", "typeNamespace", "ComputStringIndexByte()"), - }), - new TableMetaInfo("TypeDef", new List { - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("Name", "typeName", "ComputStringIndexByte()"), - new FieldMetaInfo("Namespace", "typeNamespace", "ComputStringIndexByte()"), - new FieldMetaInfo("Extends", "ComputTableIndexByte(TableType::TYPEDEF, TableType::TYPEREF, TableType::TYPESPEC, TagBits::TypeDefOrRef)"), - new FieldMetaInfo("FieldList", "ComputTableIndexByte(TableType::FIELD)"), - new FieldMetaInfo("MethodList", "ComputTableIndexByte(TableType::METHOD)"), - }), - new TableMetaInfo("FieldPtr", new List { - new FieldMetaInfo("Field", "ComputTableIndexByte(TableType::FIELD)"), - }), - new TableMetaInfo("Field", new List { - new FieldMetaInfo("Flags", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("MethodPtr", new List { - new FieldMetaInfo("Method", "ComputTableIndexByte(TableType::METHOD)"), - }), - new TableMetaInfo("Method", new List { - new FieldMetaInfo("RVA", "rva", "4"), - new FieldMetaInfo("ImplFlags", "2"), - new FieldMetaInfo("Flags", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - new FieldMetaInfo("ParamList", "ComputTableIndexByte(TableType::PARAM)"), - }), - new TableMetaInfo("ParamPtr", new List { - new FieldMetaInfo("Param", "ComputTableIndexByte(TableType::PARAM)"), - }), - new TableMetaInfo("Param", new List { - new FieldMetaInfo("Flags", "2"), - new FieldMetaInfo("Sequence", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - }), - new TableMetaInfo("InterfaceImpl", new List { - new FieldMetaInfo("Class", "classIdx", "ComputTableIndexByte(TableType::TYPEDEF)"), - new FieldMetaInfo("Interface", "interfaceIdx", "ComputTableIndexByte(TableType::TYPEDEF, TableType::TYPEREF, TableType::TYPESPEC, TagBits::TypeDefOrRef)"), - }), - new TableMetaInfo("MemberRef", new List { - new FieldMetaInfo("Class", "classIdx", "ComputTableIndexByte(TableType::METHOD, TableType::MODULEREF, TableType::TYPEDEF, TableType::TYPEREF, TagBits::MemberRefParent)"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("Constant", new List { - new FieldMetaInfo("Type", "1"), - new FieldMetaInfo("Padding", "1"), - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::PARAM, TableType::FIELD, TableType::PROPERTY, TagBits::HasConstant)"), - new FieldMetaInfo("Value", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("CustomAttribute", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(HasCustomAttributeAssociateTables, sizeof(HasCustomAttributeAssociateTables) / sizeof(TableType), TagBits::HasCustomAttribute)"), - new FieldMetaInfo("Type", "ComputTableIndexByte(TableType::METHOD, TableType::MEMBERREF, TagBits::CustomAttributeType)"), - new FieldMetaInfo("Value", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("FieldMarshal", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::FIELD, TableType::PARAM, TagBits::HasFieldMarshal)"), - new FieldMetaInfo("NativeType", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("DeclSecurity", new List { - new FieldMetaInfo("Action", "2"), - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::TYPEDEF, TableType::METHOD, TableType::ASSEMBLY, TagBits::HasDeclSecurity)"), - new FieldMetaInfo("PermissionSet", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("ClassLayout", new List { - new FieldMetaInfo("PackingSize", "2"), - new FieldMetaInfo("ClassSize", "4"), - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::TYPEDEF)"), - }), - new TableMetaInfo("FieldLayout", new List { - new FieldMetaInfo("OffSet", "offset", "4"), - new FieldMetaInfo("Field", "ComputTableIndexByte(TableType::FIELD)"), - }), - new TableMetaInfo("StandAloneSig", new List { - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("EventMap", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::TYPEDEF)"), - new FieldMetaInfo("EventList", "ComputTableIndexByte(TableType::EVENT)"), - }), - new TableMetaInfo("EventPtr", new List { - new FieldMetaInfo("Event", "ComputTableIndexByte(TableType::EVENT)"), - }), - new TableMetaInfo("Event", new List { - new FieldMetaInfo("EventFlags", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("EventType", "ComputTableIndexByte(TableType::TYPEDEF, TableType::TYPEREF, TableType::TYPESPEC, TagBits::TypeDefOrRef)"), - }), - new TableMetaInfo("PropertyMap", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::TYPEDEF)"), - new FieldMetaInfo("PropertyList", "ComputTableIndexByte(TableType::PROPERTY)"), - }), - new TableMetaInfo("PropertyPtr", new List { - new FieldMetaInfo("Property", "ComputTableIndexByte(TableType::PROPERTY)"), - }), - new TableMetaInfo("Property", new List { - new FieldMetaInfo("PropFlags", "flags", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Type", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("MethodSemantics", new List { - new FieldMetaInfo("Semantic", "semantics", "2"), - new FieldMetaInfo("Method", "ComputTableIndexByte(TableType::METHOD)"), - new FieldMetaInfo("Association", "ComputTableIndexByte(TableType::EVENT, TableType::PROPERTY, TagBits::HasSemantics)"), - }), - new TableMetaInfo("MethodImpl", new List { - new FieldMetaInfo("Class", "classIdx", "ComputTableIndexByte(TableType::TYPEDEF)"), - new FieldMetaInfo("MethodBody", "ComputTableIndexByte(TableType::METHOD, TableType::MEMBERREF, TagBits::MethodDefOrRef)"), - new FieldMetaInfo("MethodDeclaration", "ComputTableIndexByte(TableType::METHOD, TableType::MEMBERREF, TagBits::MethodDefOrRef)"), - }), - new TableMetaInfo("ModuleRef", new List { - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - }), - new TableMetaInfo("TypeSpec", new List { - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("ImplMap", new List { - new FieldMetaInfo("MappingFlags", "2"), - new FieldMetaInfo("MemberForwarded", "ComputTableIndexByte(TableType::FIELD, TableType::METHOD, TagBits::MemberForwarded)"), - new FieldMetaInfo("ImportName", "ComputStringIndexByte()"), - new FieldMetaInfo("ImportScope", "ComputTableIndexByte(TableType::MODULEREF)"), - }), - new TableMetaInfo("FieldRVA", new List { - new FieldMetaInfo("RVA", "rva", "4"), - new FieldMetaInfo("Field", "ComputTableIndexByte(TableType::FIELD)"), - }), - new TableMetaInfo("ENCLog","EncLog", "ENCLOG", new List { - new FieldMetaInfo("Token", "4"), - new FieldMetaInfo("FuncCode", "4"), - }), - new TableMetaInfo("ENCMap", "EncMap", "ENCMAP", new List { - new FieldMetaInfo("Token", "4"), - }), - new TableMetaInfo("Assembly", new List { - new FieldMetaInfo("HashAlgId", "4"), - new FieldMetaInfo("MajorVersion", "2"), - new FieldMetaInfo("MinorVersion", "2"), - new FieldMetaInfo("BuildNumber", "2"), - new FieldMetaInfo("RevisionNumber", "2"), - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("PublicKey", "ComputBlobIndexByte()"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Locale", "ComputStringIndexByte()"), - }), - new TableMetaInfo("AssemblyProcessor", new List { - new FieldMetaInfo("Processor", "4"), - }), - new TableMetaInfo("AssemblyOS", new List { - new FieldMetaInfo("OSPlatformId", "osPlatformId", "4"), - new FieldMetaInfo("OSMajorVersion", "osMajorVersion", "4"), - new FieldMetaInfo("OSMinorVersion", "osMinorVersion", "4"), - }), - new TableMetaInfo("AssemblyRef", new List { - new FieldMetaInfo("MajorVersion", "2"), - new FieldMetaInfo("MinorVersion", "2"), - new FieldMetaInfo("BuildNumber", "2"), - new FieldMetaInfo("RevisionNumber", "2"), - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("PublicKeyOrToken", "ComputBlobIndexByte()"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Locale", "ComputStringIndexByte()"), - new FieldMetaInfo("HashValue", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("AssemblyRefProcessor", new List { - new FieldMetaInfo("AssemblyRef", "4"), - new FieldMetaInfo("Processor", "ComputTableIndexByte(TableType::ASSEMBLYREF)"), - }), - new TableMetaInfo("AssemblyRefOS", new List { - new FieldMetaInfo("OSPlatformId", "osPlatformId", "4"), - new FieldMetaInfo("OSMajorVersion", "osMajorVersion", "4"), - new FieldMetaInfo("OSMinorVersion", "osMinorVersion", "4"), - new FieldMetaInfo("AssemblyRef", "ComputTableIndexByte(TableType::ASSEMBLYREF)"), - }), - new TableMetaInfo("File", new List { - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("HashValue", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("ExportedType", new List { - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("TypeDefId", "4"), - new FieldMetaInfo("TypeName", "ComputStringIndexByte()"), - new FieldMetaInfo("TypeNamespace", "ComputStringIndexByte()"), - new FieldMetaInfo("Implementation", "ComputTableIndexByte(TableType::FILE, TableType::EXPORTEDTYPE, TableType::ASSEMBLY, TagBits::Implementation)"), - }), - new TableMetaInfo("ManifestResource", new List { - new FieldMetaInfo("Offset", "4"), - new FieldMetaInfo("Flags", "4"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Implementation", "ComputTableIndexByte(TableType::FILE, TableType::ASSEMBLYREF, TagBits::Implementation)"), - }), - new TableMetaInfo("NestedClass", new List { - new FieldMetaInfo("NestedClass", "ComputTableIndexByte(TableType::TYPEDEF)"), - new FieldMetaInfo("EnclosingClass", "ComputTableIndexByte(TableType::TYPEDEF)"), - }), - new TableMetaInfo("GenericParam", new List { - new FieldMetaInfo("Number", "2"), - new FieldMetaInfo("Flags", "2"), - new FieldMetaInfo("Owner", "ComputTableIndexByte(TableType::TYPEDEF, TableType::METHOD, TagBits::TypeOrMethodDef)"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - }), - new TableMetaInfo("MethodSpec", new List { - new FieldMetaInfo("Method", "ComputTableIndexByte(TableType::METHOD, TableType::MEMBERREF, TagBits::MethodDefOrRef)"), - new FieldMetaInfo("Instantiation", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("GenericParamConstraint", new List { - new FieldMetaInfo("Owner", "ComputTableIndexByte(TableType::GENERICPARAM)"), - new FieldMetaInfo("Constraint", "ComputTableIndexByte(TableType::TYPEDEF, TableType::TYPEREF, TableType::TYPESPEC, TagBits::TypeDefOrRef)"), - }), - - new TableMetaInfo("Document", new List { - new FieldMetaInfo("Name", "ComputBlobIndexByte()"), - new FieldMetaInfo("HashAlgorithm", "ComputGUIDIndexByte()"), - new FieldMetaInfo("Hash", "ComputBlobIndexByte()"), - new FieldMetaInfo("Language", "ComputGUIDIndexByte()"), - }), - new TableMetaInfo("MethodDebugInformation", new List { - new FieldMetaInfo("Document", "ComputTableIndexByte(TableType::DOCUMENT)"), - new FieldMetaInfo("SequencePoints", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("LocalScope", new List { - new FieldMetaInfo("Method", "ComputTableIndexByte(TableType::METHOD)"), - new FieldMetaInfo("ImportScope", "ComputTableIndexByte(TableType::IMPORTSCOPE)"), - new FieldMetaInfo("VariableList", "variables", "ComputTableIndexByte(TableType::LOCALVARIABLE)"), - new FieldMetaInfo("ConstantList", "constants", "ComputTableIndexByte(TableType::LOCALCONSTANT)"), - new FieldMetaInfo("StartOffset", "4"), - new FieldMetaInfo("Length", "4"), - }), - new TableMetaInfo("LocalVariable", new List { - new FieldMetaInfo("Attributes", "2"), - new FieldMetaInfo("Index", "2"), - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - }), - new TableMetaInfo("LocalConstant", new List { - new FieldMetaInfo("Name", "ComputStringIndexByte()"), - new FieldMetaInfo("Signature", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("ImportScope", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(TableType::IMPORTSCOPE)"), - new FieldMetaInfo("Imports", "ComputBlobIndexByte()"), - }), - new TableMetaInfo("StateMachineMethod", new List { - new FieldMetaInfo("MoveNextMethod", "ComputTableIndexByte(TableType::METHOD)"), - new FieldMetaInfo("KickoffMethod", "ComputTableIndexByte(TableType::METHOD)"), - }), - new TableMetaInfo("CustomDebugInformation", new List { - new FieldMetaInfo("Parent", "ComputTableIndexByte(HasCustomDebugInformation, sizeof(HasCustomDebugInformation) / sizeof(TableType), TagBits::HasCustomDebugInformation)"), - new FieldMetaInfo("Kind", "ComputGUIDIndexByte()"), - new FieldMetaInfo("Value", "ComputBlobIndexByte()"), - }), - }; -} diff --git a/Editor/Polymorphic/TableMetaInfos.cs.meta b/Editor/Polymorphic/TableMetaInfos.cs.meta deleted file mode 100644 index a3a2a88..0000000 --- a/Editor/Polymorphic/TableMetaInfos.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ef98af767d086bd428f52503188789b1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: