❗ Looking For Testers - IL2CPP Framework

Posts 1–6 of 6 · Page 1 of 1
❗ Looking For Testers - IL2CPP Framework
⚠️ EXTREMELY EARLY DEVELOPMENT WARNING ⚠️

I’ve just released my MDB IL2CPP Framework, a project aimed at reverse-engineering IL2CPP Unity games without requiring global-metadata.dat. The goal is to enable mod development in a MelonLoader / BepInEx-style (Unity-syntax) workflow, without needing to generate dummy DLLs.

This forum has been largely inactive for the past few years, but I’m hoping to help revive RotMG reverse engineering within this community.

The game is still obfuscated, but I plan to build deobfuscation tools that leverage RVA patterns, metadata indexes, and probabilistic matching based on type structure and parameters.

The framework currently ships with two example mods designed to make reverse engineering easier:
- A rough UnityExplorer-style tool built using IMGUI
- A Unity debug hook that forwards Unity logs to the console

I’m unsure whether directly posting the "common project hosting website" link is allowed here, but you can find the repository by searching “MDB IL2CPP” on "common project hosting website". The README contains extensive documentation, examples, and explanations.

Known Limitations:
- You must provide your own injector (RotMG appears to have sideloading checks).
- The il2cpp_domain_get_assemblies() export is renamed on each game update, meaning the framework will break until updated. I’m actively exploring ways to resolve exports without relying on exact names.
- You MUST have a brain to use this. This framework has a higher learning curve than MelonLoader or BepInEx. Detailed setup instructions are available on the "common project hosting website" release page.
- If you run into any issues, please open an issue on "common project hosting website". I’m actively looking to make this framework as flexible and robust as possible.
- I am not making this just for RotMG. The plan is to make this a better alternative for IL2CPP games than BepInEx or MelonLoader, so I am not going to build any RotMG functionality directly into the framework.

*Edit looks like the common website for hosting project repositories is censored lol. No idea if this post is against the rules, just trying to bring this community back to life.
Just updated it to account for the changing il2cpp api exports. I think it works.
Hey Zaclin, huge thanks for releasing this framework! It's great to see efforts to revive RotMG modding.

I've been testing the framework and managed to get it running successfully.

1. Injection works and the framework loads correctly

2. I successfully generated GameSDK.ModHost.dll (though I didn't get a separate GameSDK.Core.dll, not sure if that's intended).

3. My mod loads correctly and I can interact with basic GameObjects (like GameController) using the GameObject.Find syntax.


GameObject.Find("GameController") works perfectly and returns a valid object. However, I'm hitting an InvalidCastException when trying to retrieve specific script components using the generated types: var acceleratorsManager = (AcceleratorsManager)gameController.GetComponent(t ypeof(AcceleratorsManager)); It seems standard casting doesn't work for me.

Additional question to you. Do you have any additional references, code snippets, or API documentation aside from the README that you can share? Anything is much appreciated to help navigate the learning curve.

Thanks again, God bless.
Quote Originally Posted by SystemCoreRPC View Post
Hey Zaclin, huge thanks for releasing this framework! It's great to see efforts to revive RotMG modding.

I've been testing the framework and managed to get it running successfully.

1. Injection works and the framework loads correctly

2. I successfully generated GameSDK.ModHost.dll (though I didn't get a separate GameSDK.Core.dll, not sure if that's intended).

3. My mod loads correctly and I can interact with basic GameObjects (like GameController) using the GameObject.Find syntax.


GameObject.Find("GameController") works perfectly and returns a valid object. However, I'm hitting an InvalidCastException when trying to retrieve specific script components using the generated types: var acceleratorsManager = (AcceleratorsManager)gameController.GetComponent(t ypeof(AcceleratorsManager)); It seems standard casting doesn't work for me.

Additional question to you. Do you have any additional references, code snippets, or API documentation aside from the README that you can share? Anything is much appreciated to help navigate the learning curve.

Thanks again, God bless.
Thanks for checking it out. It's been a couple weeks since I have worked on the framework, busy with other projects.

I had hundreds of changes waiting to be pushed that will address A LOT of issues. Ill look at pushing these soon. I spent hours creating the documentation in the beginning and it became monstrous in size, so I deleted 90% of it (maybe a bit too much). Ill work on creating better up-to-date examples/documentation.
Great to hear about the pending changes. Thanks for working on the documentation. Can't wait to try out the update when it drops.
Quote Originally Posted by SystemCoreRPC View Post
Great to hear about the pending changes. Thanks for working on the documentation. Can't wait to try out the update when it drops.
Just released 0.4.0, it addresses a ton of issues and things I didn't like. I haven't been able to test it nearly as much as 0.3.0, create a issue if you come across any problems.

I've completely overhauled how generics are handled, so hopefully your original issue is resolved.
Posts 1–6 of 6 · Page 1 of 1

Post a Reply

Similar Threads

Talk with us