IL2CPP: Add IsModified flags to Metadata and Binary
This commit is contained in:
@@ -80,9 +80,13 @@ namespace Il2CppInspector
|
|||||||
// One assembly may contain multiple modules
|
// One assembly may contain multiple modules
|
||||||
public Dictionary<string, Il2CppCodeGenModule> Modules { get; private set; }
|
public Dictionary<string, Il2CppCodeGenModule> Modules { get; private set; }
|
||||||
|
|
||||||
|
// Status update callback
|
||||||
private EventHandler<string> OnStatusUpdate { get; set; }
|
private EventHandler<string> OnStatusUpdate { get; set; }
|
||||||
private void StatusUpdate(string status) => OnStatusUpdate?.Invoke(this, status);
|
private void StatusUpdate(string status) => OnStatusUpdate?.Invoke(this, status);
|
||||||
|
|
||||||
|
// Set if something in the binary has been modified / decrypted
|
||||||
|
public bool IsModified { get; private set; } = false;
|
||||||
|
|
||||||
protected Il2CppBinary(IFileFormatReader stream, EventHandler<string> statusCallback = null) {
|
protected Il2CppBinary(IFileFormatReader stream, EventHandler<string> statusCallback = null) {
|
||||||
Image = stream;
|
Image = stream;
|
||||||
OnStatusUpdate = statusCallback;
|
OnStatusUpdate = statusCallback;
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ namespace Il2CppInspector
|
|||||||
|
|
||||||
public Dictionary<int, string> Strings { get; } = new Dictionary<int, string>();
|
public Dictionary<int, string> Strings { get; } = new Dictionary<int, string>();
|
||||||
|
|
||||||
|
// Set if something in the metadata has been modified / decrypted
|
||||||
|
public bool IsModified { get; } = false;
|
||||||
|
|
||||||
public Metadata(Stream stream, EventHandler<string> statusCallback = null) : base(stream)
|
public Metadata(Stream stream, EventHandler<string> statusCallback = null) : base(stream)
|
||||||
{
|
{
|
||||||
// Read magic bytes
|
// Read magic bytes
|
||||||
@@ -189,6 +192,7 @@ namespace Il2CppInspector
|
|||||||
var decryptedString = Encoding.GetString(encryptedString.Select(b => (byte) (b ^ xorKey)).ToArray());
|
var decryptedString = Encoding.GetString(encryptedString.Select(b => (byte) (b ^ xorKey)).ToArray());
|
||||||
Strings.Add(offset.current, decryptedString);
|
Strings.Add(offset.current, decryptedString);
|
||||||
}
|
}
|
||||||
|
IsModified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get all managed code string literals
|
// Get all managed code string literals
|
||||||
|
|||||||
@@ -319,6 +319,9 @@ namespace Il2CppInspector
|
|||||||
CodeRegistration.unresolvedVirtualCallCount = 0;
|
CodeRegistration.unresolvedVirtualCallCount = 0;
|
||||||
CodeRegistration.interopDataCount = 0;
|
CodeRegistration.interopDataCount = 0;
|
||||||
|
|
||||||
|
// TODO: Write changes to stream
|
||||||
|
IsModified = true;
|
||||||
|
|
||||||
// Things we need from Il2CppMetadataRegistration
|
// Things we need from Il2CppMetadataRegistration
|
||||||
|
|
||||||
// genericInsts -> list of Il2CppGenericInst* (argc is count of Il2CppType* at data pointer argv; datapoint = GenericParameterIndex)
|
// genericInsts -> list of Il2CppGenericInst* (argc is count of Il2CppType* at data pointer argv; datapoint = GenericParameterIndex)
|
||||||
@@ -767,6 +770,8 @@ namespace Il2CppInspector
|
|||||||
MetadataRegistration.typeDefinitionsSizesCount = 0;
|
MetadataRegistration.typeDefinitionsSizesCount = 0;
|
||||||
MetadataRegistration.genericClassesCount = MetadataRegistration.genericInstsCount + 1;
|
MetadataRegistration.genericClassesCount = MetadataRegistration.genericInstsCount + 1;
|
||||||
|
|
||||||
|
// TODO: Write changes to stream
|
||||||
|
|
||||||
StatusUpdate("Analyzing IL2CPP image");
|
StatusUpdate("Analyzing IL2CPP image");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user