Export FieldInfo/FIeldRva contents into script metadata and import as comments

This commit is contained in:
LukeFZ
2023-12-02 08:27:12 +01:00
parent c2cb88ad81
commit f1cb0d14a2
3 changed files with 49 additions and 17 deletions

View File

@@ -220,13 +220,24 @@ namespace Il2CppInspector.Outputs
{
writeArray("fields", () =>
{
foreach (var field in model.Fields)
{
writeObject(() =>
{
writeName(field.Key, field.Value);
});
}
foreach (var (addr, field) in model.Fields)
writeFieldObject(addr, field.Name, field.Value);
});
writeArray("fieldRvas", () =>
{
foreach (var (addr, rva) in model.FieldRvas)
writeFieldObject(addr, rva.Name, rva.Value);
});
}
private void writeFieldObject(ulong addr, string name, string value)
{
writeObject(() =>
{
writer.WriteString("virtualAddress", addr.ToAddressString());
writer.WriteString("name", name);
writer.WriteString("value", value);
});
}

View File

@@ -43,6 +43,11 @@ def DefineArray(jsonDef):
MakeArray(addr, int(jsonDef['count']), AsUTF8(jsonDef['type']))
SetName(addr, AsUTF8(jsonDef['name']))
def DefineFieldWithValue(jsonDef):
addr = ParseAddress(jsonDef)
SetName(addr, AsUTF8(jsonDef['name']))
SetComment(addr, AsUTF8(jsonDef['value']))
# Process JSON
def ProcessJSON(jsonData):
@@ -95,10 +100,15 @@ def ProcessJSON(jsonData):
for d in jsonData['methodInfoPointers']:
DefineILMethodInfo(d)
# FieldInfo
# FieldInfo pointers, add the contents as a comment
print('Processing FieldInfo pointers')
for d in jsonData['fields']:
DefineField(d['virtualAddress'], d['name'], r"uint64_t")
DefineFieldWithValue(d)
# FieldRva pointers, add the contents as a comment
print('Processing FieldRva pointers')
for d in jsonData['fieldRvas']:
DefineFieldWithValue(d)
# Function boundaries
print('Processing function boundaries')