【发布时间】:2011-08-18 01:27:56
【问题描述】:
我需要控制 C-State 配置。具体来说,我可能想执行以下 asm 代码:
__asm
{
rdmsr
and eax, 0x00
or eax, 0x01
wrmsr
}
目前,我在rdmsr 行收到此异常:
MessWithCStates.exe 中 0x00e3139e 处未处理的异常:0xC0000096:特权指令。
我如何(永久)提升我的应用程序的权限,以便它可以执行上面的代码?我使用 VS 2010。
注意:无需编写内核模式驱动程序即可。请参阅R/W Everything。
【问题讨论】:
-
欢迎来到 Stack Overflow!尽管您有注意,但我怀疑如果不编写内核模式驱动程序,这是不可能的。 This page 似乎暗示 R/W-Everything 使用驱动程序。
-
是的。应该不可能在 Ring3 内进行 MSR 更改。从理论上讲,除了编写驱动程序之外,它还可以通过多种方式受到攻击 - 但似乎创建内核驱动程序 (WDK) 将是最简单的方法。
-
这样的程序将驱动程序嵌入到 EXE 中,在运行时扩展和加载它。经典 SysInternals 的把戏。 RDMSR 需要 ring 0 权限,只有驱动程序才能获得。
-
我同意这不能以任何方式直接从用户模式完成。这将需要设备驱动程序。
-
感谢 Alex、Rob、qdot、Hans ans Omnifarious 提供有趣且准确的回复。我将学习更多关于编写内核模式驱动程序的知识。
标签: c++ c cpu masm cpu-registers