首页
社区
课程
招聘
[求助]调用NtProtectVirtualMemory修改属性返回奇怪错误STATUS_ACCESS_VIOLATION
发表于: 2019-6-4 00:22 8825

[求助]调用NtProtectVirtualMemory修改属性返回奇怪错误STATUS_ACCESS_VIOLATION

2019-6-4 00:22
8825
如题,win10下,使用ZwAllocateVirtualMemory 申请内存后,修改 NtProtectVirtualMemory 内存的属性,函数执行成功有效,但却返回了 STATUS_ACCESS_VIOLATION错误,
IDE上的说明是


//
// MessageId: STATUS_ACCESS_VIOLATION
//
// MessageText:
//
// The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.
//
#define STATUS_ACCESS_VIOLATION          ((NTSTATUS)0xC0000005L)    // winnt

有人知道是怎么回事吗?

如果使用 ZwProtectVirtualMemory 修改就不会有该0xC0000005错误。


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

最后于 2019-6-4 09:16 被lwbkanxue编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 10868
活跃值: (14664)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
2
很简单,Nt*(SSDT都是这一类函数)会校验内存合法性,防止r3修改r0的内存,Zw*分配的是r0的内存,所以对r3是不可见的。
解决方法是:要么都用Nt* 要么都用Zw*。
2019-6-4 10:23
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
调ZwProtectVirtualMemory
2019-6-4 12:25
0
雪    币: 460
活跃值: (483)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
wmsuper 很简单,Nt*(SSDT都是这一类函数)会校验内存合法性,防止r3修改r0的内存,Zw*分配的是r0的内存,所以对r3是不可见的。 解决方法是:要么都用Nt* 要么都用Zw*。
是这样的,我用ZwAllocateVirtualMemory 给r3分配内存,在win10下 ZwProtectVirtualMemory 修改属性是可行的,但是win7没有导出ZwProtectVirtualMemory 
所以用了Nt*函数,应该不是这个原因吧
2019-6-4 17:02
0
雪    币: 143
活跃值: (780)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
lwbkanxue 是这样的,我用ZwAllocateVirtualMemory 给r3分配内存,在win10下 ZwProtectVirtualMemory 修改属性是可行的,但是win7没有导出ZwProtectVi ...
WIN 7 WIN10都没导出ZwProtectVirtualMemory 啊!
2021-7-15 19:07
0
游客
登录 | 注册 方可回帖
返回
//