【问题标题】:How can i use a base address to get a dynamic?我如何使用基地址来获得动态?
【发布时间】:2023-03-28 07:41:01
【问题描述】:

所以,我一直在尝试从动态地址获取值,结果是 https://gyazo.com/82ef5920d01c4452840764111c60e046 当我的健康值实际上是 100 时,

这是我到目前为止尝试做的事情,我尝试读取基地址将其存储在 temp 中,然后再次将 temp+HealthOffset 读入 temp,然后我会将 temp 读入整数并尝试打印它。当我尝试写信给它时它也不起作用

#include <Windows.h>
#include <iostream >
#define base 0x0050f4f4

using namespace std;

int main()
{
    DWORD healthoffset[] = { 0xF8 };
    HWND hWnd = FindWindow(NULL, "AssaultCube");
    DWORD iProc = GetWindowThreadProcessId(hWnd, 0);
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, iProc);
    DWORD temp;
    int storage;
    ReadProcessMemory(hProc, (LPCVOID)base, &temp, sizeof(temp), 0);
    ReadProcessMemory(hProc, (LPCVOID)(temp + healthoffset[1]),     &temp,   sizeof(temp), 0);
    ReadProcessMemory(hProc, (LPCVOID)temp, &storage, sizeof(int), 0);  
    cout << storage;
    system("PAUSE");
    return 0;
 }

【问题讨论】:

  • 如果我错了,请纠正我,但标签中的“Windows”不是很好吗?
  • 是的,我会修好它!

标签: c++ windows pointers memory


【解决方案1】:

正确的代码是:

#include <Windows.h>
#include <iostream >
#define base 0x0050f4f4

using namespace std;

int main()
{
    DWORD healthoffset[] = { 0xF8 };
    HWND hWnd = FindWindow(NULL, "AssaultCube");
    DWORD iProc = GetWindowThreadProcessId(hWnd, 0);
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, iProc);

    DWORD temp;
    int storage;


    ReadProcessMemory(hProc, (LPCVOID)base, &temp, sizeof(temp), 0);
    ReadProcessMemory(hProc, (LPCVOID)(temp + healthoffset), &storage, sizeof(storage), 0);
    cout << storage;
    system("PAUSE");
    return 0;
 }

【讨论】:

  • 哇,谢谢伙计,我记得我曾经在你的频道上学习游戏技巧,我从没想过会在这里见到你。您为全球的孩子们做了一件了不起的事情!
  • @David Morales 哈哈,谢谢,我们仍然很强大
【解决方案2】:

也许 healthoffset[1] 必须是 healthoffset[0]。

它是一个长度为 1 的数组,您可以访问索引为 0 的第一个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2011-03-18
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多