Commit Graph
212 Commits
Author SHA1 Message Date
Sam Byass edee922680 Decompiler: Handle box and icall lookup by name, remove rgctx loads and leftover metadata init calls to reduce errors in the output 2026-08-09 23:08:05 +01:00
Sam Byass 7586718ee8 Decompiler: Fix return register issues with CallVoid, fix missing call/init metadata thunks, fix generic field offsets, resolve icalls 2026-08-09 20:43:21 +01:00
Sam Byass ae62110d7b Decompiler: Implement x86 division support, add modulo operation support, resolve calls to CRT math operations 2026-08-09 16:45:34 +01:00
Sam Byass a64be49494 Decompiler: Boolean logic and constant-folding 2026-08-09 01:13:09 +01:00
Sam Byass f1094bf1cb Decompiler: Method RGCTX, better array support, detect unknown generics via adjustor thunks 2026-08-08 23:30:42 +01:00
Sam Byass 9c6c017297 Decompiler: Fix static fields checking constants, fix user stream heap corruption, remove inlined write barriers, fix some constructor calls 2026-08-08 21:18:34 +01:00
Jeremy Pritts 1dfeeddc4e Fix pre-v29 attributes (#596) 2026-08-03 23:11:09 +01:00
Sam Byass 34a512de38 Decompiler: Handle arrays of structs, struct return buffers, interface method calls 2026-08-03 23:09:52 +01:00
Luke cb993837c6 More analysis performance improvements (#595)
* make ThrowHelperNamesByAddress thread safe

* check if we actually have to reset sources in ResetSources

* SsaForm: make Rename iterative

* CopyCoalescer: only process potentially changed blocks in ComputeBlockLiveOut
2026-08-03 13:49:21 +01:00
Sam Byass 35707d64ca Decompiler: Support szarray, virtual calls, address of local, plus clean up ILSpy output by adjusting the IL 2026-08-02 23:23:26 +01:00
Sam Byass 2d085901ae Decompiler: Remove implicit null checks, resolve fields on generics, resolve generic methods which aren't in the metadata by address if we can 2026-08-02 15:17:08 +01:00
Sam Byass a87d484b95 Decompiler: Stop having operands be raw object-typed 2026-08-02 14:12:15 +01:00
Sam Byass 3381214fc4 Decompiler: Recover static fields, throw helpers, and rgctx, fix bool flags, fix this param in IL, fix float handling somewhat 2026-07-25 23:48:16 +01:00
Sam Byass 776c5f1d42 Decompiler: Recover delegate invokes 2026-07-25 20:24:46 +01:00
Sam Byass 034f873e7d Decompiler: Find and remove write barriers 2026-07-25 17:47:06 +01:00
Sam Byass 17bcb005f7 Core+Lib: Stop using Il2CppTypeReflectionData in most places, it's not a good data type.
Also fixes silent coercion of SZArray types to Array[1] in various places in analysis
2026-07-25 16:21:39 +01:00
Luke 21402fc2b9 StackAnalyzer fixes (#588) 2026-07-25 15:41:19 +01:00
Trevor 5cebc0d9c1 Support overriding EnumUnderlyingType (#587) 2026-07-25 15:28:22 +01:00
Jeremy Pritts 7f25c1da26 Support overriding default values for method parameters (#586) 2026-07-25 15:28:08 +01:00
Jeremy Pritts bacfb4aa22 Diffable CS improvements (#577) 2026-07-12 23:38:18 +01:00
Jeremy Pritts 5ef1a1957c Remove reference assembly parameter from most type analysis constructors (#575) 2026-07-06 12:36:12 +01:00
Sam Byass 72be7f30fd Core: Fix the possibility that other methods could see a partially-constructed GIT.
Closes #569
2026-07-04 21:00:31 +01:00
Jeremy Pritts d5653ec399 Ensure BaseMethod is null for explicit interface implementations (#567) 2026-07-04 18:46:58 +01:00
Jeremy Pritts 16b4efd8bd Support overriding field offsets (#566) 2026-07-04 18:40:59 +01:00
Sam Byass 45d5b32642 Decompiler: Recover newobj from il2cpp_object_new 2026-06-21 18:54:28 +01:00
Sam Byass f4a342cad7 Decompiler: Recover float literals 2026-06-21 17:02:11 +01:00
Xpl0itR 30256772f9 Refactor Il2CppBinary and related components (#539) 2026-06-20 17:28:32 +01:00
Jeremy Pritts 5d99a946db Fix some build warnings (#562) 2026-06-20 17:16:08 +01:00
Jeremy Pritts bba31593b2 Fix null ManifestModule for InjectedAssemblyAnalysisContext (#561) 2026-06-20 17:04:20 +01:00
Sam Byass 617fb7e0f3 Decompiler: Strip metadata init blocks 2026-06-20 16:50:56 +01:00
Sam Byass 73c00b6725 Decompiler: Fix simplifier replacing incorrect constants, add methodInfo resolution 2026-06-14 18:31:38 +01:00
Sam Byass 17f3caf1f8 Decompiler: Fixing up simplifier and splitting into pre- and post-ssa, fixes constants being selected through diamonds 2026-06-14 17:08:00 +01:00
Jeremy Pritts 79fe832f66 Add DefaultName for AttributeGeneratorMethodAnalysisContext (#556) 2026-06-08 19:59:04 +01:00
Aaron Robinson 0ac9268db1 Fix attributes on metadata version >= 104 (#555) 2026-06-08 00:14:21 +01:00
Aaron Robinson 9b6e67d1f9 Add support for exported type definitions (#554) 2026-06-08 00:08:33 +01:00
Sam Byass e881176723 Decompiler: First pass on type propagation 2026-06-07 22:03:00 +01:00
Jeremy Pritts c6aaa5ee93 Fix name overrides for constructed types (#552) 2026-06-07 20:02:55 +01:00
Sam Byass 0b13ff77c2 Decompiler: convert flag arithmetic to conditional jumps 2026-06-07 19:45:54 +01:00
Sam Byass 14e0335869 Decompiler: add SSA dead-code elimination 2026-06-07 17:25:31 +01:00
Sam Byass 75f74b4f8e Decompiler: Fix SSA / dominator correctness 2026-06-07 17:25:25 +01:00
Sam ByassandMilo 7fd44cac62 Rebase of #481 on current development
Original exploratory work by Milo (@TheUser-1231) in PR #481.

Co-authored-by: Milo <[email protected]>
2026-06-07 17:25:14 +01:00
Jeremy Pritts f1dd6d1228 Support null Definition for CustomAttributeIndex (#551) 2026-06-07 14:24:01 +01:00
Xpl0itR 9f6b2f6d76 Remove static mutable state from LibCpp2IL 2: Electric Boogaloo (#542) 2026-06-07 14:14:35 +01:00
Jeremy Pritts 6af99f2185 Use ReadOnlySpan<> in InjectedMethodAnalysisContext (#547)
* Use ReadOnlySpan<> in InjectedMethodAnalysisContext

* Less Linq
2026-05-10 22:10:24 +01:00
ds5678 913b673e93 Fix diffable-cs throwing ArgumentOutOfRangeException 2026-03-16 12:56:19 +00:00
Sam Byass 4672b69a08 lib: Fix enum base type handling on v35+
Fixes #519. Fixes #518
2026-02-15 13:19:07 +00:00
Sam Byass 8c34e0497a lib: (untested) support for v105 + v106 2026-02-14 21:29:07 +00:00
Sam Byass e7ef9fa0d5 Lib: Support v35, v38, v39 2026-02-14 17:41:57 +00:00
Minecool 3ef4530a63 Fixed broken parenthesis 2026-02-14 13:49:12 +00:00
ds5678 774a8b9c96 Change the meaning of MethodAnalysisContext::Overrides
It now specifically refers to methods that use `.override` in IL.
2026-01-18 02:00:10 +00:00