├── README.md ├── ReverseHelper.sln └── ReverseHelper ├── App.config ├── Patch ├── ClearConsole.cs ├── EnvironmentPatch.cs ├── ExtractStrings.cs ├── FileDelete.cs ├── HWIDSpoof.cs ├── ProcessKill.cs ├── ProcessStart.cs ├── RequestStringBuilder.cs ├── SaveData │ └── Save.cs ├── StringEquals.cs ├── ThreadSleep.cs └── URLPatch.cs ├── Program.cs ├── Properties └── AssemblyInfo.cs ├── ReverseHelper.csproj ├── Utils └── Utils.cs └── bin └── Debug ├── 0Harmony.dll └── ReverseHelper.exe /README.md: -------------------------------------------------------------------------------- 1 | # ReverseHelper 2 | This tool will help you with .NET ReverseEngineering / Analyzing. It can intercept HTTPRequest URL, Process.Start, File.Delete, Environment.Exit, Process.Kill (has some bugs, working on it), Thread.Sleep, spoof your HardWare-ID, Etc. Etc. - Made by Cabbo. 3 | 4 | # How it works 5 | 6 | It uses Harmony to hook each method, and if needed, it will patch the arguments. 7 | 8 | In action: 9 | 10 | ![image](https://user-images.githubusercontent.com/92642446/194109249-4f23f6a6-7216-4b01-b131-72ef7357ece0.png) 11 | 12 | If you would like to see more features, leave a star, follow, and contact me :) 13 | 14 | # Do you want to contact me? 15 | 16 | Discord: FreeCabbo10#6558 17 | 18 | Telegram: https://t.me/cabboshiba 19 | -------------------------------------------------------------------------------- /ReverseHelper.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.3.32901.215 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReverseHelper", "ReverseHelper\ReverseHelper.csproj", "{9D3E2103-D452-4CFB-8387-5D7FC833F1D1}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {9D3E2103-D452-4CFB-8387-5D7FC833F1D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {9D3E2103-D452-4CFB-8387-5D7FC833F1D1}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {9D3E2103-D452-4CFB-8387-5D7FC833F1D1}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {9D3E2103-D452-4CFB-8387-5D7FC833F1D1}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {60864D22-F962-42C6-B2E4-FC8A52CC707B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /ReverseHelper/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/ClearConsole.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class ClearConsole 11 | { 12 | [HarmonyPatch(typeof(System.Console), nameof(System.Console.Clear), MethodType.Normal)] 13 | class CLSPath 14 | { 15 | static bool Prefix() 16 | { 17 | Console.ForegroundColor = ConsoleColor.Green; 18 | try 19 | { 20 | Program.Log($"Triggered Console.Clear"); 21 | } 22 | catch (Exception ex) 23 | { 24 | Program.Log($"Error during Patch:\n {ex}"); 25 | } 26 | Console.ResetColor(); 27 | return false; // false = do not clear console ----- true = clear console 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/EnvironmentPatch.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class EnvironmentPatch 11 | { 12 | [HarmonyPatch(typeof(System.Environment), nameof(System.Environment.Exit), new[] { typeof(int) })] 13 | class FixEnvironmentExit 14 | { 15 | static bool Prefix(int exitCode) 16 | { 17 | Console.ForegroundColor = ConsoleColor.Green; 18 | Program.Log($"Triggered Environment.Exit with code: {exitCode}"); 19 | Console.ResetColor(); 20 | return false; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/ExtractStrings.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using ReverseHelper.Patch.SaveData; 8 | 9 | namespace ReverseHelper.Patch 10 | { 11 | internal class ExtractStrings 12 | { 13 | [HarmonyPatch(typeof(System.Text.Encoding), nameof(System.Text.Encoding.Default.GetBytes), new[] { typeof(string) })] 14 | class GetStrings 15 | { 16 | static bool Prefix(ref string s) 17 | { 18 | Console.ForegroundColor = ConsoleColor.Green; 19 | try 20 | { 21 | Program.Log($"Triggered Encoding.Default.GetBytes: {s}"); 22 | Save.Strings(s); 23 | } 24 | catch (Exception ex) 25 | { 26 | Program.Log($"Error during Patch:\n {ex}"); 27 | } 28 | Console.ResetColor(); 29 | return true; 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/FileDelete.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class FileDelete 11 | { 12 | [HarmonyPatch(typeof(System.IO.File), nameof(System.IO.File.Delete), new[] { typeof(string) })] 13 | class FileDeletePatch 14 | { 15 | static bool Prefix(ref string path) 16 | { 17 | Console.ForegroundColor = ConsoleColor.Green; 18 | try 19 | { 20 | Program.Log($"Triggered File.Delete with FilePath: {path}"); 21 | //path = ""; use custom path if you want 22 | } 23 | catch (Exception ex) 24 | { 25 | Program.Log($"Error during Patch:\n {ex}"); 26 | } 27 | Console.ResetColor(); 28 | return true; //leave true 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/HWIDSpoof.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using Microsoft.Win32.SafeHandles; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Security.Principal; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace ReverseHelper.Patch 11 | { 12 | internal class HWIDSpoof 13 | { 14 | private static bool SpoofHWID = true; 15 | [HarmonyPatch(typeof(System.Security.Principal.SecurityIdentifier), nameof(System.Security.Principal.SecurityIdentifier.Value), MethodType.Getter)] 16 | class Spoof 17 | { 18 | static bool Prefix(ref string __result) 19 | { 20 | Console.ForegroundColor = ConsoleColor.Green; 21 | try 22 | { 23 | Program.Log("Triggered SecurityIdentifier.Value [HardWare-ID]."); 24 | if(SpoofHWID == true) 25 | { 26 | Program.Log("Spoofing HardWare-ID..."); 27 | string HWIDSpoofed = Utils.RandomString(45); 28 | __result = HWIDSpoofed; 29 | Program.Log($"Succesfully spoofed HardWare-ID [{__result}]"); 30 | Console.ResetColor(); 31 | return false; 32 | } 33 | } 34 | catch (Exception ex) 35 | { 36 | Program.Log($"Error during Patch:\n {ex}"); 37 | } 38 | Console.ResetColor(); 39 | return true; 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/ProcessKill.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class ProcessKill 11 | { 12 | //[HarmonyPatch(typeof(System.Diagnostics.Process), nameof(System.Diagnostics.Process.Kill), MethodType.Normal)] //it has some bugs, I'll try to fix :) 13 | class ProcessKillPatch 14 | { 15 | static bool Prefix() 16 | { 17 | Console.ForegroundColor = ConsoleColor.Green; 18 | try 19 | { 20 | Program.Log("Triggered Process.Kill"); 21 | } 22 | catch (Exception ex) 23 | { 24 | Program.Log($"Error during Patch:\n {ex}"); 25 | } 26 | Console.ResetColor(); 27 | return false; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/ProcessStart.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using ReverseHelper.Patch.SaveData; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Diagnostics; 6 | using System.Linq; 7 | using System.Security; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | 11 | namespace ReverseHelper.Patch 12 | { 13 | internal class ProcessStart 14 | { 15 | [HarmonyPatch(typeof(System.Diagnostics.Process), nameof(System.Diagnostics.Process.Start), new[] { typeof(string) })] 16 | class ProcessStartPatch 17 | { 18 | static bool Prefix(ref string fileName) 19 | { 20 | Console.ForegroundColor = ConsoleColor.Green; 21 | try 22 | { 23 | Program.Log($"Triggered Process.Start with ProcessName: {fileName}"); 24 | //fileName = ""; //you can also patch filename / filepath 25 | } 26 | catch (Exception ex) 27 | { 28 | Program.Log($"Error during Patch:\n {ex}"); 29 | } 30 | Console.ResetColor(); 31 | return false; 32 | } 33 | } 34 | [HarmonyPatch(typeof(System.Diagnostics.Process), nameof(System.Diagnostics.Process.Start), new[] { typeof(ProcessStartInfo) })] 35 | class ProcessStartPatchProcess 36 | { 37 | static bool Prefix(ref ProcessStartInfo startInfo) 38 | { 39 | Console.ForegroundColor = ConsoleColor.Green; 40 | try 41 | { 42 | Program.Log($"Triggered Process.Start with ProcessStartInfo: {startInfo.FileName}"); 43 | Program.Log($"Arguments: {startInfo.Arguments}"); 44 | Program.Log($"CreateNoWindow: {startInfo.CreateNoWindow}"); 45 | Program.Log($"UseShellExecute: {startInfo.UseShellExecute}"); 46 | //fileName = ""; //you can also patch filename / filepath 47 | 48 | } 49 | catch (Exception ex) 50 | { 51 | Program.Log($"Error during Patch:\n {ex}"); 52 | } 53 | Console.ResetColor(); 54 | return false; //this will block Process.Start 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/RequestStringBuilder.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class RequestStringBuilder 11 | { 12 | [HarmonyPatch(typeof(System.IO.StreamReader), nameof(System.IO.StreamReader.ReadToEnd), MethodType.Normal)] //used to download strings from webclient 13 | class StringBuilder 14 | { 15 | static bool Prefix(ref string __result) 16 | { 17 | Console.ForegroundColor = ConsoleColor.Red; 18 | try 19 | { 20 | Program.Log("Triggered StreamReader.ReadToEnd."); 21 | //__result = ""; here you can choose your custom response 22 | } 23 | catch (Exception ex) 24 | { 25 | Program.Log($"Error during Patch:\n {ex}"); 26 | } 27 | Console.ResetColor(); 28 | return false; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/SaveData/Save.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.Remoting.Contexts; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.IO; 8 | 9 | namespace ReverseHelper.Patch.SaveData 10 | { 11 | internal class Save 12 | { 13 | private static string LogPath = Environment.CurrentDirectory + @"\HelperLog.txt"; 14 | private static string ExtractedStrings = Environment.CurrentDirectory + @"\Strings.txt"; 15 | public static bool Init() 16 | { 17 | try 18 | { 19 | if (!File.Exists(LogPath)) 20 | { 21 | File.Create(LogPath); 22 | } 23 | if (!File.Exists(ExtractedStrings)) 24 | { 25 | File.Create(ExtractedStrings); 26 | } 27 | return true; 28 | } 29 | catch(Exception ex) 30 | { 31 | return false; 32 | } 33 | } 34 | public static bool Log(string Data) 35 | { 36 | try 37 | { 38 | File.AppendAllText(LogPath, $"{Data}\n"); 39 | return true; 40 | } 41 | catch(Exception ex) 42 | { 43 | return false; 44 | } 45 | } 46 | public static bool Strings(string Data) 47 | { 48 | try 49 | { 50 | File.AppendAllText(ExtractedStrings, $"{Data}\n"); 51 | return true; 52 | } 53 | catch (Exception ex) 54 | { 55 | return false; 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/StringEquals.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using ReverseHelper.Patch.SaveData; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ReverseHelper.Patch 10 | { 11 | internal class StringEquals 12 | { 13 | // [HarmonyPatch(typeof(string), nameof(string.Equals), new[] { typeof(string), typeof(string) })] 14 | class StringEqualsPatch 15 | { 16 | static bool Prefix(ref string a, ref string b) 17 | { 18 | Console.ForegroundColor = ConsoleColor.Green; 19 | try 20 | { 21 | Console.WriteLine($"Triggered String.Equals:"); 22 | Console.WriteLine($"First string: {a}\nSecond string: {b}"); 23 | Save.Log($"String.Equals: {a} - {b}"); 24 | // a = ""; 25 | //b = ""; //you can modify also the strings 26 | } 27 | catch (Exception ex) 28 | { 29 | Program.Log($"Error during Patch:\n {ex}"); 30 | } 31 | Console.ResetColor(); 32 | return true; 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/ThreadSleep.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Security.Principal; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ReverseHelper.Patch 10 | { 11 | internal class ThreadSleep 12 | { 13 | // [HarmonyPatch(typeof(System.Threading.Thread), nameof(System.Threading.Thread.Sleep), new[] {typeof(int)})] 14 | class ThreadSleepPatch 15 | { 16 | static bool Prefix(ref int millisecondsTimeout) 17 | { 18 | Console.ForegroundColor = ConsoleColor.Green; 19 | try 20 | { 21 | Program.Log($"Triggered Thread.Sleep with MS: {millisecondsTimeout}"); 22 | //millisecondsTimeout = 1000; //edit your value and return true; 23 | } 24 | catch (Exception ex) 25 | { 26 | Program.Log($"Error during Patch:\n {ex}"); 27 | } 28 | Console.ResetColor(); 29 | return false; // false = 0 ms --- true = custom ms 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ReverseHelper/Patch/URLPatch.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ReverseHelper.Patch 9 | { 10 | internal class URLPatch 11 | { 12 | [HarmonyPatch(typeof(System.Net.WebRequest), nameof(System.Net.WebRequest.Create), new[] { typeof(Uri), typeof(bool) })] 13 | class URLRequestPatch 14 | { 15 | static bool Prefix(ref Uri requestUri, ref bool useUriBase) 16 | { 17 | Console.ForegroundColor = ConsoleColor.Green; 18 | try 19 | { 20 | Program.Log("Triggered WebRequest.Create with URL: " + requestUri.ToString()); 21 | Program.Log("Fixing..."); 22 | System.Uri Uri = new System.Uri(Program.NewUrl); 23 | //requestUri = Uri; 24 | Program.Log("Fixed URL: " + requestUri); 25 | } 26 | catch (Exception ex) 27 | { 28 | Program.Log($"Error during Patch:\n {ex}"); 29 | } 30 | Console.ResetColor(); 31 | return true; 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ReverseHelper/Program.cs: -------------------------------------------------------------------------------- 1 | using HarmonyLib; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Diagnostics; 10 | using ReverseHelper.Patch; 11 | using ReverseHelper.Patch.SaveData; 12 | 13 | namespace ReverseHelper 14 | { 15 | internal class Program 16 | { 17 | private static string File = null; 18 | public static string NewUrl = "https://github.com/CabboShiba"; //change ur custom url 19 | static void Main(string[] args) 20 | { 21 | Save.Init(); 22 | Console.Title = ".NET ReverseEngineering Helper by Cabbo - https://github.com/CabboShiba"; 23 | Log("ReverseHelper started!"); 24 | try 25 | { 26 | File = args[0]; 27 | } 28 | catch (Exception ex) 29 | { 30 | Log("Please use Drag&Drop."); 31 | Utils.Leave(); 32 | } 33 | try 34 | { 35 | object[] parameters = null; 36 | var assembly = Assembly.LoadFile(Path.GetFullPath(File)); 37 | var paraminfo = assembly.EntryPoint.GetParameters(); 38 | parameters = new object[paraminfo.Length]; 39 | Harmony patch = new Harmony("DotNetReverseHelper_https://github.com/CabboShiba"); 40 | patch.PatchAll(Assembly.GetExecutingAssembly()); 41 | assembly.EntryPoint.Invoke(null, parameters); 42 | } 43 | catch (Exception ex) 44 | { 45 | Log($"Could not load {File}\n{ex}"); 46 | } 47 | Console.ReadLine(); 48 | } 49 | public static void Log(string Data) 50 | { 51 | string Log = $"[{DateTime.Now} - RE ] {Data}"; 52 | Console.WriteLine(Log); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /ReverseHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Le informazioni generali relative a un assembly sono controllate dal seguente 6 | // set di attributi. Modificare i valori di questi attributi per modificare le informazioni 7 | // associate a un assembly. 8 | [assembly: AssemblyTitle("ReverseHelper")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ReverseHelper")] 13 | [assembly: AssemblyCopyright("Copyright © 2022")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili 18 | // ai componenti COM. Se è necessario accedere a un tipo in questo assembly da 19 | // COM, impostare su true l'attributo ComVisible per tale tipo. 20 | [assembly: ComVisible(false)] 21 | 22 | // Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi 23 | [assembly: Guid("9d3e2103-d452-4cfb-8387-5d7fc833f1d1")] 24 | 25 | // Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: 26 | // 27 | // Versione principale 28 | // Versione secondaria 29 | // Numero di build 30 | // Revisione 31 | // 32 | // È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build 33 | // usando l'asterisco '*' come illustrato di seguito: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ReverseHelper/ReverseHelper.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {9D3E2103-D452-4CFB-8387-5D7FC833F1D1} 8 | Exe 9 | ReverseHelper 10 | ReverseHelper 11 | v4.8 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\..\0Harmony.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /ReverseHelper/Utils/Utils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Diagnostics; 8 | 9 | namespace ReverseHelper 10 | { 11 | internal class Utils 12 | { 13 | public static void Leave() 14 | { 15 | Program.Log("Press enter to leave..."); 16 | Console.ReadLine(); 17 | Process.GetCurrentProcess().Kill(); 18 | } 19 | 20 | private static Random Random = new Random(); 21 | 22 | public static string RandomString(int length) 23 | { 24 | const string chars = "qwertyuioplkjhgfdsazxcvbnmABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 25 | return new string(Enumerable.Repeat(chars, length) 26 | .Select(s => s[Random.Next(s.Length)]).ToArray()); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ReverseHelper/bin/Debug/0Harmony.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lucia361/ReverseHelper/b617807c10878949c92fd20555fe0b0067d5a1f9/ReverseHelper/bin/Debug/0Harmony.dll -------------------------------------------------------------------------------- /ReverseHelper/bin/Debug/ReverseHelper.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lucia361/ReverseHelper/b617807c10878949c92fd20555fe0b0067d5a1f9/ReverseHelper/bin/Debug/ReverseHelper.exe --------------------------------------------------------------------------------