首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么写内存0xfed1f400

2012-04-05 
如何写内存0xfed1f400想用C语言写0xfed1f400这个内存单元的值,但直接写这个单元,编译没有问题,运行时会报

如何写内存0xfed1f400
想用C语言写0xfed1f400这个内存单元的值,但直接写这个单元,编译没有问题,运行时会报错.不知哪位有这样写过?谢谢!

[解决办法]

C/C++ code
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空间和用户空间都在什么地址上。然后就知道你这个地址在不在用户空间了。如果在,就能写入。如果不在,就把这个空间映射到用户空间,然后就可以写入了。这个是驱动的基本的东西。

热点排行