windows的页自映射机制】的更多相关文章

windows下由于启用了页机制,所有软件层面的地址操作都是VA,通过descriptor(base address(32bit))+offset得到的线性地址并不直接对应物理地址,而是经过页转换机构再做一次转换得到物理地址,这样的转换是硬件提供的能力,转换过程被说的比较多了,大体是通过cr3寄存器得到page direcotry的物理地址,Vitrual Address的高10位就是一个(pde)page direcotry entry的index,或许可以像这样表示cr3[VA>>22],…
首先,在x86架构的处理器上,一个正常页面大小为4KB,非PAE模式下,CR3持有页目录页面的物理地址,PDE和PTE格式相同大小为4字节.此时每个页表页面包含1024个PTE,可以映射1024个页面.而x86的4GB地址空间共包含1M个4KB的页面,映射所有这些页面共需要1024个页表页面,映射这1024个页表页面又需要1个页目录页面.乍看起来我们一共需要1025个页面来管理1M个页面的映射,其实不然. 我们不妨逆向理顺一下思路.首先,我们的地址空间中有1M=1024x1024个页面,而一个页…
3.系统机制 微软提供了一些基本组件让内核模式的组件使用: 1.陷阱分发,包括终端,延迟的过程调用(DPC),异步过程调用(APC),异常分发以及系统服务分发 2.执行体对象管理器 3.同步,包括自旋锁,内核分发器对象,以及等待是如何实现的. 4.系统辅助线程 5.其他的机制,比如Windows全局标记 6.本地过程调用 7.内核事件跟踪 8.Wow64 3.系统机制 3.1陷阱分发 3.1.1 中断分发 3.1.1.1 硬件中断 3.1.1.2 软中断请求级别(IRQL) 3.1.1.3 软中…
2017-05-20 聚会回来一如既往的看了会羽毛球比赛,然后想到前几天和朋友讨论的逆向映射的问题,还是简要总结下,免得以后再忘记了!可是当我添加时间……这就有点尴尬了……520还在写技术博客…… 闲话不多说,之前一个问题是想要根据物理页框号得到映射的虚拟地址,一时间不知道如何下手了,在群里和一个朋友讨论了一番,记得之前看swap机制的交换缓存时,记载说系统当要换出一个页面时,可以很容易找到使用该页面的所有进程,然后撤销映射.这一点也就成了我的突破口.经过对源码的一番研究结合相关书籍,便有了今天…
页式映射 本系列截图来自网络搜索及以下基本书籍: <Windows内核设计思想> <Windows内核情景分析> <WINDOWS内核原理与实现> 一个32位虚拟地址,该地址其实分为三个部分:页目录表偏移.页表偏移和页偏移.其22-31位表示页目录表偏移,12-21位表示页表偏移,剩下的0-11位表示页面内偏移. 映射过程如下: 以最常见的物理页面为4K规格为例. 首先我们获得一个32位虚拟地址,然后查询CR3寄存器,确认页目录表(PDT)的位置,根据虚拟地址22-31…
Windows内核开发-6-内核机制 Kernel Mechanisms 一部分Windows的内核机制对于驱动开发很有帮助,还有一部分对于内核理解和调试也很有帮助. Interrupt Request Level 中断请求级别 Deferred Procedure Calls(DPC) 延迟调用 Asynchronous Procedure Calls(APC) 异步调用 Structured Exception Handling 异常处理 System Crash 系统崩溃 Thread S…
在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作.比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应. 一.什么是消息?  窗口消息一般由三个部分组成:1.一个无符号整数,是消息值:2.消息附带的WPARAM类型的参数:3.消息附带的LPARAM类型的参数.其实,我们一般所说的消息是侠义上的消息值,也就是一个无符号整数,经常被定义为宏. 二.什么是消息映射机制?  MFC使用一种消息映射机制来处理消息,在应…
VS2010/MFC编程入门之五(MFC消息映射机制概述)-软件开发-鸡啄米 http://www.jizhuomi.com/software/147.html 上一讲鸡啄米为大家简单分析了MFC应用程序框架,这一讲是关于MFC消息映射机制的内容. 前面已经说过,Windows应用程序是消息驱动的.在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作.比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应. 什么是…
1.MFC应用框架主要类之间的关系 MFC自动生成的框架中重要的类有:C-App.CMainFrame.C-Doc和C-View. 其他的类如CClassView.CFileView等都是在框架窗口(CMainFrame)上创建的面板等,不是必要的.   C-App类处理消息,将收到的消息分发给相应的对象. CMainFrame是视图C-View的父窗口,视图C-View就显示在CMainFrame的客户区中. 视图类C-View用来显示文档类C-Doc中的数据,并根据对视图类的操作修改文档类的…
MFC的设计者们在设计MFC时,紧紧把握一个目标,那就是尽可能使得MFC的代码要小,速度尽可能快.为了这个目标,他们使用了许多技巧,其中很多技巧体现在宏的运用上,实现MFC的消息映射的机制就是其中之一.  同MFC消息映射机制有关的宏有下面几个:  DECLARE_MESSAGE_MAP()宏  BEGIN_MESSAGE_MAP(theClass, baseClass)和END_MESSAGE_MAP()宏  弄懂MFC消息映射机制的最好办法是将找出一个具体的实例,将这些宏展开,并找出相关的数…