Загрузка...

Help - reading memory by address and offset

Thread in C/C++ created by exebyte Oct 31, 2023. 140 views

  1. exebyte
    exebyte Topic starter Oct 31, 2023 11 Jan 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 Topic starter
      gpt, не, тоже самое, да и тем более у меня PROCESS_ALL_ACCESS прописан в коде
  3. Replacer
    Replacer Nov 1, 2023 ARTIFICIAL SUICIDE 99 Jul 21, 2021
    Оффсет неверный, вероятно.
     
    1. exebyte Topic starter
      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>
  4. exebyte
    exebyte Topic starter Nov 1, 2023 11 Jan 15, 2021
    я пофиксил просто спастив код у другого чела с ютуба, всем спасибо.
     
Loading...
Top