Гайд Получение HP игрока через ReadProcessMemory

Тема в разделе "C/C++", создана пользователем Муззи, 31 июл 2018.

  1. Муззи

    Муззи Интересующийся

    Регистрация:
    18 фев 2017
    Сообщения:
    120
    Симпатии:
    8
    Таким образом можно работать с многоуровневыми указателями.

    #include <Windows.h>
    #include <iostream>
    
    #pragma comment (lib, "user32.lib")
    
    using namespace std;
    
    DWORD CPed = 0xB6F5F0;
    DWORD CPedHealth = 0x540;
    FLOAT Health = 0.0f;
    
    DWORD ProcID;
    HANDLE hProcess;
    
    unsigned long temp;
    
    void main()
    {
        setlocale(0, "");
    
        GetWindowThreadProcessId(FindWindowA(NULL, "GTA:SA:MP"), &ProcID);
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcID);
    
        ReadProcessMemory(hProcess, reinterpret_cast<LPVOID>(CPed), &temp, sizeof(temp), 0);
        CPedHealth = temp + 0x540;
    
        ReadProcessMemory(hProcess, reinterpret_cast<LPVOID>(CPedHealth), &Health, sizeof(temp), 0);
    
        cout << "Здоровье игрока: " << Health << endl;
    
        system("pause >> NULL");
    }
     
  2. memir

    memir Интересующийся

    Регистрация:
    21 авг 2015
    Сообщения:
    120
    Симпатии:
    65
    Вместо
    GetWindowThreadProcessId(FindWindowA(NULL, "GTA:SA:MP"), &ProcID);
    Лучше юзать
    
    DWORD getProcessIdByName(char *pszProcessName)
    {
        HANDLE hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        if (hProcessSnapshot)
        {
            PROCESSENTRY32 oProcessEntry;
            if (Process32First(hProcessSnapshot, &oProcessEntry))
            {
                if (!strcmp(oProcessEntry.szExeFile, pszProcessName))
                {
                    CloseHandle(hProcessSnapshot);
                    return oProcessEntry.th32ProcessID;
                }
                else
                {
                    while (Process32Next(hProcessSnapshot, &oProcessEntry))
                    {
                        if (!strcmp(oProcessEntry.szExeFile, pszProcessName))
                        {
                            CloseHandle(hProcessSnapshot);
                            return oProcessEntry.th32ProcessID;
                        }
                    }
                }
            }
        
            CloseHandle(hProcessSnapshot);
        }
     
        return 0xFFFFFFFF;
    }
    ибо в одиночке FindWindow окна с таким названием работать не будет.
     
    #2 memir, 31 июл 2018
    Последнее редактирование: 31 июл 2018
    Муззи нравится это.
  3. sense.eXe

    sense.eXe Новичок

    Регистрация:
    23 июл 2017
    Сообщения:
    3
    Симпатии:
    0
    Да вряд ли кто-то будет в одиночке будет бегать с этим