Milestone Preview: 2022.1.0 #13
Pre-release
Pre-release
SamboyCoding
released this
02 Jan 00:54
·
141 commits
to development
since this release
Yes, I know it's 2024 and the version number is still 2022.1
Happy 2024! It's been a while (almost a year!) since any super large changes came down the pipeline, so here's another release with various fixes and improvements. Specifically:
Cpp2IL Command Line Application
- Improved verbose logging around resolution of paths within the provided game-path, to help diagnose issues with locating required files.
- Fixed broken net7 builds
- Fixed compilation errors when trying to build with .NET 8 SDK
- Fixed processing layers running in reverse order to that in which they were passed in via arguments*
Cpp2IL Core
- Diffable C# Output Format: Fixed an exception that could occur when generating diffable C# forms of custom attributes.
- Looser filtering on
<Module>
type name to resolve an issue with some games (notably, Synth Riders). Thanks to @bookdude13 in #233! - Fixed an issue with end-of-method pointer calculation going outside the bounds of the binary. If this happens, Cpp2IL will fall back to an alternative calculation method*
- Resolved some issues with invalid IL being generated in empty method bodies, by way of switching to AssetRipper.CIL for method filling*
- Added detection of auto-properties and modified the generated IL to output them as actual auto-properties*
- Fixed incorrect metadata in output dlls related to indexer properties*
- Implemented discovery and output of native methods (e.g. IL2CPP exception throw helpers) so that information on them can be output*
- Various improvements to @ds5678's Call Analysis processing layer, including:
- Full type signatures for generic types*
- Full method signatures*
- Support for the new native method discovery*
- Changing various
Type
fields to beobject
fields so that the same field can be re-used for Types and Type Names (where a direct Type reference isn't possible)*
- Four new output types for dummy dlls*:
dll_default
is the olddummydll
(dummydll
will still work and is an alias ofdll_default
)dll_empty
generates completely empty method bodies. Note these will likely not decompile cleanly, but may be desirable for programmatic use.dll_throw_null
fills all methods withthrow null;
.dll_il_recovery
will eventually be used for IL recovery like classic CPP2IL, but currently is an alias ofdll_throw_null
.
LibCpp2IL
- WASM: Fixed an issue with reading wasm binaries which could result in errors relating to reading beyond the end of a stream.
- WASM: Fixed an issue with calculating function pointers in WASM binaries.
- WASM: Fixed an issue with incorrect field offsets in WASM binaries.
- ELF: Properly handle addresses outside of file-backed regions. Thanks to @LukeFZ in #240!
- MACH-O: Add support for loading the exported function list.
- Removed LibCpp2ILUtils.VersionAwareSizeOf, because it used reflection to determine the size of structs, which was slow and didn't work with trimming.
- Further increased the sanity limit for finding the Il2CppMetadataRegistration struct on metadata version 27 (Unity 2020.2) and later
All Projects
- Dependency updates, including notably some changes to utilities pulled in from AssetRipper*
- Miscellanous fixes to ensure proper NativeAOT/Trimming support*
Plugins
- New plugin: Cpp2IL.Plugin.StrippedCodeRegSupport.
- Some games have now been observed in the wild, often compiled using "master" compilation settings, which inline the entire Il2CppCodeRegistration struct. This results in errors like "failed to find pCodegenModules!". Using this plugin can allow loading these games, albeit without any information on generic types.
- As a reminder, plugins are loaded from a
Plugins
directory in the current working directory. Also, the OrbisPkg plugin requires separate downloading of LibOrbisPkg and the dll to also be placed in the Plugins directory.
* Any changelog entry noted with an asterisk was contributed by @ds5678 via pull requests. Thanks for all the hard work!
Full Changelog: 2022.1.0-pre-release.12...2022.1.0-pre-release.13