From 2915c63c514c82ac00c4d4b8081095a7c6435508 Mon Sep 17 00:00:00 2001 From: Cj <161484149+CJ-SPT@users.noreply.github.com> Date: Sat, 11 Jan 2025 05:50:19 -0500 Subject: [PATCH] Thread hollow process --- RecodeItLib/Remapper/ReMapper.cs | 39 ++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/RecodeItLib/Remapper/ReMapper.cs b/RecodeItLib/Remapper/ReMapper.cs index 613bd25..10f5db2 100644 --- a/RecodeItLib/Remapper/ReMapper.cs +++ b/RecodeItLib/Remapper/ReMapper.cs @@ -322,9 +322,8 @@ public class ReMapper Logger.LogSync(e); throw; } - - Logger.LogSync("\nCreating Hollow...", ConsoleColor.Green); - Hollow(); + + StartHollow(); var hollowedDir = Path.GetDirectoryName(OutPath); var hollowedPath = Path.Combine(hollowedDir!, "Assembly-CSharp-hollowed.dll"); @@ -354,17 +353,37 @@ public class ReMapper /// /// Hollows out all logic from the dll /// - private void Hollow() + private void StartHollow() { - foreach (var type in Module!.GetTypes()) + Logger.LogSync("\nCreating Hollow...", ConsoleColor.Green); + + var tasks = new List(Module!.GetTypes().Count()); + foreach (var type in Module.GetTypes()) { - foreach (var method in type.Methods.Where(m => m.HasBody)) + tasks.Add(Task.Run(() => { - if (!method.HasBody) continue; + try + { + HollowType(type); + } + catch (Exception ex) + { + Logger.LogSync($"Exception in task: {ex.Message}", ConsoleColor.Red); + } + })); + } + + Task.WaitAll(tasks.ToArray()); + } - method.Body = new CilBody(); - method.Body.Instructions.Add(OpCodes.Ret.ToInstruction()); - } + private void HollowType(TypeDef type) + { + foreach (var method in type.Methods.Where(m => m.HasBody)) + { + if (!method.HasBody) continue; + + method.Body = new CilBody(); + method.Body.Instructions.Add(OpCodes.Ret.ToInstruction()); } } } \ No newline at end of file