Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос External

  • Автор темы Автор темы Tifok
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
10 Ноя 2019
Сообщения
839
Реакции
135
Я не понимаю что не так с ним запускаю и ничего не работает
Код:
Expand Collapse Copy
#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
using namespace std;
int main()
{
    DWORD Client = NULL; // тут будет адрес client_panorama.dll
    DWORD m_fFlags = 0x104; // Состояние (сдвиг)
    DWORD dwForceJump = 0x524CDD4;//прыжок
    DWORD Localplayer = 0xD8B2AC;
    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 (!wcscmp(mEntry.szModule, L"client.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;
}
 
У тебя в WriteProcessMemory, когда он должен прыгнуть, в обоих случаях в передаваемых значениях стоят 0, а должно быть 5 в первой строчке и 4 - во второй.
 
У тебя в WriteProcessMemory, когда он должен прыгнуть, в обоих случаях в передаваемых значениях стоят 0, а должно быть 5 в первой строчке и 4 - во второй.
Нет, тут все верно. Сигнатура у WPM - сначала хэндл процесса, потом смещение адреса в памяти, потом указатель на то, что мы хочем записать, потом количество байтов, которые мы пишем, ну и наконец указательна переменную, в которую запишется количество перемещенных байтов (чаще всего это нахрен не надо и используют NULL или nullptr или же 0, это все синонимы)

ТСу: самое банальное - проверь оффсеты
 
Последнее редактирование:
Нет, тут все верно. Сигнатура у WPM - сначала хэндл процесса, потом адресс в памяти, потом смещение адреса, потом указатель на то, что мы хочем записать, потом количество байтов, которые мы пишем, ну и наконец указательна переменную, в которую запишется количество перемещенных байтов (чаще всего это нахрен не надо и используют NULL или nullptr или же 0, это все синонимы)

ТСу: самое банальное - проверь оффсеты
Спасибо,но оффсеты вроде верные
 
Спасибо,но оффсеты вроде верные
смотри, короче, у тебя WPM выполняется только один, а второй в else, они должны идти вместе, лично у меня так:
C++:
Expand Collapse Copy
memory.Write(Client + dwForceJump, 5);
Sleep(17);
memory.Write(Client + dwForceJump, 4);
То есть они оба должны выполниться, сначала нажимает прыжок, затем отжимает его.
Спасибо,но оффсеты вроде верные
а еще, если все равно не сработает, попробуй добавить отладочный вывод в консоль, если он нашёл игру и модули, и если не нашёл, вдруг проблема в этом
 
смотри, короче, у тебя WPM выполняется только один, а второй в else, они должны идти вместе, лично у меня так:
C++:
Expand Collapse Copy
memory.Write(Client + dwForceJump, 5);
Sleep(17);
memory.Write(Client + dwForceJump, 4);
То есть они оба должны выполниться, сначала нажимает прыжок, затем отжимает его.

а еще, если все равно не сработает, попробуй добавить отладочный вывод в консоль, если он нашёл игру и модули, и если не нашёл, вдруг проблема в этом
Спасибо за ответ, проверю
 
смотри, короче, у тебя WPM выполняется только один, а второй в else, они должны идти вместе, лично у меня так:
C++:
Expand Collapse Copy
memory.Write(Client + dwForceJump, 5);
Sleep(17);
memory.Write(Client + dwForceJump, 4);
То есть они оба должны выполниться, сначала нажимает прыжок, затем отжимает его.

а еще, если все равно не сработает, попробуй добавить отладочный вывод в консоль, если он нашёл игру и модули, и если не нашёл, вдруг проблема в этом
Я посмотрел игру находит,а модуль не находит,что делать?
UPD:Находит
 
Последнее редактирование:
Назад
Сверху Снизу