c++ - 访问外部进程的内存

标签 c++ c memory process createremotethread

我一直在浏览该网站并使用谷歌搜索以尝试找到我正在尝试做的事情的决定性答案,但我没有找到可以回答我所有问题的答案。

我有两个进程。一个有一个整数变量,我想通过第二个过程改变它。我知道如何读取/写入特定的内存位置,但我只知道如何在 native 进程地址上执行此操作。

我不明白createremotethread。我是否有可能得到最干净、最简单的操作进程内存的示例,该进程不是正在运行的程序的 native ?当然,假设两个程序都在运行。

提前致谢

编辑:我从其他来源得到了一些关于我的问题的答案。我只想了解如何将变量写入内存位置,比如:

WriteProcessMemory(phandle,(void*)address,val,sizeof(val),NULL);

这似乎没有效果,假设 val 是一个 bool 值:

while(true){
    key=getch();
    if(key=='1'){
        if(val)val=false;
        else val=true;
        WriteProcessMemory(phandle,(void*)address,&val,sizeof(val),NULL);
    }
    bool val2;
    ReadProcessMemory(phandle, (void*)address, &val2, sizeof(val2), NULL);
    cout<<val2<<endl;
}

总是显示0。为什么?

最佳答案

尝试阅读有关共享内存和互斥锁的信息,以确保不会有两个进程同时操作同一内存点。

BOOL WINAPI WriteProcessMemory(
  _In_   HANDLE hProcess,
  _In_   LPVOID lpBaseAddress,
  _In_   LPCVOID lpBuffer,
  _In_   SIZE_T nSize,
  _Out_  SIZE_T *lpNumberOfBytesWritten
);

你是否像上面那样传递了正确的参数,你必须至少有前 4 个参数才能工作

执行以下操作

WriteProcessMemory(phandle,(void*)address,&val,sizeof(val),NULL); 

注意val传递了val的地址

关于c++ - 访问外部进程的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224970/

相关文章:

PHP 内存不足异常

c - C 中的矩阵计算

c++ - QString::toStdString() 在 std::string 析构函数上崩溃

c++ - 任何人都可以修改以下代码以避免使用 "if"吗?

ios - 这看起来像正常的内存增加吗?还是我应该为此担心?

c - 带有 void* 参数的函数原型(prototype)

C - 如何 (*(void (*)()) 代码);在没有任何调用的情况下在 C 程序中运行

c++ - 在特定功能上测量新/旧代码 CPU 使用率

c++ - 测试位是否在数字中重复

c++ - Visual Studio 2010 设置