├── 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 | 
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
--------------------------------------------------------------------------------