VirtualProtect 修改内存属性后还是无法修~~~在线等答案~~
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 ~~~
但是还是无法写内存~~~在线等答案