(3)段描述符,段选择子,LES指令
一、段描述符
GDT表里面存的东西叫段描述符,一个段描述符占8字节,结构如下
暂时不需要知道各个位的作用,先练习一下拆分,在windbg中输入以下命令,打印GDT表。
这里我们打印了GDT表的前5个段描述符。以第2个为例,演示拆分。
00cf9b00 0000ffff
0000 0000 1100 1111 1001 1011 0000 0000 0000 0000 0000 0000 1111 1111 1111 1111
Base 31:24: 00000000
G: 1
D/B: 1
0: 0
AVL: 0
Segment Limit 19:16: 1111
P: 1
DPL: 00
S: 1
Type: 1011
Base 23:16: 0000 0000
Base 15:00: 0x00000000
Segment Limit: 0xFFFFFFFF
二、段选择子
段选择子有16位,结构如下图:
其中,0-1位是RPL(暂时不知道是啥);2位是TI位,0表示查GDT表(windows不使用LDT所以此位永远是0),3-15位是GDT表的下标。
下面是段选择子拆分实验:
0x0023
0000000000100 0 11
Index: 0x4
TI: 0
RPL: 11
三、使用LES指令修改ES
// LES.cpp : Defines the entry point for the console application.
//#include "stdafx.h"// RPL <= DPL
// Selector: 0000 0000 0011 1000(0038)
// LES高2字节给ES,低4字节给ECX,其他指令如LSS,LDS依此类推
// RPL是段选择子的权限,DPL是段描述符的权限,数值越大权限越小
// 因此当RPL=3时,只能访问DPL=3的段描述符;当RPL=0时,可以访问所有段描述符
// 下面的buffer作为源操作数执行les指令,会把ES写为0x0038,EAX写为0x11223344
char buffer[6] = {0x44,0x33,0x22,0x11,0x38, 0x00};int main(int argc, char* argv[])
{// LES修改段寄存器__asm{les ecx,fword ptr ds:[buffer]}return 0;
}
(3)段描述符,段选择子,LES指令相关推荐
- 【2021.03.10】段描述符与段选择子、GDT、LDT
要点回顾 前文提到,当写入一个段寄存器的时候,只给了一个16位的数值,但是段寄存器有96位. 那么剩下的80位从哪里来的?这个16位的数值是随便写的吗? Windbg指令 指令 功能 r 查看寄存器 ...
- 分段管理机制(段描述符,描述符表,段选择符)
逻辑地址-=>线性地址-=>物理地址 前面我们提到了当使用80x86微处理器时,有三种不同的地址: 逻辑地址(logical address):包含在机器语言指令中用来指定一个操作数或一条 ...
- 1.段描述符与段选择子
80386中段寄存器分别有: ES CS SS DS FS GS LDTR TR 共96位,其中有16位是可见的,80不可见 至于为什么是96位下面有讲 //结构体表示: Struct Segment ...
- 段选择符和段描述符的关系
段选择符用来表示指向哪个段描述符,即用来在段描述符中寻址,前13位是地址,能寻0到(2^13)-1,因此段描述符表的大小就是 8192,他还牵扯到一些特权级的限制,后三位:段描述符是用来表示这个段的一 ...
- (4)段描述符P,G位
一.回顾 在前面的课程学习中我们了解到,段寄存器有96位,其中80位不可见,包括Base,limit,attribute.16位可见,即段选择子selector. 对段寄存器进行写入时,CPU根据段选 ...
- (2) [保护模式]段描述符
段描述符 1. 段选择子 2. 段描述符 注解: 段选择子index的使用 查GDT表填充段寄存器 向上拓展与向下拓展 一致代码段与非一致代码段 隐式堆栈访问 如果文中有错误,还请指正 1. 段选择子 ...
- gdt描述_GDT表与段描述符
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html GDT表与段描述符 一.介绍 如果之前学习过"实模式&q ...
- 数据段描述符和代码段描述符(一)——《x86汇编语言:从实模式到保护模式》读书笔记10
一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住 ...
- 操作系统学习(五) 、代码段和数据段描述符
一.代码段和数据段描述符格式 段描述符通用格式如下所示: 代码段和数据段描述符中各个位的含义如下所示: 二.代码段和数据段描述符类型 当段描述符中S标志位(描述符类型)被置位,则该描述符用于代码段或数 ...
最新文章
- 因为一条SQL,程序员差点被祭天......
- IE6动态插入option
- boa支持https_Boa: 在 Node.js 中使用 Python
- json字符串转java对象数组
- 273. 整数转换英文表示(模拟)
- 安卓手机上跑_第一名易主?看看安兔兔公布的二月份安卓手机性能跑分排行
- Prototype.js 1.4中文使用手册PDF版下载
- 关于未知的USB设备(设备描述符请求失败)的解决方法。
- 手机变成投影仪 建筑穿上节能衣
- 51单片机学习笔记003-----烧录软件和编译器的安装
- 进化树相关概念和类型介绍
- redis实现分布式锁的几种方式
- “脚本小子”和真正黑客的区别是什么?
- 视频基本术语介绍 码流、帧率、分辨率、I帧、带宽
- 摄影网页设计制作 简单静态HTML网页作品 WEB静态摄影网站作业成品 学生DW摄影网站模板
- STM32系列 STM32F4xx SPI Flash-读写操作
- VR直播面临的五大技术挑战和实现难点
- 百度地图,你学会了吗
- 【QQ空间】网名大全
- Navicat11 for mysql(包括激活工具)亲测可用
热门文章
- 数据中心运维里的那些不成文的规定
- python文件处理,python文件处理
- 成功解决TypeError: ‘tuple‘ object is not callable
- ML之FE:数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并另存为csv文件
- DL之DCGNN:基于TF利用DCGAN实现在MNIST数据集上训练生成新样本
- DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略
- WRF用户手册翻译:Chapter 5: WRF Model
- Android 2018最新验证手机号正则表达式
- shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言
- Spring cloud系列之Zuul配置项中sensitiveHeaders和ignoredHeaders