Windows内核基础知识-2-段描述符
Windows内核基础知识-2-段描述符

比如:
ES 002B 0(FFFFFFFF)
意思就是es段寄存器,段选择子/段选择符 为002B,
起始地址base为0,
限制范围Limit地址最大能寻找的长度为:FFFFFFFF,表示的是一个范围。从.base到最后最长的地址的相对值。
简单来说就是偏移地址的范围。地址=段寄存器基址base+偏移地址,这个limit可以理解为偏移地址的范围

可以看到所有的段寄存器除了FS别的都是一样的。
获取段寄存器的信息:
如果你正常在调试,用什么WinDbg这种工具,就只能看到的是段选择子,不会有后面的什么基址,偏移地址范围这种东西。

段寄存器这么多信息存放在了哪里?
破案了,段寄存器的一堆属性都存放在了一张表里,可以理解为是一个数组,一个QWORD类型数组
通过段选择子来获取段寄存器信息
只有段选择子是公布出来了的,所以直接通过它来找信息了。
段选择子的结构体:

RPL:请求特权级别(Request Privilege Level),就是请求访问者所使用的权限级别。
TI:这个标志位决定要去什么表里查询数据:0表示GDT表,1表示LDT表
GDT表:可以认为是一个数组,元素为QWORD(64位)大小
Index:数据所在表的索引
例子:
这里来获取一下es的内容

es = 23 ==00100 0 11
拆下来就是 :
RPL=11
TI=0
索引值=00100 = (D)4(十进制的4)
gtd表的首地址保存在gdtr寄存器里面,同理ldt也是。gdtr和ldtr并不是真正是寄存器,只是一个虚拟的。
在WinDbg里面查看gdtr的内容:

查看索引为4的内容(索引为4就是第五个):

这个东西对应的内容就是段描述符了,所有的段寄存器内容都在里面。
Windows内核基础知识-2-段描述符的更多相关文章
- Windows内核基础知识-1-段寄存器
Windows内核基础知识-1-段寄存器 学过汇编的应该都知道段寄存器,在Windows里段寄存器有很多,之前可能只接触了ds数据段,cs 代码段这种,今天这个博客就介绍Windows一些比较常用的段 ...
- Windows内核基础知识-5-调用门(32-Bit Call Gate)
Windows内核基础知识-5-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权.调用门其实就是一个段. 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还 ...
- Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...
- 数据段描述符和代码段描述符(二)——《x86汇编语言:从实模式到保护模式》读书笔记11
这篇博文,我们编写一个C语言的小程序,来解析数据段或者代码段描述符的各个字段.这样我们阅读原书的代码就会方便一点,只要运行这个小程序,就可以明白程序中定义的数据段或者代码段的描述符了. 这段代码,我用 ...
- 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10
一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...
- Windows系统调用中的系统服务表描述符
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中的系统服务表描述符 在前面,我们将解过 ...
- windows内核基础与异常处理
前两日碰到了用异常处理来做加密的re题目 所以系统学习一下windows内核相关 windows内核基础 权限级别 内核层:R0 零环 核心态工作区域 大多数驱动程序 应用层:R3 用户态工作区域 只 ...
- 第0章Linux环境到内核基础知识
#include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...
- Linux内核笔记--深入理解文件描述符
内核版本:linux-2.6.11 文件描述符(file descriptor)在Linux编程里随处可见,设备读写.网络通信.进程通信,fd可谓是关键中的关键. 深入理解可以增加我们使用它的信心. ...
随机推荐
- Jquery Validate自定义验证规则,一个汉字等于两个字符长度
使用Jquery validate时写的一些东西,在这里做个笔记 在使用 Jquery validate 的minlength和maxlength进行文本框内容长度验证的时候,对于一个汉字的长度检测结 ...
- APP-SECURITY-404 组件导出漏洞复现
参考资料:https://github.com/wnagzihxa1n/APP-SECURITY-404/blob/master/2.%E7%BB%84%E4%BB%B6%E5%AF%BC%E5%87 ...
- SoapUI Pro 最新版本和最新功能
专为整个后端的端到端测试而构建 创建全面的端到端测试,以从API定义或实时端点验证API的整个工作流程.只需单击几下即可传递响应数据并添加断言-无需编码. 综合生成或配置数据 通过简单的数据驱动测试来 ...
- ESP32-性能监控笔记
基于ESP-IDF4.1 1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #i ...
- 关于SOA和AOP
SOA:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.C/S端框架有WPF,服务端应用程序有WCF.asp.net web ...
- Linux_NTP
服务器端配置 允许这些IP向自己同步时间 restrict x.x.x.x mask x.x.x.x nomodiy notrap 当前定义的所有server服务器无法同步后,和自身同步 server ...
- java基础---设计模式(2)
结构型模式 出处:https://blog.csdn.net/zhangerqing/article/details/8239539 一.适配器模式 适配器模式将某个类的接口转换成客户端期望的另一个接 ...
- 利用扫描仪形成PDF
1.打开WPS,新建PDF,从扫描仪新建 2.合并PDF:按照顺序添加指定PDF,合并即可完成
- js树形数据结构的扁平化
前面我们封装了一维数组(具备树形结构相关属性)处理成树形结构的方法:https://www.cnblogs.com/coder--wang/p/15013664.html 接下来我们来一波反向操作,封 ...
- 6 Java基础整理 第六-八章
1.封装 封装的目的是简化编程和增强安全性. 简化编程是指,封装可以让使用者不必了解具体类的内部实现细节,而只是要通过提供给外部访问的方法来访问类中的属性和方法 增强安全性是指,封装可以使某个属性只能 ...