VirtualProtect 修改内存属性后还是无法修~~~在线等答案~~

fan_love 2008-10-12 07:31:36
bool WriteProtectMemory(void* d,const void* s,int nsize,DWORD* nretsize){
DWORD RetSize=nsize;
DWORD nOld=0;
bool boret=false;
MEMORY_BASIC_INFORMATION mbi_thunk;
VirtualQuery(d, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION));
if (VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize,PAGE_READWRITE | PAGE_EXECUTE_READWRITE,&nOld)!=0){
return false;
}
boret=(WriteProcessMemory(GetCurrentProcess(), d, s, nsize, &RetSize)==TRUE);
VirtualProtect(mbi_thunk.BaseAddress,mbi_thunk.RegionSize,nOld,&nOld);
if (nretsize){ *nretsize=(boret?RetSize:0); }
return boret;
}

VirtualProtect 修改内存属性返回0~~~但是写内存还是失败!!求原因~~~
内存地址不是系统进程~~~只是我自己的进程 用 CreateFileMapping MapViewOfFileEx 申请的内存~~
用 VirtualProtect 设置属性为 PAGE_READONLY 或则 PAGE_EXECUTE_READ ~~
需要修改的时候,用 VirtualProtect 修改成 PAGE_READWRITE | PAGE_EXECUTE_READWRITE ~~~
但是还是无法写内存~~~在线等答案
...全文
347 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2008-10-13
  • 打赏
  • 举报
回复
//VirtualProtect 修改内存属性返回0~~~

返回0表示修改失败。
dalixux 2008-10-13
  • 打赏
  • 举报
回复
HOOK API ?
rollrock1987 2008-10-12
  • 打赏
  • 举报
回复
首先应该 OpenProcess

然后在VirtualProtectEx
再 ReadProcessMemory/WriteProcessMemort
再 VirtualProtectEx
llaaddoo 2008-10-12
  • 打赏
  • 举报
回复
只用 PAGE_READWRITE 就可以

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧