Последнее время мода пошла external гайды пилить. Вот я от моды решил не отставать. Будем писать bhop. Писать я буду грязный код, одной функцией. Для понимание этого хватит. Создаем проект, подключаем библиотеки. За одно пишем главную функцию int main() #include <Windows.h> #include <TlHelp32.h> int main() { } Добавляем переменные с адресами DWORD Client = NULL; // тут будет адрес client_panorama.dll DWORD m_fFlags = 0x104; // Состояние (сдвиг) DWORD dwForceJump = 0x5170E70;//прыжок DWORD Localplayer = 0xCBD6A4; Откроем Хэндл и получаем pID DWORD pID = NULL; HANDLE Handle = NULL; HWND hwnd = NULL; do { HWND hwnd = FindWindowA(0, "Counter-Strike: Global Offensive"); // ищем ксго if (!hwnd) continue; GetWindowThreadProcessId(hwnd, &pID);//получаем pID Handle = OpenProcess(PROCESS_ALL_ACCESS, false, pID);//открываем хэндл для взаимодействия с процессом Sleep(50); } while (!Handle); Получаем адрес модуля client_panorama.dll HANDLE ModulList = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID);//слепок модулей MODULEENTRY32 mEntry;//объект модуля mEntry.dwSize = sizeof(mEntry); do { if (!strcmp(mEntry.szModule, "client_panorama.dll")) //Сверяем модуль { CloseHandle(ModulList);//закрываем HANDLE Client = (DWORD)mEntry.modBaseAddr; //Получаем адрес модуля break; } } while (Module32Next(ModulList, &mEntry));//переходим к следующему модулю Получим адрес игрока и создадим пару переменных, она нам понадобятся в будущем. int Flag; DWORD player; int jump = 5; int lock = 4; ReadProcessMemory(Handle, (LPVOID)(Client + Localplayer), &player, sizeof(DWORD), 0);//запишем адрес локального игрока(адрес нашего персонажа) Создадим цикл с условием не нажатого Delete дабы была возможность завершить работу чита Внутри цикла создаем условие нажатия Space чтоб быхоп не работал всегда, а только при зажатом пробеле В конце цикла уменьшаем нагрузку на процессор while (!GetAsyncKeyState(VK_DELETE))// нужно для закрытия по нажатию на клавишу DELETE { if (GetAsyncKeyState(VK_SPACE)) // если нажали пробел, включаем Bhop { } Sleep(5); } Внутри данной конструкции: получаем статус игрока, затем проверяем, если он стоит или сидит мы прыгаем ReadProcessMemory(Handle, (LPVOID)(player + m_fFlags), &Flag, sizeof(int), 0); if (Flag == 257 || Flag == 263) //257 - стоит, 263 = присел WriteProcessMemory(Handle, (LPVOID)(Client + dwForceJump), (LPCVOID)&jump, sizeof(int), 0);//пишем в память что нужно прыгнуть else WriteProcessMemory(Handle, (LPVOID)(Client + dwForceJump), (LPCVOID)&lock, sizeof(int), 0);//возвращяем значение В конце main добавляем CloseHandle(Handle);//закрываем HANDLE return 0; Готово!