594 Commits

Author SHA1 Message Date
Robert Xiao
5224429b0a Fix {{ typo in CSharpCodeStubs 2020-06-17 08:18:15 +02:00
Robert Xiao
c9d65e5f2d Get 2019.3.7f1+ working by adding new '24.3' version
In 2019.3.7f1, the following fields were added to
Il2CppCodeRegistration:

     uint32_t interopDataCount;
     Il2CppInteropData* interopData;
+    uint32_t windowsRuntimeFactoryCount;
+    Il2CppWindowsRuntimeFactoryTableEntry* windowsRuntimeFactoryTable;
     uint32_t codeGenModulesCount;
     const Il2CppCodeGenModule** codeGenModules;

These two fields overlap the old codeGenModules fields, causing failures.
The current fix is simply to bump the version to 24.3 if these fields are
detected in order to get the correct codeGenModules pointer. Long term, a
better detection mechanism (probably based on examining the name string
pointer in codeGenModules[0]) will be necessary. However, this is pending
more samples of 2019.3.7+ for testing.
2020-06-16 23:30:53 +02:00
Robert Xiao
4f074837b7 Fix fieldOffsetsArePointers logic on 64-bit builds
The logic for fieldOffsetsArePointers was always reading 32-bit units
even on 64-bits. When fieldOffsetsArePointers is true, fieldOffsets is
declared as int32_t**, so each element *must* be a pointer and therefore
word-sized (64 bits on 64-bit machines). So it doesn't make sense to
only read 32-bit words for this test.

This fixes metadata extraction for 64-bit builds from Il2Cpp versions
5.3.7f1, 5.3.8f2, 5.4.1f1, 5.4.2f2, 5.4.3f1, 5.4.4f1, 5.4.5f1 and
5.4.6f3. Notably, 5.4.0f3 is an unusual outlier which uses int32_t * for
fieldOffsets.
2020-06-16 23:30:53 +02:00
Robert Xiao
02fab932ae referencedAssemblies was added in v5.3.3 (metadata 20)
According to the headers I have available, Unity v5.3.2f1 (metadata 19)
lacks the referencedAssemblies{Offset,Count} fields in
Il2CppGlobalMetadataHeader. These appear to have been added some time
between that version and 5.3.3f1 (metadata 20).

Changing these fields makes the Inspector work properly on the output from
Il2Cpp from Unity v5.3.2f1.
2020-06-16 23:30:53 +02:00
Robert Xiao
7fce43aba0 Fix IDA writeUsages for metadata <19
This fixes a NullReferenceException that was being thrown for IDA script
generation for metadata 16 files (e.g. as generated by Il2Cpp v5.3.0f4).
2020-06-16 23:30:53 +02:00
Robert Xiao
5b78fc3f3c Fix pointer extraction for MSVC in metadata <21.
This change causes the Inspector to properly parse DLLs generated with
Il2Cpp versions 5.3.0f4 through 5.3.4f1 (excluding 5.3.2f1, which is a
separate problem).
2020-06-16 23:30:53 +02:00
Katy Coe
b9dffd3500 Allow divergent metadata/binary versions
Il2CppInspector reports the highest version of the two
2020-06-16 23:27:51 +02:00
Katy Coe
0f2fff6e70 Tidy up error handling slightly 2020-06-16 23:08:15 +02:00
Katy Coe
d16db6f1f5 X64: Fix R8 unused compile warning 2020-06-16 23:07:42 +02:00
Katy Coe
89b3c2b3aa ELF: Detect a specific type of packing that isn't handled 2020-06-16 23:07:01 +02:00
Katy Coe
370eebfffc ELF: Slightly more careful XOR decryption (#27) 2020-06-16 21:53:57 +02:00
Katy Coe
5e435465f1 ELF: Don't crash on duplicate section names (#26) 2020-06-16 15:35:17 +02:00
Callie LeFave
dee6c45056 Fix CSharp output paths on POSIX filesystems 2020-06-16 12:25:10 +02:00
Katy Coe
40ab603c56 C#: Don't output field offsets for open generic types 2020-02-28 11:01:38 +01:00
Katy Coe
c0e90f2e9c IL2CPP: Fix field offsets for value types (#25) 2020-02-28 11:01:26 +01:00
Katy Coe
c540318363 Update version to 2.1 2020-02-26 15:38:45 +01:00
Katy Coe
b961db78f2 SELF: Initial support for PRX/SPRX files (issue #21) 2020-02-26 02:59:02 +01:00
Katy Coe
e4034e6a39 SELF: More boilerplate code 2020-02-25 16:15:37 +01:00
Katy Coe
b509b4d227 SELF: Boilerplate code 2020-02-25 16:15:17 +01:00
Katy Coe
250c3a2fc9 Loader: Unwrap FileFormatReader.Load exceptions 2020-02-24 13:37:06 +01:00
Katy Coe
027dde8358 C#: Replace "in, out" with "[In, Out]" (CS8328) 2020-02-24 12:28:38 +01:00
Katy Coe
168c955558 C#: Set static and instance constructor defaults correctly (CS0120) 2020-02-24 12:24:04 +01:00
Katy Coe
6046f2493d C#: Reduce scope redundancies in type declarations 2020-02-24 12:05:33 +01:00
Katy Coe
3f72ff38c2 ARM: Allow R0-R2 in any order and any indirection (Unity 2019.3-compat) 2020-02-23 22:37:28 +01:00
Katy Coe
8bdea7780b X64: Handle mov before push in prologue (issue #23) 2020-02-23 20:49:34 +01:00
Katy Coe
55148e0271 Output: Add Mocrosoft.Reflection and Internal.Runtime to default exclusions 2020-02-15 06:38:03 +01:00
Katy Coe
538810f441 X64: Generalize Il2CppCodegenRegistration scan (part of #21) 2020-02-15 06:30:12 +01:00
Katy Coe
0a99f549ff X64: Generalize Codegen initializer search (part of #21) 2020-02-15 05:19:54 +01:00
Katy Coe
6ec5c06fbc X64: Handle DT_INIT-style initializer (part of #21) 2020-02-15 03:55:03 +01:00
Katy Coe
ee93343ff8 ELF: Fix DT_INIT from GetFunctionTable() wasn't mapped to file offset 2020-02-14 15:11:29 +01:00
Katy Coe
192d62006c X64: Refactor to allow new function analysis (part of #21) 2020-02-13 18:41:19 +01:00
Katy Coe
245a95b15b IL2CPP: Allow code at address zero to be evaluated (part of #21) 2020-02-13 18:22:38 +01:00
Katy Coe
29a49d3170 ELF: Include DT_INIT function in function table (part of #21) 2020-02-13 18:16:48 +01:00
Katy Coe
9083be4c18 ELF: Don't decrypt if there is no .rodata section (part of #21) 2020-02-13 18:08:14 +01:00
Katy Coe
37f43580e4 ELF: Don't crash if there are no section names (part of #21) 2020-02-13 18:03:53 +01:00
Katy Coe
97c8b8f878 Output: Fix thread safety crash in WriteFilesByClassTree 2020-02-10 09:40:44 +01:00
Katy Coe
46bf6f2413 IL2CPP: Don't crash on assemblies with zero attributes (issue #19) 2020-02-10 08:44:43 +01:00
Katy Coe
9f3211281c Model: Ensure all custom attributes are loaded 2020-02-10 06:29:48 +01:00
Katy Coe
e6c8be5e2b Move default excluded namespaces to Constants 2020-02-09 11:05:22 +01:00
Katy Coe
755a8ec88c GUI: Show progress messages in busy indicator 2020-02-09 04:11:16 +01:00
Katy Coe
59043a723a IL2CPP: Make FileFormatReader public 2020-02-08 12:58:54 +01:00
Katy Coe
fc7e63c0aa Output: Sanitize C# filenames for invalid characters 2020-02-08 12:55:13 +01:00
Katy Coe
5652e89abe ELF: Detect and defeat trivial XOR encryption 2020-02-08 12:19:26 +01:00
Katy Coe
e971cb8502 Refactor solution layout 2020-02-06 02:51:42 +01:00