406 lines
11 KiB
C#
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,
|
|
}
|
|
}
|
|
}
|