如何写内存0xfed1f400
想用C语言写0xfed1f400这个内存单元的值,但直接写这个单元,编译没有问题,运行时会报错.不知哪位有这样写过?谢谢!
[解决办法]
void CGGameDlg::OnOK() { // TODO: Add extra validation here// CDialog::OnOK(); HWND hwnd; DWORD Pid;//进程PID DWORD dwOld;//保存修改前的内存属性 HANDLE hProcess;//保存打开的进程 int i; i = GetDlgItemInt(IDC_EDIT1); hwnd = ::FindWindow(NULL,"Game"); if (hwnd!=NULL) { ::GetWindowThreadProcessId(hwnd,&Pid);//取得窗口的PID hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid);//打开进程 ::VirtualProtectEx(hProcess,(void*)0x004030FC,sizeof(int),PAGE_READWRITE,&dwOld);//修改内存属性为可读写 ::WriteProcessMemory(hProcess,(void*)0x004030FC,&i,sizeof(int),NULL);//写入内存数据 ::VirtualProtectEx(hProcess,(void*)0x004030FC,sizeof(int),dwOld,NULL);//恢复原来的内存属性 ::CloseHandle(hProcess);//关闭打开的句柄 } else MessageBox("没有找到目标窗口");}//这个是我当初学习修改其它程序的一段代码(目标程序是我自己写的一个防Game生命值的程序)//通过这段代码来修改其值...PS,XP下有可能用OpenProcess打不开进程,得提示一下进程权限
[解决办法]
查看一下OS空间和用户空间都在什么地址上。然后就知道你这个地址在不在用户空间了。如果在,就能写入。如果不在,就把这个空间映射到用户空间,然后就可以写入了。这个是驱动的基本的东西。