在程序A中,执行简单的死循环printf变量值,
通过单步调试,
确定变量a的地址,比如是0x1234
(不知到为什么,这个地址每次运行的时候都一样,顺便给我科普一下这个知识,我也很感谢!)void main()
{
  int a=1;
  while(1)
  {
    printf("a: %d\n",a);
  }
}
在程序B 中,用WriteProcessMemory()函数,修改0x1234内存中的数值为9.
前面做了提升权限等操作,中间GetLastErro()没有获取到错误,
WriteProcessMemory()的返回值也不是0(成功了),但不知道为啥,程序A的输出不能改变。GetWindowThreadProcessId(hw,&pid);

DWORD d = ::GetLastError(); //提升权限
enableDebugPriv();
hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);// 打开进程 PROCESS_ALL_ACCESS 可读写

d = ::GetLastError(); int test = WriteProcessMemory(hProcess,(LPVOID)addr,&val,4,0); // 向另一进程内存中写数据

d = ::GetLastError();向各位请教原因!谢谢!