我一直在浏览该网站并使用谷歌搜索以尝试找到我正在尝试做的事情的决定性答案,但我没有找到可以回答我所有问题的答案。
我有两个进程。一个有一个整数变量,我想通过第二个过程改变它。我知道如何读取/写入特定的内存位置,但我只知道如何在 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/