Здравствуйте, пишу трейнер для игры MudRunner, на данном этапе пытаюсь вывести базовый адрес игры, но, видимо, что-то делаю не так код скину ниже.
И касательно самой игры: я пытаюсь найти, скажем там, прочность машины и нашёл все необходимые офсеты, но с топливом ничего не получается.
Значение как бы есть, но когда его меняешь и заходишь в игру, оно переходит обратно в тот вид до изменения, в чём может быть проблема, можете дать совет?
прошу простить меня если я задаю совсем очевидные вопросы просто в этом я новичок и видимо что-то не до конца понимаю
ещё раз простите если задал очевидный вопрос
вот код:
#include <Windows.h>
#include <tlhelp32.h>
#include <iostream>
using namespace std;
DWORD64 GetModuleBaseAddress(DWORD procId, const char* modName)
{
DWORD64 modBaseAddr = 0;
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32, procId);
MODULEENTRY32 modEntry;
modEntry.dwSize = sizeof(modEntry);
if (Module32First(hSnap, &modEntry))
{
do
{
if (!_stricmp(modEntry.szModule, modName))
{
modBaseAddr = (uintptr_t)modEntry.modBaseAddr;
break;
}
} while (Module32Next(hSnap, &modEntry));
}
CloseHandle(hSnap);
return modBaseAddr;
}
int main()
{
setlocale(LC_ALL, "ru");
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
DWORD ID = 0;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
if (_stricmp(entry.szExeFile, "MudRunner.exe") == 0)
{
ID = entry.th32ProcessID;
break;
}
}
}
CloseHandle(snapshot);
if (ID == 0) {
cout << "Приложение не запущено" << endl;
}
DWORD moduleBase = GetModuleBaseAddress(ID, "MudRunner.exe");
cout<<"ID процесса: "<<ID<<endl;
cout << "Базовый адрес модуля: " << moduleBase << endl;
system("pause");
return 0;
}