Загрузка...

Создание своего билдера малвари на C++

Тема в разделе C/C++ создана пользователем enjeymaster 2 дек 2022. 460 просмотров

  1. enjeymaster
    enjeymaster Автор темы 2 дек 2022 1 17 ноя 2022
    • КОД В МАЛВАРИ НАЧАЛО
    Пишем глобальную переменную в коде своей малвари.
    Длина переменной url[121] должны не быть меньше той, что вы будете в нее записывать.
    C
    int url[121]{ 'e', 'n', 'j', 'e', 'y', 'u', 'r', 'l' };
    Когда будут произведены манипуляции с билдером, приведем наши данные в string
    C
    string inttostr(int integral[], int size) {
    string data;
    for (int i = 0; i < size; i++) {
    data += (char)(integral[i]);
    }
    return data;
    }
    C
    string url_ = inttostr(url, sizeof(url) / sizeof(*url));

    // url_ примет значение которые было введено в билдере.
    • КОД В МАЛВАРИ КОНЕЦ

    • КОД В БИЛДЕРЕ НАЧАЛО
    Читаем нашу заранее скомпилированную марварь (Стаб) со всем исполнительным кодом + нашей переменной.
    В стабе уже должен быть код с использованием нашей переменной, пример будет ниже.

    C
    vector<unsigned char> stub_bytes; // ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ
    ifstream stubf("stub.exe", std::ios::binary); // stub.exe - находится в одной директории с нашим билдером.

    while (!stubf.eof()) {
    stub_bytes.push_back(stubf.get());
    }
    stubf.close();

    Далее ищем в нашем файле смещение на нашу переменную и записываем его.
    C
    int findVar(vector<unsigned char> bytes, string tofind) {
    int start = 0;
    for (int i = 0; i < bytes.size(); i++) {
    for (int a = 0; a <= tofind.size(); a++) {
    if (a == 0)
    start = i;
    if (bytes[i + a] == tofind[a]) {
    i += 3;
    //cout << tofind[a] << " " << i << endl;
    if (a == tofind.size()) {
    return start;
    }
    }
    else {
    goto next;
    }
    }
    next:;
    }
    return 0;
    }
    Пример использования функции выше:
    C
    int url_start = findVar(stub_bytes, "enjeyurl");

    if (url_start == 0)
    cout << "[ENJEY LOG] Offset url is not found") << endl;
    Далее будет код замещения нашей старой переменной, на новую.
    C
    void setVar(int offset, int size, string toset) {
    int stringcout = 0;
    for (int i = 0; i < size * 4; i += 4) {
    stub_bytes[offset + i] = (char)toset[stringcout];
    stringcout++;
    }
    }
    И пример к функции выше:
    C
    string neurl;
    std::getline(cin, neurl); // вводим данные в консоль
    if (neurl.length() < 100)
    error("[ENJEY LOG] URL size invalid");

    setVar(url_start, neurl.size(), neurl);
    Пишем наши измененные байты в новый файл.
    C
    ofstream build("build.exe", ios::binary);
    for (int i = 0; i < stub_bytes.size(); i++)
    build << stub_bytes[i];
    build.close();
    • КОД В БИЛДЕРЕ КОНЕЦ


     
  2. Onlyinc
    Onlyinc 2 дек 2022 76 16 окт 2021
    Следующая статья: пишем гарбадж коллектор для плюсов в 2 строки
     
  3. unnamed001
    unnamed001 3 дек 2022 5996 2 сен 2020
    ахахахахахах блять гениальный билдер
     
    1. enjeymaster Автор темы
Top
Загрузка...