在C ++中获取ring 0模式(Windows)

时间:2009-09-13 07:45:19

标签: c++ windows

如何在Windows 7(或Vista)中为我的进程获取响铃0操作模式?

3 个答案:

答案 0 :(得分:16)

允许任意代码在ring 0中运行违反了基本的OS安全原则。

只有OS内核和设备驱动程序在环0中运行。如果要编写ring 0代码,请编写Windows设备驱动程序。 This可能会有所帮助。

某些安全漏洞可能允许您的代码在环0中运行,但这不可移植,因为可能会在补丁中修复漏洞:P

答案 1 :(得分:7)

从技术上讲,所有进程都有一些线程将一些时间花在内核模式(ring 0)上。每当用户模式进程向系统调用进入操作系统时,就会发生一个转换,其中线程通过“门”进入环0。每当进程需要与设备通信,分配更多进程范围内存或生成新线程时,系统调用就会要求操作系统提供此服务。

因此,如果你想让一个进程在ring 0中运行一些代码,你需要编写一个驱动程序,然后通过一些系统调用与这个驱动程序通信。最常见的系统调用称为ioctl(代表I / O控制)。

在Windows平台上要看的另一件事是UMDF(用户模式驱动程序框架)。这允许您以用户模式(在环3中运行)编写,调试和测试驱动程序,但系统中的其他驱动程序或其他进程仍可访问它。

答案 2 :(得分:2)

您无法从用户模式进程设置内核模式。这就是安全性的作用。