You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WriteProcessMemory实现目标程序内存值与用户输入值叠加写入

错误原因

你的代码不生效的核心问题是混淆了指针运算和数值运算:&baseAddress是baseAddress变量在你当前程序内存中的地址,对这个地址做+ value操作属于指针偏移,得到的是你本地进程里的一个无效野地址,根本不是你计算后要写入的数值,传入WriteProcessMemory自然无法得到预期结果。

实现逻辑

要给目标进程的内存值做增量叠加,不能在写内存的传参阶段直接做地址偏移计算,必须按固定三步执行:

  • 先读取目标进程对应内存地址中存储的原始数值
  • 在你自己的程序内存空间内,把原始值和用户输入的增量做加法,得到最终要写入的新值
  • 把计算完成的新值回写到目标进程的对应内存地址
参考实现代码

注意读写时使用的变量类型要和目标内存存储的数值类型保持一致,以下以最常见的4字节int类型数值为例:

#include <windows.h>
#include <iostream>
using namespace std;

int main() {
    // 假设你已经拿到了合法的进程句柄processHandle、目标数值地址pointsAddress
    HANDLE processHandle = /* 你的现有进程句柄 */;
    LPVOID pointsAddress = /* 你的现有目标内存地址 */;

    int originalValue = 0;
    int inputDelta = 0;

    // 第一步:读取目标地址当前的原始值
    BOOL readRet = ReadProcessMemory(
        processHandle,
        pointsAddress,
        &originalValue,
        sizeof(originalValue),
        NULL
    );
    if (!readRet) {
        cout << "读取内存失败,错误码:" << GetLastError() << endl;
        CloseHandle(processHandle);
        return 1;
    }

    // 第二步:获取用户输入的增量,计算最终写入值
    cout << "请输入要叠加的数值:";
    cin >> inputDelta;
    int newValue = originalValue + inputDelta;

    // 第三步:把新值写回目标内存
    BOOL writeRet = WriteProcessMemory(
        processHandle,
        pointsAddress,
        &newValue,
        sizeof(newValue),
        NULL
    );
    if (!writeRet) {
        cout << "写入内存失败,错误码:" << GetLastError() << endl;
        CloseHandle(processHandle);
        return 1;
    }

    cout << "修改完成,原始值:" << originalValue << ",叠加后值:" << newValue << endl;
    CloseHandle(processHandle);
    return 0;
}
常见踩坑点
  • 打开目标进程句柄时必须申请PROCESS_VM_READ和PROCESS_VM_WRITE权限,否则读写操作会直接被系统拦截
  • 读写长度必须和目标内存存储的数值类型完全匹配:如果目标存的是4字节单精度浮点数就用float类型,是8字节长整数就用long long类型,不要硬编码读写长度为4,用sizeof(对应变量)可以自动适配类型长度,避免长度不匹配导致的数值错乱
  • 读原值时一定要传入你最终要修改的目标内存地址(也就是写操作时用的pointsAddress),不要误读成进程基址或者其他无关地址的值,否则叠加计算的结果完全错误
  • 如果目标程序开启了内核级内存保护、或者目标地址属于只读内存页,写入操作会失败,可以通过GetLastError()返回的错误码定位具体原因

内容的提问来源于stack exchange,提问作者user16940272

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:33:44