首页
社区
课程
招聘
[旧帖] VirtualProtect失败 很奇怪 求助 0.00雪花
发表于: 2010-4-24 03:22 11371

[旧帖] VirtualProtect失败 很奇怪 求助 0.00雪花

2010-4-24 03:22
11371
需要修改自身进程中的0x500000地址的值

DWORD oldProtect;
VirtualProtect((LPVOID)0x500000,4,PAGE_READWRITE, &oldProtect);
返回失败

然后
IsBadWritePtr((LPVOID)0x500000,4);
返回的也是不可写 为什么?

还有没有别的办法修改这个地址的内存权限?

getlasterror() 的错误代码是 0087 参数错误。

是哪出了问题呢?

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (7)
雪    币: 241
活跃值: (236)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
程序不是我自己写的 想做内存补丁 该怎么办?
2010-4-24 03:24
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
WriteProcessMemory()
2010-4-24 09:13
0
雪    币: 2513
活跃值: (640)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
0x500000存在么?
2010-4-24 11:38
0
雪    币: 2105
活跃值: (594)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
一般用VirtualProtectEx
2010-4-24 14:50
0
雪    币: 241
活跃值: (236)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
0x500000是肯定存在的 可读但是不可写
VirtualProtect在本进程内使用是肯定没问题的 没必要用VirtualProtectEx 但是最后导致内存不可写 这是为什么?

我尝试使用ntdll导出的ZwProtectVirtualMemory 返回成功 但内存的属性还是只读

用ZwProtectVirtualMemory 修改
ZwProtectVirtualMemory(GetCurrentProcess(),&dwAddrT,&dwSize,PAGE_READWRITE,&dwOld)
然后 使用VirtualQueryEx查询内存 获得的内存属性(mbi)是
Type=MEM_MAPPED
State=MEM_COMMIT
AllocationProtect=PAGE_EXECUTE_READ

为什么是这样?难道这个内存无敌了?不能写?
2010-4-24 18:43
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
问题解决了么?
2010-7-13 11:11
0
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
给一段刚写的DEMO,我学DELPHI的,勉强翻译成C

LPVOID lpAddress = ::VirtualAlloc(NULL, 1024, MEM_COMMIT, PAGE_NOACCESS);
        if (lpAddress != NULL)
        {
                DWORD lpflOldProtect;
                BOOL bRet = ::VirtualProtect(lpAddress, 1024, PAGE_EXECUTE_READWRITE, &lpflOldProtect);
                if (bRet)
                {
                        ::MessageBox(NULL,"修改成功!","提示",MB_OK);
                }
                else
                {
                        ::MessageBox(NULL,"修改失败!","提示",MB_ICONERROR);
                }
                ::VirtualFree(lpAddress,1024,MEM_DECOMMIT);
        }
        else
        {
                ::MessageBox(NULL,"分配内存失败!","提示",MB_ICONERROR);
        }
2010-7-22 21:30
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册