Windows内核基础知识-1-段寄存器
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;
} 
很简单的代码,就给代码段赋值,但是通过其他寄存器来中间调用了一下。
可以看到执行到这里的时候就出了问题,
但是如果我们换了别的段寄存器就是可以正常运行:
__asm
{
mov dx,ds
mov ss,dx
mov eax,1
mov dword ptr ss:[g_int],eax
}
说明并不是通过段寄存器的名字来管理内存的读写执行权限的。
而是通过段寄存器的选择子/选择符来决定。也就是通过od可以直接看到的16位内容。
Windows内核基础知识-1-段寄存器的更多相关文章
- Windows内核基础知识-2-段描述符
Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...
- Windows内核基础知识-5-调用门(32-Bit Call Gate)
Windows内核基础知识-5-调用门(32-Bit Call Gate) 调用门有一个关键的作用,就是用来提权.调用门其实就是一个段. 调用门: 这是段描述符的结构体,里面的s字段用来标记是代码段还 ...
- Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主 ...
- windows内核基础与异常处理
前两日碰到了用异常处理来做加密的re题目 所以系统学习一下windows内核相关 windows内核基础 权限级别 内核层:R0 零环 核心态工作区域 大多数驱动程序 应用层:R3 用户态工作区域 只 ...
- 第0章Linux环境到内核基础知识
#include<stdio.h> int main(void) { printf("hello world\n"); return 0; } gcc -g -wall ...
- [汇编] 002基础知识-CPU和寄存器
CPU是什么 当然这里的内存不仅仅指电脑上的内存,例如:我的金士顿8G内存,七彩虹1G独显,在这里来说,显卡也是有内存的(寄存器) CPU如何控制其它部件的? 问题:CPU是如何和电脑主机中其它芯片有 ...
- 学习C#基础知识这段时间
似乎穿越的感觉,我又来到了这周的周五,总是在周五,知道了时间的概念,上午会讲课,但是在下午就是一个总结小练习,上午老师给我们讲了委托,在听课时间感觉很简单啊,哪里有难的地方啊,一直在好奇,老师在演示给 ...
- shell基础知识7-字段分隔符与迭代器
什么是内部字段分隔符 内部字段分隔符(Internal Field Separator,IFS)是shell脚本编程中的一个重要概念.在处理 文本数据时,它的作用可不小. 作为分隔符,IFS有其特殊用 ...
- Windows内核原理-同步IO与异步IO
目录 Windows内核原理-同步IO与异步IO 背景 目的 I/O 同步I/O 异步I/O I/O完成通知 总结 参考文档 Windows内核原理-同步IO与异步IO 背景 在前段时间检查异常连接导 ...
随机推荐
- Whitzard OJ Introduce to packing
1.概述 这个就是个smc,为什么会归于加壳,我个人理解是和UPX的运行方式有点像把,不对应该是说和压缩壳的运行方式 很相似,都是先运行一段解密代码,之前的符号表也替换了下 2.解题 有两种方式一种是 ...
- SwaggerHub 更快,标准化的API设计软件
更快,标准化的API设计 在功能强大且直观的编辑器中设计API,该编辑器旨在提高速度和效率,而不会损失设计一致性. SwaggerHub帮助我们简化了设计和实现API的方式-作为一名架构师,我喜欢良好 ...
- fast-poster海报生成器v1.4.0,一分钟完成海报开发
fast-poster海报生成器v1.4.0,一分钟完成海报开发 介绍 一个快速开发动态海报的工具 在线体验:https://poster.prodapi.cn/ v1.4.0 新特性 为了项目和团队 ...
- gitlab部署及汉化
目录 Git 简介 部署 1. 配置yum源(推荐) 2. 安装 配置GitLab 1.加载配置 2.修改git默认访问端口 gitlab.rb unicorn.rb gitlab-http.conf ...
- js中 typeof 和 instanceof 的区别
typeof 和 instanceof 都能判断数据类型,但是它们之间有什么区别呢,浅谈如下 typeof 用于判断数据类型,返回值为以下6种类型 1.string 2.boolean 3.numbe ...
- 基于SSM酒店管理系统mysql版本(前后台)
介绍:spring,springmvc,mybatis,mysql,eclipse 截图: 数据库表:CREATE TABLE `account` ( `id` int(11) NOT NULL AU ...
- spring pom文件报错:提示no declaration can be found for element 'dubbo:service'.
转自:http://blog.csdn.net/happylife_haha/article/details/52755425 pom文件报错:The matching wildcard is str ...
- 在deeping上安装mariadb
1,安装的官网参考:有安装的命令和指导https://downloads.mariadb.org/mariadb/repositories/#distro=Debian&distro_rele ...
- python基础之while语句操作
# i = 0# while (i < 9):# print("i ----> ",i)# i = i + 1# print(i,"i即将大于或者等于9,wh ...
- 手机端web网页布局经验总结(持续更新中)
1. 首先,在网页代码的头部,加入一行viewport元标签,我们一般是不让用户手动的去改变页面的大小的. <meta name="viewport" content=&qu ...