Загрузка...

Помогите - чтение памяти по адресу и оффсету

Тема в разделе C/C++ создана пользователем exebyte 31 окт 2023. 136 просмотров

  1. exebyte
    exebyte Автор темы 31 окт 2023 11 15 янв 2021
    короче, пытаюсь сделать программу на плюсах, которая будет читать значение адреса и оффсета и выписывать его, но вместо предполагаемого
    значения, мне выводит 0. как это фиксить
    GetModuleBaseAddress и GetPointerAddress писал не я, а какой то челик из ютуба

    C

    #include <Windows.h>
    #include <TlHelp32.h>
    #include <iostream>
    #include <tchar.h>
    #include <vector>
    #include <stdlib.h>

    using namespace std;

    DWORD GetModuleBaseAddress(TCHAR* lpszModuleName, DWORD pID) {
    DWORD dwModuleBaseAddress = 0;
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID); // make snapshot of all modules within process
    MODULEENTRY32 ModuleEntry32 = { 0 };
    ModuleEntry32.dwSize = sizeof(MODULEENTRY32);

    if (Module32First(hSnapshot, &ModuleEntry32)) //store first Module in ModuleEntry32
    {
    do {
    if (_tcscmp(ModuleEntry32.szModule, lpszModuleName) == 0) // if Found Module matches Module we look for -> done!
    {
    dwModuleBaseAddress = (DWORD)ModuleEntry32.modBaseAddr;
    break;
    }
    } while (Module32Next(hSnapshot, &ModuleEntry32)); // go through Module entries in Snapshot and store in ModuleEntry32


    }
    CloseHandle(hSnapshot);
    return dwModuleBaseAddress;
    }

    DWORD GetPointerAddress(HWND hwnd, DWORD gameBaseAddr, DWORD address, vector<DWORD> offsets)
    {
    DWORD pID = NULL; // Game process ID
    GetWindowThreadProcessId(hwnd, &pID);
    HANDLE phandle = NULL;
    phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);

    DWORD offset_null = NULL;
    ReadProcessMemory(phandle, (LPVOID*)(gameBaseAddr + address), &offset_null, sizeof(offset_null), 0);
    DWORD pointeraddress = offset_null; // the address we need
    for (int i = 0; i < offsets.size() - 1; i++) // we dont want to change the last offset value so we do -1
    {
    ReadProcessMemory(phandle, (LPVOID*)(pointeraddress + offsets.at(i)), &pointeraddress, sizeof(pointeraddress), 0);
    }
    return pointeraddress += offsets.at(offsets.size() - 1); // adding the last offset
    }

    int main()
    {
    HWND hwnd = FindWindowA(NULL, "Euro Truck Simulator 2");

    if (hwnd != FALSE);
    DWORD pID = NULL;
    GetWindowThreadProcessId(hwnd, &pID);
    HANDLE phandle = NULL;
    phandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pID);
    if (phandle == INVALID_HANDLE_VALUE || phandle == NULL);

    char gamemodule1[] = "eurotrucks2.exe";
    DWORD gamebaseaddress1 = GetModuleBaseAddress(_T(gamemodule1), pID); // Getting the module Base Address


    // Money
    DWORD moneyammoAddr = 0x01C87BF8;
    vector<DWORD> moneyammoOffsets{ 0x10, 0x10 };
    DWORD moneyammoPtrAddr = GetPointerAddress(hwnd, gamebaseaddress1, moneyammoAddr, moneyammoOffsets);


    while (true) { // MEMORY EDITING
    int number = 0;

    ReadProcessMemory(phandle, (LPVOID*)(moneyammoPtrAddr), &number, 4, 0);
    cout << number << endl;

    }

    return 0;
    }
     
  2. gpt
    Возможно нужно запустить приложение от имени администратора, у него нет прав для чтения
     
    1. exebyte Автор темы
      gpt, не, тоже самое, да и тем более у меня PROCESS_ALL_ACCESS прописан в коде
  3. Replacer
    Replacer 1 ноя 2023 ARTIFICIAL SUICIDE 99 21 июл 2021
    Оффсет неверный, вероятно.
     
    1. exebyte Автор темы
      Replacer, вроде все норм, мб я в глаза долблюсь (это из чит енджина)
      <?xml version="1.0" encoding="utf-8"?>
      <CheatTable>
      <CheatEntries>
      <CheatEntry>
      <ID>8</ID>
      <Description>"money static address"</Description>
      <LastState Value="8617971" RealAddress="1E190FBA5F0"/>
      <VariableType>4 Bytes</VariableType>
      <Address>"eurotrucks2.exe"+01C87BF8</Address>
      <Offsets>
      <Offset>10</Offset>
      <Offset>10</Offset>
      </Offsets>
      </CheatEntry>
      </CheatEntries>
      </CheatTable>
      1 ноя 2023 Изменено
  4. exebyte
    exebyte Автор темы 1 ноя 2023 11 15 янв 2021
    я пофиксил просто спастив код у другого чела с ютуба, всем спасибо.
     
Загрузка...
Top