![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WRK1_2笔记
Vinc
溪云初起日沉阁,山雨欲来风满楼。
展开
-
wrk中描述进程VAD的AVL树
ntrtl.h //定义基础二叉树以及基本方法。splay.c //实现ntrtl.h中关于二叉树的方法。avltable.c //在ntrtl.h定义的二叉树基础上实现avl树在ps.h //定义了VAL的节点定义addrsup.c //在avltable的基础上实现对地址空间avl树的一系列操作。第一节 基础二叉树定义和实现在ntrtl.h中,定义和实现了原创 2016-03-12 19:01:00 · 1570 阅读 · 0 评论 -
wrk笔记:申请内存的大致流程(x64)
NtAllocateVirtualMemory - allocvm.c1.检查各参数的有效性,如果当前进程不是参数制定的进程,那么附加到目标进程。2.调整需要申请的大小,使之增加到页面的整数倍。计算需要申请的页面数。CapturedRegionSize = ROUND_TO_PAGES (CapturedRegionSize);NumberOfPages = BYTES_TO_PA原创 2016-03-12 19:05:06 · 1225 阅读 · 0 评论 -
WRK笔记:为一块VA区域创建PDE
allocvm.cMiCreatePageTablesForPhysicalRange ( IN PEPROCESS Process, IN PVOID StartingAddress, IN PVOID EndingAddress )1.计算需要从StartingAddress到EndingAddress需要多少物理页面才够装下页目录。原创 2016-03-12 19:06:54 · 716 阅读 · 0 评论 -
ADDRESS_AND_SIZE_TO_SPAN_PAGES宏
//++//// ULONG// ADDRESS_AND_SIZE_TO_SPAN_PAGES (// IN PVOID Va,// IN ULONG Size// )//// Routine Description://// ADDRESS_AND_SIZE_TO_SPAN_PAGES 宏输入一个虚拟地址和长度,返回他们需要的页面数。///翻译 2016-03-13 14:25:46 · 716 阅读 · 0 评论 -
MmInitializeMdl
//++//// VOID// MmInitializeMdl (// IN PMDL MemoryDescriptorList,// IN PVOID BaseVa,// IN SIZE_T Length// )//// Routine Description://// 这个例程初始化一个MDL的头部。//// Arguments翻译 2016-03-13 14:35:50 · 707 阅读 · 0 评论 -
IoAllocateMdl
PMDLIoAllocateMdl( IN PVOID VirtualAddress, IN ULONG Length, IN BOOLEAN SecondaryBuffer, IN BOOLEAN ChargeQuota, IN OUT PIRP Irp OPTIONAL )/*++Routine Description: 分配一块内翻译 2016-03-13 14:39:26 · 2859 阅读 · 0 评论 -
MDL结构
//// I/O system definitions.//// 定义一个内存描述符列表(MDL)//// 一个MDL通过一系列物理页面描述在虚拟缓冲中的页面。// 通过一个队列描述与缓冲区相关的页面,这个队列的内存位置紧跟着MDL头结构之后。// // 一个简单的计算队列的地址的方法是在这个MDL的地址上加一://// Pages = (PPFN_NUMBER) (翻译 2016-03-12 18:57:25 · 2290 阅读 · 0 评论