首页
社区
课程
招聘
请教大侠们一个关于WriteProcessMemory的问题
发表于: 2011-9-10 19:52 4519

请教大侠们一个关于WriteProcessMemory的问题

2011-9-10 19:52
4519
我调用了这个api函数,要把1505572这个地址的数据该成100,但是最后出错了,错误代码是299,请问为什么会出错呀,有哪位大侠能告诉我这个函数怎么用呀,谢谢了。  
if (WriteProcessMemory(hHandle,LPVOID(1505572),LPVOID(100),4,NULL))
{
  cout<<"修改成功"<<endl;
}
else
{
  cout<<"修改失败"<<endl;
}
int error = GetLastError();
cout<<"错误代码是:"<<error<<endl;

再次谢谢了,拜托了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1847
活跃值: (1811)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
试试VirtualProtect改改属性
另外最后一个参数不要是NULL
试试
2011-9-10 20:08
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
3
仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。
你确定1505572这个地址开始的4个字节都是可写的吗?
2011-9-10 20:12
0
雪    币: 12
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是不是读取权限不够!!
2011-9-10 20:29
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
入口地址可能不能访问
2011-9-10 21:21
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
6
(LPVOID)100

这个用的不对。这里传的是一个指针,指向一个缓冲区,而不是一个你要写入的数据。
这样写,程序会访问你的进程起始地址为100的缓冲区,当然为无效内存,写入自然失败啦!
2011-9-10 21:32
0
雪    币: 12
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主有没有试下!
2011-9-10 23:32
0
雪    币: 66
活跃值: (203)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
byte acode[4]={0x64,0x00,0x00,0x00};
long byWriteSize;
WriteProcessMemory(hHandle,LPVOID(0x1505572),LPVOID(acode),4,(LPDWORD) (&byWriteSize))

试试这样呢?
2011-9-11 10:52
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
6楼说的对,应该传指针,谢谢各位的帮助。
2011-9-11 11:08
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
没用过这个函数,不太清楚
2011-9-11 18:17
0
游客
登录 | 注册 方可回帖
返回
//