349 lines
13 KiB
C#
349 lines
13 KiB
C#
using VersionedSerialization.Attributes;
|
|
|
|
namespace Il2CppInspector.Next.Metadata;
|
|
|
|
// Unity 4.6.1p5 - first release, no global-metadata.dat
|
|
// Unity 5.2.0f3 -> v15
|
|
// Unity 5.3.0f4 -> v16
|
|
// Unity 5.3.2f1 -> v19
|
|
// Unity 5.3.3f1 -> v20
|
|
// Unity 5.3.5f1 -> v21
|
|
// Unity 5.5.0f3 -> v22
|
|
// Unity 5.6.0f3 -> v23
|
|
// Unity 2017.1.0f3 -> v24
|
|
// Unity 2018.3.0f2 -> v24.1
|
|
// Unity 2019.1.0f2 -> v24.2
|
|
// Unity 2019.3.7f1 -> v24.3
|
|
// Unity 2019.4.15f1 -> v24.4
|
|
// Unity 2019.4.21f1 -> v24.5
|
|
// Unity 2020.1.0f1 -> v24.3
|
|
// Unity 2020.1.11f1 -> v24.4
|
|
// Unity 2020.2.0f1 -> v27
|
|
// Unity 2020.2.4f1 -> v27.1
|
|
// Unity 2021.1.0f1 -> v27.2
|
|
// https://unity3d.com/get-unity/download/archive
|
|
// Metadata version is written at the end of Unity.IL2CPP.MetadataCacheWriter.WriteLibIl2CppMetadata or WriteMetadata (Unity.IL2CPP.dll)
|
|
|
|
[VersionedStruct]
|
|
public partial record struct Il2CppGlobalMetadataHeader
|
|
{
|
|
public int Sanity { get; private set; }
|
|
public int Version { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringLiteralOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringLiteralSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringLiteralDataOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringLiteralDataSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int StringSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int EventsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int EventsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int PropertiesOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int PropertiesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int MethodsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int MethodsSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
[VersionCondition(EqualTo = "16.0")]
|
|
public int ParameterDefaultValuesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
[VersionCondition(EqualTo = "16.0")]
|
|
public int ParameterDefaultValuesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldDefaultValuesOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldDefaultValuesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldAndParameterDefaultValueDataOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldAndParameterDefaultValueDataSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int FieldMarshaledSizesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int FieldMarshaledSizesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int ParametersOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int ParametersSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int FieldsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericParametersOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericParametersSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericParameterConstraintsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericParameterConstraintsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericContainersOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int GenericContainersSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int NestedTypesOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int NestedTypesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int InterfacesOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int InterfacesSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int VTableMethodsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int VTableMethodsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int InterfaceOffsetsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int InterfaceOffsetsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int TypeDefinitionsOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "35.0")]
|
|
public int TypeDefinitionsSize { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "24.1")]
|
|
public int RgctxEntriesOffset { get; private set; }
|
|
|
|
[VersionCondition(LessThan = "24.1")]
|
|
public int RgctxEntriesCount { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int ImagesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int ImagesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int AssembliesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "16.0", LessThan = "35.0")]
|
|
public int AssembliesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "24.5")]
|
|
public int MetadataUsageListsOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "24.5")]
|
|
public int MetadataUsageListsCount { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "24.5")]
|
|
public int MetadataUsagePairsOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "24.5")]
|
|
public int MetadataUsagePairsCount { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "35.0")]
|
|
public int FieldRefsOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "19.0", LessThan = "35.0")]
|
|
public int FieldRefsSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "20.0", LessThan = "35.0")]
|
|
public int ReferencedAssembliesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "20.0", LessThan = "35.0")]
|
|
public int ReferencedAssembliesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "21.0", LessThan = "27.2")]
|
|
public int AttributesInfoOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "21.0", LessThan = "27.2")]
|
|
public int AttributesInfoCount { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "21.0", LessThan = "27.2")]
|
|
public int AttributesTypesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "21.0", LessThan = "27.2")]
|
|
public int AttributesTypesCount { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "29.0", LessThan = "35.0")]
|
|
public int AttributeDataOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "29.0", LessThan = "35.0")]
|
|
public int AttributeDataSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "29.0", LessThan = "35.0")]
|
|
public int AttributeDataRangeOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "29.0", LessThan = "35.0")]
|
|
public int AttributeDataRangeSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "22.0", LessThan = "35.0")]
|
|
public int UnresolvedIndirectCallParameterTypesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "22.0", LessThan = "35.0")]
|
|
public int UnresolvedIndirectCallParameterTypesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "22.0", LessThan = "35.0")]
|
|
public int UnresolvedIndirectCallParameterRangesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "22.0", LessThan = "35.0")]
|
|
public int UnresolvedIndirectCallParameterRangesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "23.0", LessThan = "35.0")]
|
|
public int WindowsRuntimeTypeNamesOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "23.0", LessThan = "35.0")]
|
|
public int WindowsRuntimeTypeNamesSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "27.0", LessThan = "35.0")]
|
|
public int WindowsRuntimeStringsOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "27.0", LessThan = "35.0")]
|
|
public int WindowsRuntimeStringsSize { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "24.0", LessThan = "35.0")]
|
|
public int ExportedTypeDefinitionsOffset { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "24.0", LessThan = "35.0")]
|
|
public int ExportedTypeDefinitionsSize { get; private set; }
|
|
|
|
// new, v38 metadata sections
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata StringLiterals { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata StringLiteralData { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Strings { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Events { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Properties { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Methods { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata ParameterDefaultValues { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata FieldDefaultValues { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata FieldAndParameterDefaultValueData { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata FieldMarshaledSizes { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Parameters { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Fields { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata GenericParameters { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata GenericParameterConstraints { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata GenericContainers { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata NestedTypes { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Interfaces { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata VtableMethods { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata InterfaceOffsets { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata TypeDefinitions { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Images { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata Assemblies { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata FieldRefs { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata ReferencedAssemblies { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata AttributeData { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata AttributeDataRanges { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata UnresolvedIndirectCallParameterTypes { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata UnresolvedIndirectCallParameterRanges { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata WindowsRuntimeTypeNames { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata WindowsRuntimeStrings { get; private set; }
|
|
|
|
[VersionCondition(GreaterThan = "38.0")]
|
|
public Il2CppSectionMetadata ExportedTypeDefinitions { get; private set; }
|
|
|
|
|
|
public const int ExpectedSanity = unchecked((int)0xFAB11BAF);
|
|
public readonly bool SanityValid => Sanity == ExpectedSanity;
|
|
} |