- 博客(5)
- 收藏
- 关注
原创 1.5windwos内核——分页
两个虚拟内存之间互不影响虚拟内存离不开物理内存,物理内存的地址移动,虚拟内存也会随之移动物理内存满了后,会将不用的内存放到缓冲区,虚拟内存大小4GB,物理内存大小取决于内存条大小开机时实模式访问的物理地址,开启保护模式后都是虚拟地址每个进程有自己的一份CR3寄存器,一个进程里的线程共用一个CR3。页目录表PDT 4KB 4096字节,PDE有4字节,一共有1024项,10个2进制位1012PDE高20位是物理地址,指向另外一个物理页,低12位是属性。每个物理页都是4kb页表中PTE
2021-10-13 19:06:22
145
原创 1.4 windows内核——中断门,陷阱门,任务门
TSS任务状态段 一个内核一个,存在于内存中,不存在与cpu;可以让cpu同时执行多个任务。进程A申请堆栈时要向TSS申请,申请时会有两个一个0环,一个3环的,1.TSS结构本质:不要把TSS与“任务切换”联系到一起TSS的意义就在于可以同时换掉”一堆”寄存器段寄存器有es,cs,ds,gs,idtr,tr那么如何找到TSS,答案是tr从GDT表中找到tr段寄存器,selector记录着TSS段描述符,base记录TSS表位置,limit记录TSS大小2.tr段寄存器3. TSS
2021-10-13 15:29:34
654
原创 1.3 window内核——调用门
调用门起的过度的作用,3环的程序经过调用门再到0环中运行指定命令,再出0环回到程序执行调用门执行流程指令格式:CALL CS:EIP(EIP是废弃的)执行步骤:1) 根据CS的值 查GDT表,找到对应的段描述符 这个描述符是一个调用门.2) 在调用门描述符中存储另一个代码段段的选择子.3) 选择子指向的段 段.Base + 偏移地址 就是真正要执行的地址.门描述符注意:1. S位(第12位)必须为0,只有当S位为0时,段描述符才是系统段描述符;此时,当Type域为1100时,该描
2021-10-09 20:21:35
217
原创 1.1 windows内核——保护模式
仅用于记录个人日记,直供参考1、什么是保护模式?x86 CPU的3个模式:实模式、保护模式和虚拟8086模式。保护模式包括段的保护机制和页的保护机制段寄存器有ES CS SS DS FS GS LDTR TR 共8个段寄存器成员简介段寄存器格式struct SegMent{ WORD Selector; //16 WORD Attributes; //16 DWORD Base; //32 DWORD Limit; //32}ES:[0]不可用FS
2021-10-08 12:36:22
947
原创 1.2 window内核——代码跨段(Jmp和call指令对堆栈的操作)
JMP指令jmp 0x20:0x004183D7调用时的步骤拆分,将0x20拆分成b0010 000,RPL=0;TI=0;index=4查找GDT,找到第五个段描述符;四种情况可以跳转:代码段、调用门、TSS任务段、任务门权限检查,如果是非一致代码段,要求:CPL == DPL 并且 RPL <= DPL;如果是一致代码段,要求:CPL >= DPL(CPL由CS二进制位后两位决定)加载段描述符通过上面的权限检查后,CPU会将段描述符加载到CS段寄存器中.代码执行CPU将 CS
2021-10-08 12:34:41
862
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人