ELF: Rebase if requested even if image is not dumped (#119)

This commit is contained in:
Katy Coe
2020-12-30 08:23:59 +01:00
parent 012266ef87
commit ec6f65b7dc
5 changed files with 11 additions and 10 deletions

View File

@@ -201,9 +201,14 @@ namespace Il2CppInspector
// Dumped images must be rebased
if (isMemoryImage) {
if (LoadOptions.ImageBase == 0xffffffff_ffffffff)
if (LoadOptions.ImageBase == 0)
throw new InvalidOperationException("To load a dumped ELF image, you must specify the image base virtual address");
}
// Rebase if requested (whether dumped or not) and treat it as a memory image,
// disabling processing of relocations, symbols and decryption
if (LoadOptions.ImageBase != 0) {
isMemoryImage = true;
rebase(conv.FromULong(LoadOptions.ImageBase));
}

View File

@@ -9,9 +9,9 @@ namespace Il2CppInspector
// Modifiers for use when loading binary files
public class LoadOptions
{
// For dumped ELF files, the virtual address to which we should rebase - ignored for other file types
// Use 2^64-1 to prevent rebasing on a dumped file
public ulong ImageBase { get; set; }
// For ELF files, the virtual address to which we should rebase - ignored for other file types
// Use zero to prevent rebasing
public ulong ImageBase { get; set; } = 0ul;
// For Linux process memory map inputs, we need the full path so we can find the .bin files
// For packed PE files, we need the full path to reload the file via Win32 API