error
-
Автор темы
- #1
Последнее время мода пошла external гайды пилить. Вот я от моды решил не отставать.
Будем писать bhop.
Писать я буду грязный код, одной функцией.
Для понимание этого хватит.
Создаем проект, подключаем библиотеки. За одно пишем главную функцию int main()
Добавляем переменные с адресами
Откроем Хэндл и получаем pID
Получаем адрес модуля client_panorama.dll
Получим адрес игрока и создадим пару переменных, она нам понадобятся в будущем.
Создадим цикл с условием не нажатого Delete дабы была возможность завершить работу чита
Внутри цикла создаем условие нажатия Space чтоб быхоп не работал всегда, а только при зажатом пробеле
В конце цикла уменьшаем нагрузку на процессор
Будем писать bhop.
Писать я буду грязный код, одной функцией.
Для понимание этого хватит.
Создаем проект, подключаем библиотеки. За одно пишем главную функцию int main()
C++:
#include <Windows.h>
#include <TlHelp32.h>
int main()
{
}
C++:
DWORD Client = NULL; // тут будет адрес client_panorama.dll
DWORD m_fFlags = 0x104; // Состояние (сдвиг)
DWORD dwForceJump = 0x5170E70;//прыжок
DWORD Localplayer = 0xCBD6A4;
C++:
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);
C++:
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));//переходим к следующему модулю
C++:
int Flag;
DWORD player;
int jump = 5;
int lock = 4;
ReadProcessMemory(Handle, (LPVOID)(Client + Localplayer), &player, sizeof(DWORD), 0);//запишем адрес локального игрока(адрес нашего персонажа)
Внутри цикла создаем условие нажатия Space чтоб быхоп не работал всегда, а только при зажатом пробеле
В конце цикла уменьшаем нагрузку на процессор
C++:
while (!GetAsyncKeyState(VK_DELETE))// нужно для закрытия по нажатию на клавишу DELETE
{
if (GetAsyncKeyState(VK_SPACE)) // если нажали пробел, включаем Bhop
{
}
Sleep(5);
}
Внутри данной конструкции:
получаем статус игрока,
затем проверяем, если он стоит или сидит мы прыгаем
получаем статус игрока,
затем проверяем, если он стоит или сидит мы прыгаем
C++:
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 добавляем
C++:
CloseHandle(Handle);//закрываем HANDLE
return 0;
Готово!
C++:
#include <Windows.h>
#include <TlHelp32.h>
int main()
{
DWORD Client = NULL; // тут будет адрес client_panorama.dll
DWORD m_fFlags = 0x104; // Состояние (сдвиг)
DWORD dwForceJump = 0x5170E70;//прыжок
DWORD Localplayer = 0xCBD6A4;
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);
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);//запишем адрес локального игрока(адрес нашего персонажа)
while (!GetAsyncKeyState(VK_DELETE))// нужно для закрытия по нажатию на клавишу DELETE
{
if (GetAsyncKeyState(VK_SPACE)) // если нажали пробел, включаем Bhop
{
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);//возвращяем значение
}
Sleep(5);
}
CloseHandle(Handle);//закрываем HANDLE
return 0;
}
Последнее редактирование: