最简单的方法是,只运行(x86)命令并捕获相应的错误.
例如(SEH,Windows,内核模式)
bool ring_lower_0 = false;
__try
{
__asm { <cmd> };
ring_lower_0 = true;
}
__except( GetExceptionCode() == EXCEPTION_PRIV_INSTRUCTION )
{
ring_lower_0 = false;
}
Run Code Online (Sandbox Code Playgroud)
笔记:
cmd,是一个汇编命令.有关命令及其各自的环级别列表,请参阅"英特尔体系结构参考手册".
Linux的概念略有不同.
但请记住,驻留在较低级别的VM可能会通过模拟调用来掩盖结果.
(注意:VM的作业是将无效指令转换为有意义的调用)
如果你真的想检查你的虚拟化并且想要因此而停止执行,你应该阅读有关"红丸"的文章.
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |