/Il2CppInterop

A tool interoperate between CoreCLR and Il2Cpp at runtime

Primary LanguageC#GNU Lesser General Public License v3.0LGPL-3.0

GitHub Workflow Status GitHub release (latest by date)

CLI Generator Runtime HarmonySupport
NuGet.org (release) BepInEx NuGet (CLI) BepInEx NuGet (Generator) BepInEx NuGet (Runtime) BepInEx NuGet (HarmonySupport )
nuget.bepinex.dev (CI) BepInEx NuGet (CLI) BepInEx NuGet (Generator) BepInEx NuGet (Runtime) BepInEx NuGet (HarmonySupport)

BepInEx fork of Il2CppAssemblyUnhollower is now Il2CppInterop!

Looking for old README and guides? Check out legacy-unhollower branch.

Il2CppInterop is a framework for bridging together Unity's Il2Cpp and .NET's CoreCLR runtimes. The framework various interoperability tools:

  • A tool to generate .NET assemblies from Cpp2IL's output.
  • A runtime library to work with Il2Cpp objects in CoreCLR.
  • Libraries to integrate other tools with Il2Cpp.

The framework allows the use of Il2Cpp domain and objects in it from a managed .NET domain. This includes generic types and methods, arrays, and new object creation.

This project started out as fork of knah/Il2CppAssemblyUnhollower but has been since been modified with new API and fixes to be a standalone project.

Getting started

For plugin developers:

For tool integrators and advanced user:

Used libraries

Bundled into output files:

  • iced by 0xd4d, an x86 disassembler used for xref scanning and possibly more in the future

Used by generator itself:

  • Mono.Cecil by jbevain, the main tool to produce assemblies