内核知识第十一讲,门,以及中断和中断异常.

小说:边玩边赚微信零花钱的作者:乙戏通顺更新时间:2019-03-20字数:20823

胡列娜秀眉微皱,眼中血红色的光芒明显增强了几分,“这不是适应。只是喝了它会让我的心情平静一些,也不再那么躁动了。”

小学女生工作期末总结

这个峡谷只能一个人通过,可谓是狭窄无比,而且一不小心的话很容易会掉落千米不会的万丈悬崖。
没办法,每一个人都有自己的命门,卡嘉莉最大的命门就是奥布,这个倾注了她父亲所有心血感情乃至于生命的国家,而且也是这个国家由她的父亲亲手托付给她的,所以卡嘉莉不管如何都不能让奥布倒下。

这一次,他终于见到了地狱训练营的另外一个巨头狼。乍一见面,叶扬便是感觉出这狼的名字果然没有叫错,一双阴狠的眼睛只有真正的狼才拥有。

       内核知识第十一讲,门,以及中断和中断异常.

一丶TSS和TR寄存器.

首先,CUP在执行代码的时候.是按照任务执行的

每个任务有一个任务状态段TSS

用于保护任务的有关信息.在任务内变换特权级和任务切换的时候.要用到这些信息.

这个就是TSS任务状态段.

而在windows 80386中.有两种系统段.一种就是TSS,另一种就是LDT

系统段描述符格式:

这个系统段和存储段相同.

当DT = 1 表示这是个存储段

当DT = 0 则表示这个是系统段.

而如果是系统段.那么Type属性就很重要了.

而TR寄存器,就是保存了当前任务段的选择子.

而且是存放在GDT表中的.

当属性为C的是否.则是门描述符. 

格式:

门描述符的作用就是描述某个子程序的入口. 用门内的选择子.还有偏移.利用Call或者Jmp可以调用.

也就是说当我们三环调用API的是否,内部会使用门来进行特权级转换.而且门描述符记录了参数的个数. 还会保存 ring0的栈,

从栈里面获取参数信息.

当返回的是否,调用 retf汇编指令,从0环切换到3环.

查看TSS属性段.

当输入命令 dg  0 100 则会显示100项GDT表的内容.

 其中,操作系统在做API的时候,并没有使用门描述符来做.

我们自己可以构建一个门描述符 .这样当我们的三环调用我们的API的时候.

就可以调用到这个我们自己构造的门描述符了.

二丶中断和中断异常.

首先,什么是中断?

在我们的8086的年代里面. 调用API的是否是 int 21来进行调用的.

这就是一个中断.中断是什么?  其实中断就是一个电信号.

比如用户操作键盘,键当被按下就会产生一个中断.  但是CPU能接受到这个中断.但是不能去处理. 这个要操作系统去处理.

所以当有中断产生, CPU就会查表 . 表内容是固定的. 操作系统会填写函数指针. 当我们按键,产生中断了. 那么就会查表进行操作.

 

中断其实也是CPU和操作系统通信的一种机制.

比如我们的 int 3指令. 就产生一个异常.而在CPU接受到了,就会去查表.这样就可以处理int 3的指令了.

1.中断和异常.

中断我们说过了,是电信号. 而表则是CPU和操作系统的通信机制.

那么说下异常把. 其实异常也是中断. 只不过,我们的软件调试的时候.当我们的程序用内联汇编写的int 3的时候,就会产生断点功能.

其实软件产生的中断,就叫做异常. 而且int 3指令在ring3调用的时候.会产生特权级改变. CPU也会固定的去查表.

在80386里面.有两个银脚,是专门接受中断信号的.

而且80386最多接受256种中断或者异常.

引脚:

  INTR 专门接受中断或者异常, 当我们调用CLI汇编指令的时候.其实屏蔽的就是INTR.不让其接受中断信号.

  NMI  这个也是接受的.但是不能屏蔽的. 比如我们的系统在运行中,你把内存条拔了.那么就会产生电信号.有NMI引脚发送.

 

 

 二丶中断表的概念

我们上面说过,中断是CPU和操作系统通信的一种机制.

CPU接受中断. 那么就要查表.而操作系统要往这个表中填写函数指针.让CPU去执行.

比如我们的8086CPU,调用API的是否,其实就是 int 21h,其实21h就是在查表.查表中的第21项.可以把表看作成数组.

 

三丶IDT表

上面说的中断表.其实就是IDT表. IDT表因为在80386下,最多处理256个,所以这个IDT表只有256项.

而IDT表和GDT一样.只不过IDT表中存储的是门描述符.

比如:

  我们的int 3断点产生了. 那么就回去IDT表中寻找第三项.进行操作.

WinDbg调试查看.

IDT表的首地址会存放在IDTR寄存器中. 然后每一项都是按照门描述符来管理. 所以当我们拆出来的地址拼接成一个完整的地址,就可以查看完整的处理int 3断点的代码了.

当我们HOOK了这个第三项.那么你的程序将永运不会产生int 3断点.

其中,IDT表中每一项都是8个字节,因为不光要描述函数地址,还要藐视额外的属性信息.

 

编辑:辛龙杜

发布:2019-03-20 07:19:06

当前文章:http://cnsdbtzg.com/content/2019-01/18/content_55187.html

游戏任务推广平台开发 芜湖公交公司上班时间 赚现金的网络游戏 微信小游戏怎么赚钱 淘宝推广赚钱吗 租朋友圈赚钱营销模式 淘宝客高佣金陷阱 淘宝返利妹是怎么回事

67539 75056 79865 93526 71755 6158059868 83602 98127

我要说两句: (0人参与)

发布