抗艾龚伦强:过游戏驱动保护01之Windows保护模式

奉劝各位洁身自好,技术再好,钱再多,身体不行了都是白搭,不要跟我一样,等到现在才来后悔

技术?我好的一逼,可以说国内C++比我厉害的屈指可数

金钱?我大把的,可以说国内程序员比我有钱的基本没有,奈何染上了HIV,既然没有生的希望,那就把技术传给你们把,身虽死,技术尚存!

一、保护模式

1.1.双机调试

1.添加debug调试模式

虚拟机下载补丁安装vmwaretool

2.虚拟机设置

3.windbg

4.加载符号表

1.2.段选择子和段描述符

1.2.1.windbg

1.2.2.段选择子

ds:0023

1.2.3.段描述符

段描述符:00cff300`0000ffff

二进制:00000000 1100 1111 1 11 1 0011 00000000

P

S

Type

D/B

G

AVL和21位

1.2.4.RPL, DPL和CPL

权限

1.3.调用门

当段描述符的S标志位0,该描述符为系统描述符

调用门

Offset in Segment

Segment Selector

Param Count

调用门实验

1.vs2008属性修改

2.代码

打开DebugView,证明已经提权成功

3.windbg构建调用门描述符

4.堆栈变化

1.4.中断门

中断门描述符

中断门在idt表里面,构建一个类似int 3 功能的中断门描述符

代码

system("pause");

查看堆栈变化dds esp

中断门影响的Eflags位

1.5.劫持int 3

1.把idt表中int 3位置处的段选择子0008改为0048(找我们自己构建的段描述符)

2.构建gdt48位置的段描述符

4.代码

1.6.陷进门

陷进门描述符

构建陷进门

代码

}

2.TSS描述符

4.查看TSS结

1.8.任务门

1.任务门

16-31位是任务段的选择子

2.代码

4.修复cr3

1.9.101012分页

1.9.1.开启101012分页

1.打开EasyBCD工具 添加新条目--名称--添加新条目

高级设置-->开发-->勾上在内核调试模式下运行windows

2.kernel区分

1.9.2.拆分线性地址

1.用ce搜索记事本内本,得到线性地址0032E310

2.拆分线性地址

3.windbg查看物理地址

实验

1.9.3.PDT,PDE,PTT,PTE

物理页结构

1.10.零地址

实验目的:把A进程的物理页挂到B进程的0地址上,通过远程线程跑起来

实验目的:把A进程的物理页挂到B进程的0地址上,通过远程线程跑起来

system("pause");

3.挂物理页

把A进程的PTE挂到test进程的0地址

1.11.页属性

Figure 3-14. Format of Page-Directory and Page-Table Entries for 4-KByte Pages

and 32-Bit Physical Addresses

A

D

PS

G

全局页。当一个页被表明为全局,并且CR4中的启用全局页(PGE)标志被置位时,一旦CR3寄存器被 载入或者发生任务切换, TLB中的页表或者指向页的目录项并不失效。这个标志可以防止使TLB中频繁 使用的页失效

1.12页基址

1.分析MilsAddressValid函数

1.分析MilsAddressValid函数

2通过上面分析得出结论

MilsAddressValid函数只有一个参数,就是线性地址。 判断一个线性地址是否有效,分大页和不是大页两种情况

PDE的页基址位C0300000

#PDE计算

线性地址右移20位,然后and FFC PDE: C0300000+上面的结果

PTE的页基址位C0000000

#PTE计算

线性地址右移10位,然后and 3FFFFC

PDE: C0000000+上面的结果

3实验证明页基址,拿gdtr当线性地址80b93000

线性地址: 80b93000

用页基址的方式查找

دد ه اه د دا هادده حه ده اه دات دادهه د هه وهدود ده وددسد

1.13.29912分页

1.13.1拆分线性地址

1·用ce搜索记事本内本,得到线性地址002244E8

2拆分线性地址

1.13.2.页基址

分析MilsAddressValid函数

.text:00483F2A;stdcall MiIsAddressValid(x, x)

.text:004B3FB1 MiIsAddressValid@8 endp

هه -

1.13.3页属性

Figure 4-7. Formats of CR3 and Paging-Structure Entries with PAE Paging

1.14缓存

1.WC,WB,WT

2.PAT, PCD,PWT

PAT(Page Attribute Table)

PAT(Page Attribute Table)

1.15.TLB

验证TLB的存在

实验

pushfd; push 0x30; pop fs;

CR2

保存出现异常的线性地址

CR0

CR4

  • 35
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这段视频介绍了x86汇编语言下,如何从实模式切换到保护模式。 首先,视频介绍了实模式的特点和局限性。实模式下,CPU只能寻址1MB的内存空间,同时所有的程序都需要运行在同一个特权级下,对于大型程序和操作系统而言非常不利。 接着,视频介绍了如何切换到保护模式保护模式下,CPU可以通过基地址和段选择器来访问4GB的内存空间,同时程序可以运行在不同的特权级下。切换到保护模式的关键步骤包括:设置GDT和IDT表、开启A20线、设置CR0寄存器、跳转到保护模式代码段等。 最后,视频演示了如何编写汇编代码来实现保护模式的切换。代码包括定义GDT和IDT表、开启A20线的函数、设置CR0寄存器的函数,以及跳转到保护模式代码段的函数。通过这段视频的学习,我们了解了从实模式到保护模式的切换原理和实现方法,对于深入理解操作系统和底层编程有着重要的意义。 ### 回答2: x86汇编语言是计算机的底层语言,包括实模式和保护模式两种运行模式。实模式是早期计算机的一种运行模式,它的内存访问方式简单,容易理解。在实模式下,整个物理内存空间可以直接寻址,但同时也带来一些安全问题。为了保护内存和提高计算机运行的稳定性,最终出现了保护模式保护模式是x86汇编语言的一种运行模式,它可以让计算机利用内存管理单元(MMU)来对内存进行隔离和保护。在保护模式下,内存空间被分为多个段,并为每个段赋予相应的权限和特权级别。这样可以有效保护计算机的内存空间,避免程序之间相互侵入和破坏。 保护模式的运行需要经过一系列的初始化,包括:打开地址线扩展、禁用中断、打开分页等操作。这些操作可以通过设置控制寄存器和描述符表来实现。 在保护模式下,程序运行的特权级别由RPL(Requested Privilege Level)和CPL(Current Privilege Level)两个标志位来控制。CPL位于代码段和数据段的选择子中,代表当前运行程序的权限级别,而RPL位于代码选择子和数据选择子中,用来判断程序是否有权访问对应的段。 在保护模式下,虚拟地址需要经过地址转换才能转换成物理地址,这需要使用页表来对虚拟地址进行映射。页表和页目录存储在内存中,需要通过控制寄存器来取出相应的值进行地址转换。 总之,x86汇编语言的实模式和保护模式都有各自的特点和应用场合,学习x86汇编语言需要深入理解这两种运行模式的原理和实现过程。 ### 回答3: x86汇编语言是计算机硬件操作指令的编程语言,是本质上依赖于CPU架构和指令集的语言。根据其中对内存的处理方式的不同,x86汇编语言可以分为实模式和保护模式。 实模式是指CPU直接访问物理内存,地址总线是20位,内存寻址空间最大为1MB。实模式下的程序可以访问系统资源,例如中断处理、内存读写等操作。但实模式下内存空间过小,程序出错容易导致系统崩溃。 保护模式是一种更加灵活和安全的工作状态,地址总线扩展到了32位,理论内存访问空间可以达到4GB以上。保护模式下内存被划分为多个段,程序可以在相互独立的段之间进行操作,可以在段级别上分配权限,从而提高代码的安全性。同时,保护模式也支持虚存技术,通过硬件的支持,可以将程序的实际运行数据放入物理内存和虚拟内存的组合体内,从而可以利用硬盘来进行虚拟内存的支持,使得多个程序在同一系统上运行时不会相互干扰,同时提高系统的稳定性。 因此,在现代操作系统上,保护模式是必需的。x86汇编语言需要不同的功能选项来在实模式和保护模式之间进行转换。在视频中,我们可以学习如何从实模式切换到保护模式,并掌握如何在保护模式下使用不同的功能选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值