mirror of
https://github.com/Perfare/Il2CppDumper.git
synced 2025-01-09 11:17:35 -03:00
Fixed #683
This commit is contained in:
parent
6c9bf6648f
commit
23285b5636
6 changed files with 26 additions and 16 deletions
|
@ -29,7 +29,7 @@ namespace Il2CppDumper
|
|||
FixedProgramSegment();
|
||||
}
|
||||
pt_dynamic = programSegment.First(x => x.p_type == PT_DYNAMIC);
|
||||
dynamicSection = ReadClassArray<Elf64_Dyn>(pt_dynamic.p_offset, (long)pt_dynamic.p_filesz / 16L);
|
||||
dynamicSection = ReadClassArray<Elf64_Dyn>(pt_dynamic.p_offset, pt_dynamic.p_filesz / 16L);
|
||||
if (IsDumped)
|
||||
{
|
||||
FixedDynamicSection();
|
||||
|
@ -187,7 +187,7 @@ namespace Il2CppDumper
|
|||
{
|
||||
var relaOffset = MapVATR(dynamicSection.First(x => x.d_tag == DT_RELA).d_un);
|
||||
var relaSize = dynamicSection.First(x => x.d_tag == DT_RELASZ).d_un;
|
||||
var relaTable = ReadClassArray<Elf64_Rela>(relaOffset, (long)relaSize / 24L);
|
||||
var relaTable = ReadClassArray<Elf64_Rela>(relaOffset, relaSize / 24L);
|
||||
foreach (var rela in relaTable)
|
||||
{
|
||||
var type = rela.r_info & 0xffffffff;
|
||||
|
|
|
@ -97,7 +97,7 @@ namespace Il2CppDumper
|
|||
if (Version < 23)
|
||||
{
|
||||
var __mod_init_func = sections.First(x => x.sectname == "__mod_init_func");
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, (long)__mod_init_func.size / 8);
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, __mod_init_func.size / 8);
|
||||
foreach (var i in addrs)
|
||||
{
|
||||
if (i > 0)
|
||||
|
@ -163,7 +163,7 @@ namespace Il2CppDumper
|
|||
* B sub
|
||||
*/
|
||||
var __mod_init_func = sections.First(x => x.sectname == "__mod_init_func");
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, (long)__mod_init_func.size / 8);
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, __mod_init_func.size / 8);
|
||||
foreach (var i in addrs)
|
||||
{
|
||||
if (i > 0)
|
||||
|
@ -200,7 +200,7 @@ namespace Il2CppDumper
|
|||
* B sub
|
||||
*/
|
||||
var __mod_init_func = sections.First(x => x.sectname == "__mod_init_func");
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, (long)__mod_init_func.size / 8);
|
||||
var addrs = ReadClassArray<ulong>(__mod_init_func.offset, __mod_init_func.size / 8);
|
||||
foreach (var i in addrs)
|
||||
{
|
||||
if (i > 0)
|
||||
|
|
|
@ -169,7 +169,7 @@ namespace Il2CppDumper
|
|||
{
|
||||
var relaOffset = MapVATR(dynamicSection.First(x => x.d_tag == DT_RELA).d_un);
|
||||
var relaSize = dynamicSection.First(x => x.d_tag == DT_RELASZ).d_un;
|
||||
var relaTable = ReadClassArray<Elf64_Rela>(relaOffset, (long)relaSize / 24L);
|
||||
var relaTable = ReadClassArray<Elf64_Rela>(relaOffset, relaSize / 24L);
|
||||
foreach (var rela in relaTable)
|
||||
{
|
||||
var type = rela.r_info & 0xffffffff;
|
||||
|
|
|
@ -199,6 +199,11 @@ namespace Il2CppDumper
|
|||
return t;
|
||||
}
|
||||
|
||||
public T[] ReadClassArray<T>(ulong addr, ulong count) where T : new()
|
||||
{
|
||||
return ReadClassArray<T>(addr, (long)count);
|
||||
}
|
||||
|
||||
public T[] ReadClassArray<T>(ulong addr, long count) where T : new()
|
||||
{
|
||||
Position = addr;
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace Il2CppDumper
|
|||
{
|
||||
if (codeRegistration != 0)
|
||||
{
|
||||
var limit = this is WebAssemblyMemory ? 0x35000 : 0x50000; //TODO
|
||||
var limit = this is WebAssemblyMemory ? 0x35000u : 0x50000u; //TODO
|
||||
if (Version >= 24.2)
|
||||
{
|
||||
pCodeRegistration = MapVATR<Il2CppCodeRegistration>(codeRegistration);
|
||||
|
@ -108,7 +108,7 @@ namespace Il2CppDumper
|
|||
public virtual void Init(ulong codeRegistration, ulong metadataRegistration)
|
||||
{
|
||||
pCodeRegistration = MapVATR<Il2CppCodeRegistration>(codeRegistration);
|
||||
var limit = this is WebAssemblyMemory ? 0x35000 : 0x50000; //TODO
|
||||
var limit = this is WebAssemblyMemory ? 0x35000u : 0x50000u; //TODO
|
||||
if (Version == 27 && pCodeRegistration.invokerPointersCount > limit)
|
||||
{
|
||||
Version = 27.1;
|
||||
|
@ -249,6 +249,11 @@ namespace Il2CppDumper
|
|||
return ReadClass<T>(MapVATR(addr));
|
||||
}
|
||||
|
||||
public T[] MapVATR<T>(ulong addr, ulong count) where T : new()
|
||||
{
|
||||
return ReadClassArray<T>(MapVATR(addr), count);
|
||||
}
|
||||
|
||||
public T[] MapVATR<T>(ulong addr, long count) where T : new()
|
||||
{
|
||||
return ReadClassArray<T>(MapVATR(addr), count);
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace Il2CppDumper
|
|||
public class Il2CppCodeRegistration
|
||||
{
|
||||
[Version(Max = 24.1)]
|
||||
public long methodPointersCount;
|
||||
public ulong methodPointersCount;
|
||||
[Version(Max = 24.1)]
|
||||
public ulong methodPointers;
|
||||
[Version(Max = 21)]
|
||||
|
@ -13,7 +13,7 @@ namespace Il2CppDumper
|
|||
[Version(Max = 21)]
|
||||
public ulong delegateWrappersFromNativeToManaged; // note the double indirection to handle different calling conventions
|
||||
[Version(Min = 22)]
|
||||
public long reversePInvokeWrapperCount;
|
||||
public ulong reversePInvokeWrapperCount;
|
||||
[Version(Min = 22)]
|
||||
public ulong reversePInvokeWrappers;
|
||||
[Version(Max = 22)]
|
||||
|
@ -28,23 +28,23 @@ namespace Il2CppDumper
|
|||
public ulong ccwMarshalingFunctionsCount;
|
||||
[Version(Min = 21, Max = 22)]
|
||||
public ulong ccwMarshalingFunctions;
|
||||
public long genericMethodPointersCount;
|
||||
public ulong genericMethodPointersCount;
|
||||
public ulong genericMethodPointers;
|
||||
[Version(Min = 24.5, Max = 24.5)]
|
||||
[Version(Min = 27.1)]
|
||||
public ulong genericAdjustorThunks;
|
||||
public long invokerPointersCount;
|
||||
public ulong invokerPointersCount;
|
||||
public ulong invokerPointers;
|
||||
[Version(Max = 24.5)]
|
||||
public long customAttributeCount;
|
||||
public ulong customAttributeCount;
|
||||
[Version(Max = 24.5)]
|
||||
public ulong customAttributeGenerators;
|
||||
[Version(Min = 21, Max = 22)]
|
||||
public long guidCount;
|
||||
public ulong guidCount;
|
||||
[Version(Min = 21, Max = 22)]
|
||||
public ulong guids; // Il2CppGuid
|
||||
[Version(Min = 22)]
|
||||
public long unresolvedVirtualCallCount; //29.1 unresolvedIndirectCallCount;
|
||||
public ulong unresolvedVirtualCallCount; //29.1 unresolvedIndirectCallCount;
|
||||
[Version(Min = 22)]
|
||||
public ulong unresolvedVirtualCallPointers;
|
||||
[Version(Min = 29.1)]
|
||||
|
@ -60,7 +60,7 @@ namespace Il2CppDumper
|
|||
[Version(Min = 24.3)]
|
||||
public ulong windowsRuntimeFactoryTable;
|
||||
[Version(Min = 24.2)]
|
||||
public long codeGenModulesCount;
|
||||
public ulong codeGenModulesCount;
|
||||
[Version(Min = 24.2)]
|
||||
public ulong codeGenModules;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue