标准MDL方法修改Page、NonPage内存的属性
来源:互联网 发布:千寻位置网络 编辑:程序博客网 时间:2024/05/16 03:50
typedef struct _REPROTECT_CONTEXT{ PMDL Mdl; PUCHAR LockedVa;} REPROTECT_CONTEXT, * PREPROTECT_CONTEXT; NTSTATUSMmLockVaForWrite( __in PVOID Va, __in ULONG Length, __out PREPROTECT_CONTEXT ReprotectContext ){ NTSTATUS Status; Status = STATUS_SUCCESS; ReprotectContext->Mdl = 0; ReprotectContext->LockedVa = 0; ReprotectContext->Mdl = IoAllocateMdl( Va, Length, FALSE, FALSE, 0 ); if (!ReprotectContext->Mdl) { return STATUS_INSUFFICIENT_RESOURCES; } // // Retrieve a locked VA mapping. // __try { MmProbeAndLockPages( ReprotectContext->Mdl, KernelMode, IoModifyAccess ); } __except (EXCEPTION_EXECUTE_HANDLER) { return GetExceptionCode(); } ReprotectContext->LockedVa = (PUCHAR)MmMapLockedPagesSpecifyCache( ReprotectContext->Mdl, KernelMode, MmCached, 0, FALSE, NormalPagePriority ); if (!ReprotectContext->LockedVa) { IoFreeMdl( ReprotectContext->Mdl ); ReprotectContext->Mdl = 0; return STATUS_ACCESS_VIOLATION; } // // Reprotect. // Status = MmProtectMdlSystemAddress( ReprotectContext->Mdl, PAGE_EXECUTE_READWRITE ); if (!NT_SUCCESS(Status)) { MmUnmapLockedPages( ReprotectContext->LockedVa, ReprotectContext->Mdl ); MmUnlockPages( ReprotectContext->Mdl ); IoFreeMdl( ReprotectContext->Mdl ); ReprotectContext->LockedVa = 0; ReprotectContext->Mdl = 0; } return Status;}NTSTATUSMmUnlockVaForWrite( __in PREPROTECT_CONTEXT ReprotectContext ){ if (ReprotectContext->LockedVa) { MmUnmapLockedPages( ReprotectContext->LockedVa, ReprotectContext->Mdl ); MmUnlockPages( ReprotectContext->Mdl ); IoFreeMdl( ReprotectContext->Mdl ); ReprotectContext->LockedVa = 0; ReprotectContext->Mdl = 0; } return STATUS_SUCCESS;}
0 0
- 标准MDL方法修改Page、NonPage内存的属性
- 标准MDL方法修改Page、NonPage内存的属性
- 标准MDL方法修改Page、NonPage内存的属性
- 破解SSDT的只读属性(MDL方法)
- 读书笔记_windows下的混合钩子(HOOK)_part 4_使用MDL修改内存保护机制
- 修改MDL模型
- MDL内存映射
- Page的IsCrossPagePostBack属性
- Page对象的属性
- page的isPostBack属性
- Page的IsCrossPagePostBack属性
- SSDT HOOK (MDL方法)
- 局部更新商品属性的标准方法
- MDL的理解
- MDL的理解
- MDL的使用简介
- Page对象的PostBack属性
- page指令的isThreadSafe属性
- 黑马程序员_学习笔记:6) 异常、包
- IBM王天�:中国金融业应用历程和未来 - 51CTO.COM
- 杭电1875
- java
- nfc i2c测试
- 标准MDL方法修改Page、NonPage内存的属性
- 核桃仁孚
- 知识:详解IBM刀片服务器五大系列(1) - 51CTO.COM
- ACM的你伤不起!!!
- js-客户端信息-js根据不同浏览器做不同跳转
- java内存泄漏的定位与分析
- PBJNetworkObserver 网络监控
- solidworks动画制作步骤
- SVN切换分支从旧版本到新版本