保护模式
文章平均质量分 70
call就不要ret
大菜鸡一个,致力于向各位师傅学习,喜爱二进制安全。热爱钻研技术
展开
-
x86体系结构--中断门
在学习哈工大操作系统课程的时候,在内核级线程的实现那一章节,李志军老师用代码的层次带我们研究内核级线程是如何切换堆栈的,包括用户栈切换内核栈的过程。中断门是一个64位的描述符,通过它可以找到我们要的中断处理程序的地址在GDT表中的具体位置,然后通过段描述符调整eip,跳转去执行中断处理程序。在Interrupt Gate中,高32位0-7位是保留位没有意义,高32位的8-12位我解释一下这是type类型,用于标识它是用于系统段还是代码段的,很显然这是个代码段。将标志寄存器(EFLAGS)的值压入栈中。原创 2023-06-19 23:17:35 · 205 阅读 · 0 评论 -
x86分页机制--101012分页(2)
虽然40位可以表示1 TB,但线性地址仅限于32位,因此每次最多只能访问4 GB的线性地址空间。而页表和页目录表的每一个成员都占用4字节,也就是总共有1024个成员,所以我们想找全1024个成员需要。32位分页使用分层的分页结构来为线性地址进行翻译。那么为什么是10-10-12分页呢,我们从图示的后面看起,一个物理页是4KB大小,计算机寻址的最小单位是字节,所以需要用。除了CR3寄存器指向的是真实的物理地址外,我们所能看见的都是线性地址。这个页的大小在winodws操作系统中,分页的粒度一般是。原创 2023-06-12 11:03:20 · 134 阅读 · 0 评论 -
X86分页机制-101012分页
它里面存了一个值指向的是物理页,上图所示的一级二级其实是一个页目录表,我们的10-10-12分页第一个10比特位就是找在第一级页目录的哪个位置,找到后里面存的又是一个地址,指向第二级页目录,然后通过第二个10比特位来找到第二级目录表中具体位置,里面存的是指向物理页的地址,接着用这个物理地址加上我们分解的12比特位找到最终位置。首先我们在xp上做实验,打开一个记事本写一句Hello world,因为一个记事本也是一个进程,同样有属于自己的4GB空间,我们写的hello world一定会存在它的空间里。原创 2023-06-11 22:43:32 · 300 阅读 · 0 评论