Windows内核基础知识-1-段寄存器

学过汇编的应该都知道段寄存器,在Windows里段寄存器有很多,之前可能只接触了ds数据段,cs 代码段这种,今天这个博客就介绍Windows一些比较常用的段寄存器。

段:Segment,段寄存器肯定是以s结尾的。通过olldydbg软件可以看到这六个常用的段寄存器

寄存器 描述
ES expand segment扩展段
CS code segment代码段
SS stack segment栈段
DS data segment数据段
FS 取teb的时候常用
GS 暂时不用管

段寄存器大小

段寄存器的大小其实是96位,这里能看到的内容只有16位,4个16进制的内容。

比如这里的:

ES 002B 32位 0(FFFFFFFF)

只有002B这16位的内容有值,这16位又被叫做段选择子/段选择符。

段寄存器的作用:

通过段寄存器来访问地址

其实说学了x8086汇编语言的都知道,地址是=段寄存器+偏移地址 来处理的

而在这个od里面可以很清楚的看到:

这个每个段寄存器后面有一个地址,代表着段寄存器的起始地址,es,cs,ss,ds,gs都是从0开始,除了fs。

控制内存读写权限

数据段ds有读写权限,ss也有读写权限,但是cs有读有执行没有写权限。

但是并不是通过段寄存器的名字来控制读写权限,比如:

#include<iostream>
#include<Windows.h>
using namespace std;

int g_int = 0;
int main()
{
__asm
{
mov dx,cs
mov ds,dx
mov eax,1
mov dword ptr ds:[g_int],eax
}
system("pause");
return 0;
} ![](C:\Users\onexia\AppData\Roaming\Typora\typora-user-images\image-20210824154621770.png)

很简单的代码,就给代码段赋值,但是通过其他寄存器来中间调用了一下。

可以看到执行到这里的时候就出了问题,

但是如果我们换了别的段寄存器就是可以正常运行:

__asm
{
mov dx,ds
mov ss,dx
mov eax,1
mov dword ptr ss:[g_int],eax
}

说明并不是通过段寄存器的名字来管理内存的读写执行权限的。

而是通过段寄存器的选择子/选择符来决定。也就是通过od可以直接看到的16位内容。

Windows内核基础知识-1-段寄存器的更多相关文章

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

    Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...

  2. Windows内核基础知识-5-调用门(32-Bit Call Gate)

    Windows内核基础知识-5-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权.调用门其实就是一个段. 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还 ...

  3. Windows内核基础知识-8-监听进程、线程和模块

    Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...

  4. windows内核基础与异常处理

    前两日碰到了用异常处理来做加密的re题目 所以系统学习一下windows内核相关 windows内核基础 权限级别 内核层:R0 零环 核心态工作区域 大多数驱动程序 应用层:R3 用户态工作区域 只 ...

  5. 第0章Linux环境到内核基础知识

    #include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...

  6. [汇编] 002基础知识-CPU和寄存器

    CPU是什么 当然这里的内存不仅仅指电脑上的内存,例如:我的金士顿8G内存,七彩虹1G独显,在这里来说,显卡也是有内存的(寄存器) CPU如何控制其它部件的? 问题:CPU是如何和电脑主机中其它芯片有 ...

  7. 学习C#基础知识这段时间

    似乎穿越的感觉,我又来到了这周的周五,总是在周五,知道了时间的概念,上午会讲课,但是在下午就是一个总结小练习,上午老师给我们讲了委托,在听课时间感觉很简单啊,哪里有难的地方啊,一直在好奇,老师在演示给 ...

  8. shell基础知识7-字段分隔符与迭代器

    什么是内部字段分隔符 内部字段分隔符(Internal Field Separator,IFS)是shell脚本编程中的一个重要概念.在处理 文本数据时,它的作用可不小. 作为分隔符,IFS有其特殊用 ...

  9. Windows内核原理-同步IO与异步IO

    目录 Windows内核原理-同步IO与异步IO 背景 目的 I/O 同步I/O 异步I/O I/O完成通知 总结 参考文档 Windows内核原理-同步IO与异步IO 背景 在前段时间检查异常连接导 ...

随机推荐

  1. 使用Azure Congnitive Services 技术制作AI故事机

    引言 前一段时间有幸参加了微软MVP的AI方面的学习挑战赛,对于AI 这个新的领域的技术瞬间勾起了我的学习兴趣. 最近几年,不管是国内还是国外,AI都是一个异常火热的词.比如现在的自动驾驶技术,其实就 ...

  2. 重置networker9.0密码

    一.重置Networker 9.0密码 下面所有步骤在Networker服务器上操作 1.创建"mypassword_in.txt"文件 在服务器C盘根目录下创建一个 " ...

  3. 「CF997E」 Good Subsegments

    CF997E Good Subsegments 传送门 和 CF526F 差不多,只不过这道题是对多个子区间进行询问. 据说有一个叫析合树的东西可以在线做,不过有时间再说吧. 考虑离线询问,将每个询问 ...

  4. CTF-Decrypt-the-Message-writeup

    Decrypt-the-Message 题目信息: 解密这段信息! 附件: The life that I have Is all that I have And the life that I ha ...

  5. python -- 面向对象编程(属性、方法)

    一.属性 对象的属性(attribute)也叫做数据成员(data member). 如果想指向某个对象的属性,可以使用格式: object.attribute 属性又分为:私有属性和公有属性. 私有 ...

  6. 【Azure 应用服务】App Service服务无法启动,打开Kudu站点,App Service Editor 页面均抛出:The service is unavailable

    问题描述 App Service 服务URL无法访问,进入门户中的Advanced Tools(Kudu).App Service Editor (Preview)等页面无法打开, 打开就出现 The ...

  7. 【洛谷1339 [USACO09OCT]】热浪Heat Wave 图论+最短路

    AC代码 #include<bits/stdc++.h> using namespace std; const int MAXN=62000+10,INF=999999; struct E ...

  8. jenkins资源下载地址(软件、插件等)

    jenkins资源下载地址(软件.插件等) 1. 镜像1:清华镜像 2 .镜像2:http://mirrors.jenkins-ci.org/ 3. 官方下载地址:https://jenkins.io ...

  9. Hadoop (8088)未授权访问

    cd /vulhub/hadoop/unauthorized-yarn 加速下载环境 sudo vim /etc/docker/daemon.json 添加 {"registry-mirro ...

  10. 04.委托Delegation

    1. 基本了解 1.1 委托简述 官方文档 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用,用于将方法作为参数传递给其他方法,可将任何可访问类或结构中与委托类型匹配的任何方法分配给委 ...