本节的内容以知识为主,比较少技巧和经验。读者只需要了解,不需要熟练。如果你熟悉x86架构,请直接跳过这节。

现在探讨内核程序和应用程序之间的本质区别。除了能用WDK编写内核程序和阅读一部分Windows的内核代码之外,我们还需要了解它们的本质是什么,它们和我们熟悉的应用程序有什么区别。

Intel的x86处理器是通过Ring级别来进行访问控制的,级别共分4层,从Ring0到Ring3(后面简称R0、R1、R2、R3)。R0层拥有最高的权限,R3层拥有最低的权限。按照Intel原有的构想,应用程序工作在R3层,只能访问R3层的数据;操作系统工作在R0层,可以访问所有层的数据;而其他驱动程序位于R1、R2层,每一层只能访问本层以及权限更低层的数据。

这应该是很好的设计,这样操作系统工作在最核心层,没有其他代码可以修改它;其他驱动程序工作在R1、R2层,有要求则向R0层调用,这样可以有效保障操作系统的安全性。但现在的OS,包括Windows和Linux都没有采用4层权限,而只是使用2层——R0层和R3层,分别来存放操作系统数据和应用程序数据,从而导致一旦驱动加载了,就运行在R0层,就拥有了和操作系统同样的权限,可以做任何事情,而所谓的rootkit也就随之而生了。

rootkit在字面上来理解,是拥有“根权限”的工具。实际上,所有的内核代码都拥有根权限,当然,并不一定它们都叫做rootkit,这要看你用它来做什么。用rootkit技术开发的***和病毒正在迅速发展,它们往往极难清除,以往杀毒软件可以轻松清除掉系统中病毒的时代似乎已经一去不复返了。

大多数指令可以同时使用于R0层和R3层,但有些和系统设置相关的指令却只能在R0层被使用,或者在R3层的使用受到限制,主要有下面这些:

lgdt:加载GDT寄存器

lldt:加载LDT寄存器

ltr:加载任务寄存器

lidt:加载IDT寄存器

mov:加载和存储控制寄存器、调试寄存器时受限

lmsw:加载机器状态字

clts:清除cr0中的任务切换标记

invd:缓冲无效,并不写回

wbinvd:缓冲无效,并写回

invlpg:无效TLB入口

hlt:停止处理器

rdmsr:读模式指定寄存器

wrmsr:写模式指定寄存器

rdpmc:读取性能监控计数器

rdtsc:读取时间戳计数器

最后2条指令rdpmc和rdtsc,在cr4的位4(PCE)和位2(TSD)被设置的情况下可以同时被R0层和R3层调用。任何违反上面规定的操作,在Windows下都可能会产生通用保护故障的异常。

另外,还有些所谓的IO敏感指令,包括:

cli:关闭中断

sti:开启中断

in:从硬件端口读

out:往硬件端口写

这些指令在R0层可以直接被使用,在R3层被使用的时候还要检查IO许可位图,综合判断是否允许调用。

当然,前面已经声明我们写的和研究的代码都是内核代码,也就是说,上面这些指令都是可以用的。当然,相应的rootkit技术的病毒和***的作者显然也会明白这一点,所以这并不是让人很有安全感的一个现状。

更重要的保护机制是如何保证系统内存空间的读/写、可执行属性,这将在12.2节“保护模式下的分页内存保护”中详述。对于病毒和***来说,使用硬件机制来实现破坏虽然并非不可能,但是远不如直接修改内存中的操作系统内核和其他软件的代码来得简洁方便,那是破坏与安全对抗的主战场。

Linux获取ring0权限,Ring0和Ring3权限级相关推荐

  1. Linux获取root权限

    有时候,我们需要对Linux服务器的文件进行更新,但是没有权限去操作root权限下的文件,此时可以将普通权限修改为root权限,修改方式如下(图片本身示例为root权限下修改,不用在意): 1.控制台 ...

  2. linux获取最高权限并取消_Linux获取最终权限说明

    由于Linux权限的特性,当我们要分享自己的文件时,一般文件都要修改权限以适合其他用户的使用.在Linux系统中创建一个文件和创建一个目录所获得的最终权限是不相同的.Linux文件的最终权限与umas ...

  3. Linux系统基础-管理之用户、权限管理

    Linux用户.权限管理 ============================================= 一.如何实现"用户管理" 1.什么是用户 "User ...

  4. 权限认证php,2016年Linux认证基础知识:php做权限管理

    2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...

  5. 不是Linux文件系统的权限,Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)...

    文件系统的权限管理(DAC体系:自主访问控制体系): 普通权限 特殊权限 文件的扩展属性 FACL(文件系统访问控制列表) 安全上下文: 任何在计算机中执行的任务都是由进程来实现的,所以进程就有必要访 ...

  6. linux 权限777_Linux编程之权限系统与工具使用(二)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续通过权限系统与工具使用来阐述Linux编程: 一. ...

  7. linux ftp查看用户目录权限,linux 指定ftp用户 特定目录及权限

    Linux添加FTP用户并设置权限 在linux中添加ftp用户,并设置相应的权限,操作步骤如下: 1.环境:ftp为vsftp.被限制用户名为test.被限制路径为/home/test 2.建用户: ...

  8. Linux下的用户、组和权限的详细解释

            前言:在linux中一切都是文件(文件夹和硬件设备是特殊的文件),如果有可能尽量使用文本文件.文本文件是人和机器能理解的文件,也成为人和机器进行交流的最好途径.由于所有的配置文件都是文 ...

  9. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略

    01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...

  10. 《Linux基础三》用户和文件权限管理

    用户和文件权限管理 1,用户 管理员用户: Root用户,也称根用户.超级用户.超级管理员 可对根目录执行读写和执行操作 具有系统中的最高.所有权限 普通用户: 权限有限的用户 Root用户拥有系统的 ...

最新文章

  1. html5标记汇总,HTML标记汇总(1)_HTML教程
  2. 黑苹果没有找到触控板为什么还是能用_为什么Macbook触控板体验领先Windows那么多,却难以取代鼠标?...
  3. 蔚蓝 游戏 android,永远的蔚蓝星球
  4. tomcat服务器上https的SSL证书安装配置
  5. Flink的处理背压​原理及问题-面试必备
  6. android百度多渠道打包,Android多渠道打包方案的实践与优化
  7. shell脚本批量创建用户
  8. L019-老男孩Linux高端运维课程-linux用户管理手把手深入实战
  9. linux invalid argument_Linux命令很熟悉,你知道它们的英文全称和中文解释吗?
  10. 全网首发Modown主题8.31开心版
  11. 中国极地考察船“雪龙”号前往南极中山站
  12. 引导(booting)
  13. U盘安装ubuntu 16.04 遇到 gfxboot.c32:not a COM32R image boot 的解决方法
  14. 初级信息处理技术员access教程_软考初级信息处理技术员2018下半年上午试题与答案及解析...
  15. Dplayer直播m3u8流
  16. Python SSL操作手册
  17. 玩转服务器-博客两件套之绝佳的Markdown写作平台CodiMD
  18. Centos7安装搭建FTP服务器VSFTPD
  19. 计算机图像处理之几何畸变矫正
  20. 登陆ins未能连接服务器,ins未能连接到服务器

热门文章

  1. 打印纸张尺寸换算_纸张的尺寸规格对照
  2. 在 Activity 中添加 Menu 菜单
  3. 第四章——波形与矢量AWGN信道
  4. 数学建模:地貌图的完成
  5. Fatal error: Out of memory (allocated 2252140544) (tried to allocate 67108864 bytes)
  6. [教程] 如何复活一个完全死机的联发科设备
  7. Python办公自动化实践:连接MySQL数据库实现每日定时批量发送报表邮件
  8. 计算机基础知识——二进制
  9. 云流化是什么?对软件企业有什么好处?
  10. 冷藏温度范围_冷藏和冷冻的温度标准