SamboyCoding / Cpp2IL

Work-in-progress tool to reverse unity's IL2CPP toolchain.
MIT License
1.56k stars 178 forks source link

ISIL to CIL Conversion #223

Open ds5678 opened 1 year ago

ds5678 commented 1 year ago

Context

Currently, the development branch only supporting empty method filling, whilst the legacy branch supports some platform-specific method body recovery.

Motivation for posting this issue

I needed a good place to point people who ask about it in the AssetRipper community. Do not interpret this as a request from me to do any work.

ISIL

ISIL (instruction set independent language) is a custom framework on the development branch designed to abstract over differences between game platforms.

Challenges

Porting the method body conversion is far from a simple copy-paste:

This is a massive feature, so users should either be patient or give @SamboyCoding lots of money.

Workaround for impatient users

It's amazing that Cpp2IL supported method body recovery at one point. Hopefully, it will again someday, but there's no timescale on that implementation.

Legacy releases are the only releases that support method body recovery. They have names of the form 2022.0.X where X is any number from 0 to infinity.

  1. Download the appropriate file for your operating system.
  2. Extract the contents to a new folder.
  3. Open a command prompt or terminal.
  4. Use cd path/to/Cpp2IL.exe
  5. Use appropriate command line options. You'll likely want --just-give-me-dlls-asap-dammit to be one of the arguments.
  6. Load the Cpp2IL output into ILSpy.
  7. If desirable, ILSpy supports saving decompiled text files to the disk.
Mustafa-Agha commented 1 year ago

@ds5678 The workaround still gives me empty methods

ds5678 commented 1 year ago

@Mustafa-Agha legacy support might not have included your platform. In that case, empty methods would be expected.

JeanTheFungle commented 10 months ago

@SamboyCoding when this issue will be fixed ☺️

JeanTheFungle commented 10 months ago

@Mustafa-Agha legacy support might not have included your platform. In that case, empty methods would be expected.

What do you mean "legacy suport might not included in your platfrom" ?

JeanTheFungle commented 10 months ago

@ds5678 ?

ds5678 commented 10 months ago

@JeanAU You are not entitled to an answer, especially after your rude question (when this issue will be fixed).

What do you mean "legacy suport might not included in your platfrom" ?

That is not what I said. What I said means:

The legacy branch of Cpp2IL, which could recover CIL instructions for some CPU architectures and some game platforms, might not have supported CIL recovery on the specific architecture or platform of that particular game, even if it could do basic recovery.
ds5678 commented 10 months ago

Before you ask: https://en.wikipedia.org/wiki/Common_Intermediate_Language

ds5678 commented 10 months ago

Now be patient or put your wallet where your mouth is. What you want might never come without financial incentive.

JeanTheFungle commented 10 months ago

@Mustafa-Agha legacy support might not have included your platform. In that case, empty methods would be expected.

how i can know legacy support have in my computer ?

JeanTheFungle commented 10 months ago

@Mustafa-Agha legacy support might not have included your platform. In that case, empty methods would be expected.

how i can know if my pc dosent support legacy version ?