如题,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错误。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
wmsuper 很简单,Nt*(SSDT都是这一类函数)会校验内存合法性,防止r3修改r0的内存,Zw*分配的是r0的内存,所以对r3是不可见的。 解决方法是:要么都用Nt* 要么都用Zw*。
lwbkanxue 是这样的,我用ZwAllocateVirtualMemory 给r3分配内存,在win10下 ZwProtectVirtualMemory 修改属性是可行的,但是win7没有导出ZwProtectVi ...