diff --git a/BepInEx.IL2CPP/Il2CppInteropManager.cs b/BepInEx.IL2CPP/Il2CppInteropManager.cs index d15b0d5..ea76d91 100644 --- a/BepInEx.IL2CPP/Il2CppInteropManager.cs +++ b/BepInEx.IL2CPP/Il2CppInteropManager.cs @@ -7,6 +7,7 @@ using System.Net.Http; using System.Reflection; using System.Security.Cryptography; using System.Text; +using System.Text.RegularExpressions; using BepInEx.Configuration; using BepInEx.IL2CPP.Hook; using BepInEx.IL2CPP.Logging; @@ -48,6 +49,15 @@ internal static class Il2CppInteropManager .AppendLine("The URL can include {VERSION} template which will be replaced with the game's Unity engine version.") .ToString()); + private static readonly ConfigEntry ConfigUnhollowerDeobfuscationRegex = ConfigFile.CoreConfig.Bind( + "IL2CPP", "UnhollowerDeobfuscationRegex", + string.Empty, + new StringBuilder() + .AppendLine("The RegEx string to pass to Il2CppAssemblyUnhollower for renaming obfuscated names.") + .AppendLine("All types and members matching this RegEx will get a name based on their signature,") + .AppendLine("resulting in names that persist after game updates.") + .ToString()); + private static readonly ConfigEntry DumpDummyAssemblies = ConfigFile.CoreConfig.Bind( "IL2CPP", "DumpDummyAssemblies", false, @@ -285,6 +295,9 @@ internal static class Il2CppInteropManager OutputDir = IL2CPPInteropAssemblyPath, UnityBaseLibsDir = Directory.Exists(UnityBaseLibsDirectory) ? UnityBaseLibsDirectory : null, Parallel = canRunParallel, + ObfuscatedNamesRegex = !string.IsNullOrEmpty(ConfigUnhollowerDeobfuscationRegex.Value) + ? new Regex(ConfigUnhollowerDeobfuscationRegex.Value) + : null, }; var renameMapLocation = Path.Combine(Paths.BepInExRootPath, "DeobfuscationMap.csv.gz");