Il2CppInterop icon indicating copy to clipboard operation
Il2CppInterop copied to clipboard

A tool interoperate between CoreCLR and Il2Cpp at runtime

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