Skip to content

Releases: SamboyCoding/Cpp2IL

Milestone 2021.5.2

30 Oct 11:53
Compare
Choose a tag to compare

This is a hotfix update.

Analysis

  • Fixes an issue with constant definition casting causing exceptions.

Once again, LibCpp2IL has not been updated and remains on 2021.5.0

Milestone 2021.5.1

30 Oct 10:29
Compare
Choose a tag to compare

This is a small hotfix update.

Dummy DLLs

  • Generate Address attribute with slot parameter on abstract methods. Thanks to @knah in #49

Analysis

  • Resolved numerous exceptions that could occur during analysis, hopefully improving the number of methods which analyze and reducing console spam.

LibCpp2IL has not been updated and remains on 2021.5.0.

Milestone 2021.5.0

27 Oct 12:40
Compare
Choose a tag to compare

LibCpp2IL

  • Added support for metadata v29 (Unity 2021.2)

Cpp2IL Core

  • Added HarmonyX and a method in the API to patch cecil to give more informative error messages in the event of analysis failure.
  • Added support for metadata v29 (compressed integers etc).

Dummy DLL

  • Correctly set the etype (internal type enum) for System.Object to be object
  • Fixed a lot of explicit method overrides being missed if their declaring type was generic.

Attribute Restoration

  • Support Arm64 code-based attribute restoration like on x86 on versions prior to metadata v29.
  • Support metadata-based attribute restoration for all instruction sets on metadata v29.
    • This is more full-featured than code-based restoration and much faster too
    • From an API point of view, because this is data-based, not code-based, you no longer need to provide a non-null value for KeyFunctionAddresses on v29.

Analysis

  • Hopefully fixed all the remaining cases of failure to save analysed assemblies.
  • Fixed Arm64 KeyFunctionAddresses getting stuck in an infinite loop
  • Log the number of types to analyse and thus the (reasonably pessimistic estimate of) expected time.
  • Performance enhancements to all analysis, including a huge boost to Arm64 analysis speed.
  • Reduced false positives of Arm64 throw helper detection.
  • Support Static Field Reads and Writes on Arm64. Thanks to @Futuremappermydud in #47.
  • Support Immediate value to registers on Arm64. Should help with fields being set to numerical constants.
  • Lots of changes from @gompoc in #48:
    • Conditional statements are now much more intelligent so should be much more readable in decompiled generated IL
    • Conditional moves are now supported on x86, greatly improving analysis of some methods
    • Return values that are constants are now type-corrected to match the expected return type
    • Comparisons with enums now show the enum value rather than a number.

Command Line Wrapper (Cpp2Il itself)

  • Support data.unity3d files, including in APKs, for determining unity version.

Commit f6f012b68c8810beb02796d727df9279f61a034d

commit_f6f012b68c8810beb02796d727df9279f61a034d

Cleanup post-29 restorer, performance optimizations

Commit 6d7c0483599246e4b9f7e41739eb1cbddb070733

commit_6d7c0483599246e4b9f7e41739eb1cbddb070733

Finish fully implementing v29 restoration

Commit 3445771193b71624bb2fe430ea07dd51defd4a27

27 Oct 12:08
3445771
Compare
Choose a tag to compare
commit_3445771193b71624bb2fe430ea07dd51defd4a27

Add CondionalMoveAction and correct constant types used in comparison…

Commit c37aea7eee2de033c274bebaaf963656cbec020b

commit_c37aea7eee2de033c274bebaaf963656cbec020b

Mostly implement attribute restoration for v29

Commit bec04679f03e9f51a5ba7e55f2625e4551757105

commit_bec04679f03e9f51a5ba7e55f2625e4551757105

Fix v27.1 dying

Commit 80bc423333526309e0b8f0cc423b3489bb68e853

commit_80bc423333526309e0b8f0cc423b3489bb68e853

Enable attribute restoration for arm64

Commit f1e2ebe18bd5d839f5c6c6486f826fd37f5b7f19

commit_f1e2ebe18bd5d839f5c6c6486f826fd37f5b7f19

Add reinterpretbytes utility method