Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C/C+执行RDMSR和WRMSR指令+;代码_C++_C_Cpu_Masm_Cpu Registers - Fatal编程技术网

C++ 从C/C+执行RDMSR和WRMSR指令+;代码

C++ 从C/C+执行RDMSR和WRMSR指令+;代码,c++,c,cpu,masm,cpu-registers,C++,C,Cpu,Masm,Cpu Registers,我需要控制C状态配置。具体而言,我可能希望执行以下asm代码: __asm { rdmsr and eax, 0x00 or eax, 0x01 wrmsr } 目前,我在rdmsr行中遇到了此异常: Unhandled exception at 0x00e3139e in MessWithCStates.exe: 0xC0000096: Privileged instruction. MessWithCStates.exe中0x00e3139e处未处理的异常:

我需要控制C状态配置。具体而言,我可能希望执行以下asm代码:

__asm
{
    rdmsr
    and eax, 0x00
    or eax, 0x01
    wrmsr
}
目前,我在
rdmsr
行中遇到了此异常:

Unhandled exception at 0x00e3139e in MessWithCStates.exe: 0xC0000096: Privileged instruction. MessWithCStates.exe中0x00e3139e处未处理的异常:0xC0000096:特权指令。 我如何(永久)提升我的应用程序的权限,使其能够执行上述代码?我使用VS2010


注意:无需编写内核模式驱动程序即可实现。查看所有内容。

很有可能,您正在环3内的x86处理器上运行此代码。您没有执行此命令的权限。时期这是一个硬件限制。执行该指令的唯一方法是进入环0,很可能操作系统不允许您这样做。您将需要编写一个内核模式驱动程序来实现这一点


编辑:有更多信息。

欢迎来到堆栈溢出!尽管有您的注释,我怀疑如果不编写内核模式驱动程序,这是不可能的。似乎暗示R/W-所有东西都使用驱动程序。是的。在Ring3中不可能进行MSR更改。理论上,除了编写驱动程序外,它还可能受到多种方式的攻击,但创建内核驱动程序(WDK)似乎是最简单的方法。类似这样的程序将驱动程序嵌入EXE,在运行时展开并加载。经典的系统内部技巧。RDMSR需要环0权限,只有驱动程序才能获得该权限。我同意这不能以任何方式直接从用户模式完成。这需要一个设备驱动程序。感谢Alex、Rob、qdot、Hans和ans Omnifarious提供的有趣而准确的响应。我将学习更多关于编写内核模式驱动程序的知识。谢谢你的启发。将学习如何编写内核模式驱动程序。