Вопрос Как считать hp через ReadProcessMemory?

Новичок
Статус
Оффлайн
Регистрация
15 Июл 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

uintptr_t clientDLL;
uintptr_t engineDLL;
int main() {
    DWORD processID;
    HWND hwnd = FindWindow(NULL, "Counter-Strike 2");
    GetWindowThreadProcessId(hwnd, &processID);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processID);

    MODULEENTRY32 moduleEntry;
    moduleEntry.dwSize = sizeof(MODULEENTRY32);
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, processID);

    if (Module32First(hSnapshot, &moduleEntry)) {
        do {
            if (strcmp(moduleEntry.szModule, "client.dll") == 0) {
                clientDLL = (uintptr_t)moduleEntry.modBaseAddr;
            }
            else if (strcmp(moduleEntry.szModule, "engine2.dll") == 0) {
                engineDLL = (uintptr_t)moduleEntry.modBaseAddr;
            }
        } while (Module32Next(hSnapshot, &moduleEntry));
    }
    CloseHandle(hSnapshot);

    while (true) {
        Sleep(400);
        system("CLS");
        std::cout << "client.dll:\t\t" << std::hex << clientDLL << std::endl;
        std::cout << "engine2.dll:\t\t" << std::hex << engineDLL << std::endl;
        std::cout << std::endl;


        uintptr_t value;
        uintptr_t dwLocalPlayerPawn = 0x1823A08;
        uintptr_t m_iHealth = 0x1823A08;
        ReadProcessMemory(hProcess, reinterpret_cast<LPCVOID>(clientDLL + dwLocalPlayerPawn + m_iHealth), &value, sizeof(value), NULL);
        std::cout << "value:\t\t\t" << value << std::endl;
    }

    CloseHandle(hProcess);
}
вывод в cmd:
client.dll: 7ff807150000
engine2.dll: 7ff830f20000

value: cccccccccccccccc
 
Участник
Статус
Оффлайн
Регистрация
19 Апр 2020
Сообщения
1,180
Реакции[?]
314
Поинты[?]
152K
C++:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

uintptr_t clientDLL;
uintptr_t engineDLL;
int main() {
    DWORD processID;
    HWND hwnd = FindWindow(NULL, "Counter-Strike 2");
    GetWindowThreadProcessId(hwnd, &processID);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processID);

    MODULEENTRY32 moduleEntry;
    moduleEntry.dwSize = sizeof(MODULEENTRY32);
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, processID);

    if (Module32First(hSnapshot, &moduleEntry)) {
        do {
            if (strcmp(moduleEntry.szModule, "client.dll") == 0) {
                clientDLL = (uintptr_t)moduleEntry.modBaseAddr;
            }
            else if (strcmp(moduleEntry.szModule, "engine2.dll") == 0) {
                engineDLL = (uintptr_t)moduleEntry.modBaseAddr;
            }
        } while (Module32Next(hSnapshot, &moduleEntry));
    }
    CloseHandle(hSnapshot);

    while (true) {
        Sleep(400);
        system("CLS");
        std::cout << "client.dll:\t\t" << std::hex << clientDLL << std::endl;
        std::cout << "engine2.dll:\t\t" << std::hex << engineDLL << std::endl;
        std::cout << std::endl;


        uintptr_t value;
        uintptr_t dwLocalPlayerPawn = 0x1823A08;
        uintptr_t m_iHealth = 0x1823A08;
        ReadProcessMemory(hProcess, reinterpret_cast<LPCVOID>(clientDLL + dwLocalPlayerPawn + m_iHealth), &value, sizeof(value), NULL);
        std::cout << "value:\t\t\t" << value << std::endl;
    }

    CloseHandle(hProcess);
}
вывод в cmd:
client.dll: 7ff807150000
engine2.dll: 7ff830f20000

value: cccccccccccccccc

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Пользователь
Статус
Оффлайн
Регистрация
19 Авг 2020
Сообщения
222
Реакции[?]
139
Поинты[?]
7K
Бля
1. m_iHealth = 0x324
2. Сначал нужно считать client dll + dwLocalPlayerPawn а уже потом считывать из этого localpawn + m_iHealth
3. Сначала посмотри как в других исходниках это реализовано а потом задавай вопросы а не засаряй тему банальными вещями
4. Лучше делать шаблонную функции а не так напрямую использовать
 
Последнее редактирование:
Сверху Снизу