1

是的,我知道,周围有一些类似的问题,但没有一个是令人满意的

我知道这是一个愚蠢的想法,但我需要使用我的 Visual Studio 2015 C++-Project 进入内核模式(又名 Ring 0)。
我还想用最少的努力来完成它(意思是,我不想创建一个专门用于测试的驱动程序,并且在每次构建后都必须签名和重新部署,因为这非常乏味)。

我怎样才能做到这一点?

对我来说,项目是在我的主机上还是在远程(或虚拟机)上运行并不重要——我有足够的机器可供使用。


背景:我目前正在研究Cosmos 操作系统,我需要测试需要 Ring 0“特权”的 X86 汇编指令,例如rdmsroutin
运行以下代码将在第 8 行中断并出现0xC0000096: Privileged instruction.-Error:

int* ptr = new int[4];
int* va = ptr;

__asm
{
    lea esi, va
    mov ecx, 0xe7
    rdmsr                //error, as this must run in ring0
    mov [esi + 4], eax
    mov [esi], edx
    mov ecx, 0xe8
    rdmsr
    mov [esi + 12], eax
    mov [esi + 8], edx
    xor eax, eax
}

....

是的,我完全意识到我正在承担的任何风险,所以请不要问,为什么我需要做这样的事情,或者我是否想获得程序员的达尔文奖;)

4

1 回答 1

1

AFAIK Visual Studio 无法调试内核代码,但还有其他调试器可以:WinDbgKD。你需要一些时间来弄清楚它们,但没有其他办法。

于 2016-09-19T10:48:01.307 回答