also set rva value as dnlib InitialValue
This commit is contained in:
@@ -184,6 +184,9 @@ namespace Il2CppInspector.Outputs
|
|||||||
{
|
{
|
||||||
Attributes = (TypeAttributes)type.Attributes
|
Attributes = (TypeAttributes)type.Attributes
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (mType.IsExplicitLayout)
|
||||||
|
mType.ClassLayout = new ClassLayoutUser(1, (uint)type.Sizes.nativeSize);
|
||||||
|
|
||||||
// Add nested types
|
// Add nested types
|
||||||
foreach (var nestedType in type.DeclaredNestedTypes)
|
foreach (var nestedType in type.DeclaredNestedTypes)
|
||||||
@@ -265,12 +268,12 @@ namespace Il2CppInspector.Outputs
|
|||||||
// Static array initializer preview
|
// Static array initializer preview
|
||||||
if (field.HasFieldRVA) {
|
if (field.HasFieldRVA) {
|
||||||
// Attempt to get field size
|
// Attempt to get field size
|
||||||
|
|
||||||
var fieldSize = field.FieldType.Sizes.nativeSize;
|
var fieldSize = field.FieldType.Sizes.nativeSize;
|
||||||
|
|
||||||
var preview = model.Package.Metadata.ReadBytes((long) field.DefaultValueMetadataAddress, fieldSize);
|
var preview = model.Package.Metadata.ReadBytes((long) field.DefaultValueMetadataAddress, fieldSize);
|
||||||
var previewText = string.Join(" ", preview.Select(b => $"{b:x2}"));
|
|
||||||
|
|
||||||
mField.AddAttribute(module, metadataPreviewAttribute, ("Data", previewText));
|
mField.InitialValue = preview;
|
||||||
|
mField.AddAttribute(module, metadataPreviewAttribute, ("Data", Convert.ToHexString(preview)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Field offset
|
// Field offset
|
||||||
@@ -597,6 +600,9 @@ namespace Il2CppInspector.Outputs
|
|||||||
.ToDictionary(t => t, t => (TypeDef)null);
|
.ToDictionary(t => t, t => (TypeDef)null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Used for resolving TypeRefs, needed for static array initializers
|
||||||
|
var ctx = ModuleDef.CreateModuleContext();
|
||||||
|
|
||||||
// Generate blank assemblies
|
// Generate blank assemblies
|
||||||
// We have to do this before adding anything else so we can reference every module
|
// We have to do this before adding anything else so we can reference every module
|
||||||
modules.Clear();
|
modules.Clear();
|
||||||
@@ -604,6 +610,7 @@ namespace Il2CppInspector.Outputs
|
|||||||
foreach (var asm in model.Assemblies) {
|
foreach (var asm in model.Assemblies) {
|
||||||
// Create assembly and add primary module to list
|
// Create assembly and add primary module to list
|
||||||
var module = CreateAssembly(asm.ShortName);
|
var module = CreateAssembly(asm.ShortName);
|
||||||
|
module.Context = ctx;
|
||||||
modules.Add(asm, module);
|
modules.Add(asm, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user