社区
硬件/系统
帖子详情
请详细解释下ring3,ring0和应用编程,驱动编程之间的关系?
dean350
2008-12-08 05:51:20
请详细解释下ring3,ring0和应用编程,驱动编程之间的关系?
应用编程是否通常在ring3下,驱动编程通常在ring0下?
还是通过驱动编程进入ring0是最方便的?
...全文
576
12
打赏
收藏
请详细解释下ring3,ring0和应用编程,驱动编程之间的关系?
请详细解释下ring3,ring0和应用编程,驱动编程之间的关系? 应用编程是否通常在ring3下,驱动编程通常在ring0下? 还是通过驱动编程进入ring0是最方便的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bainan
2009-01-04
打赏
举报
回复
[Quote=引用 9 楼 feeboby 的回复:]
应用程序运行在ring3 下
驱动程序运行在ring0 下
应用程序应该通过OS 提供的接口call 到驱动程序,让驱动程序执行ring0 的任务
[/Quote]
回答得已经很简洁明确了!
e_sharp
2008-12-13
打赏
举报
回复
UP
classfree
2008-12-13
打赏
举报
回复
所谓的RING0 和 RING3是操作系统的权限级别
RING0下面可以有很高的特权,应用层调用的API基本上都是RING0完成的,操作系统只是封装了一下共应用层调用.
驱动通常都是工作在RING0下面, 应用层通常工作在RING3下面,但是应用层也可以直接调用某些RING0下面的函数.
通过驱动进入RING0的确是最简单的!
feeboby
2008-12-12
打赏
举报
回复
应用程序运行在ring3 下
驱动程序运行在ring0 下
应用程序应该通过OS 提供的接口call 到驱动程序,让驱动程序执行ring0 的任务
oyljerry
2008-12-12
打赏
举报
回复
普通应用程序跑在ring3,底层驱动跑在ring0,所以他们之间需要一些通信方式来打交道
ilovedrv
2008-12-12
打赏
举报
回复
ring3,ring0是cpu硬件特权级别,应用程序和驱动程序是软件开发上的概念,是操作系统上个概念
驱动程序显然是运行ring0级别,至于应用程序一般情况下是运行ring3级别,不过也可以通过特殊的手段进入ring0级别
weidong0210
2008-12-12
打赏
举报
回复
不懂 UP
糊里糊涂
2008-12-12
打赏
举报
回复
程序通过调用win32子系统(ring3)的接口(win32 api),win32 api通过sdt调用系统服务(ring3到ring0),系统服务然后将相应的请求解释为IRP发给相应的设备驱动实现相关的硬件底层的操作。
ivan_08
2008-12-12
打赏
举报
回复
AP(Application Programming)应用编程,指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。
ivan_08
2008-12-12
打赏
举报
回复
对于你的问题,看看这句
Windows只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用。如果普通应用程序企图执行RING0指令,则Windows会显示“非法指令”错误信息。尽管有CPU的特权级别作保护。
ivan_08
2008-12-12
打赏
举报
回复
什么是RING3?这得从CPU指令系统(用于控制CPU完成各种功能的命令)的特权级别说起。在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。比如:清内存、设置时钟等。如果所有的程序都能使用这些指令,那么你的系统一天死机n回就不足为奇了。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。形象地说,特权指令就是那些儿童不宜的东东,而非特权指令则是老少皆宜。
Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3。Windows只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用。如果普通应用程序企图执行RING0指令,则Windows会显示“非法指令”错误信息。尽管有CPU的特权级别作保护。
dean350
2008-12-12
打赏
举报
回复
忘了加分,怪不得没人回答。
【笔记】
RING0
与
RING3
之间
的简单交互
这篇博客介绍了如何在Windows系统中进行
RING0
和
RING3
之间
的简单交互,通过一个实例展示了如何从
ring3
应用
程序将PID传递给
ring0
驱动
,并利用
驱动
Hook NtOpenProcess函数,使得
应用
程序无法被任务管理器结束。加载
驱动
采用了SCM和封装后的CDRIVER类,尽管存在一些小bug,如返回信息不准确,但可以通过数组传递多个PID来扩展该方法。
Linux获取
ring0
权限,
Ring0
和
Ring3
权限级
本文介绍了Linux系统中
Ring0
和
Ring3
权限级别的概念,阐述了x86处理器的多级权限设计,以及内核程序与
应用
程序的区别。在
Ring0
拥有最高权限,通常用于操作系统,而
应用
程序在
Ring3
运行。讨论了rootkit的原理,以及一些只能在
Ring0
执行的指令,如加载寄存器和控制内存访问。文章还提及了在R3层使用特定指令的限制,指出这增加了系统安全性的挑战。
什么是
ring0
-
ring3
本文深入解析计算机系统中
Ring0
(内核态)与
Ring3
(用户态)的概念,探讨其在权限控制中的作用,以及如何保障系统安全与稳定运行。
Ring3
与
Ring0
的通信
本文
详细
介绍了Windows
驱动
程序中
Ring3
(用户模式)与
Ring0
(内核模式)的通信过程,包括IRP的三种缓冲区、I/O设备控制以及如何通过DeviceIoControl实现通信。通过设定设备对象的缓冲区读写方式,定义IO控制码,以及
Ring3
层的DeviceIoControl函数,实现安全的
Ring3
与
Ring0
交互。
从
Ring3
切换到
Ring0
的代码实现与分析
本文围绕从
Ring3
切换到
Ring0
展开,介绍了
Ring3
和
Ring0
的概念及权限差异,阐述了切换的必要性,如访问受保护资源、执行特权指令等。还讲解了中断、系统调用、特权检查的实现原理,以及保护环结构的作用、寄存器状态的保存和恢复,最后说明了返回到
Ring3
的机制。
硬件/系统
2,644
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章