只试了一下hyperplatform,别的估计也行。
主要原理就是Nmi的不可屏蔽特性,首先A核向B核发送一个ipicall,让B核vm-exit,然后A核马上利用local apic,发送一个消息让B核去执行Nmi中断,然后Nmi中断后执行我们预先注册的callback,我们的callback就拿到了host的权限。下面代码是一个测试,有虚拟化就不会蓝屏,没虚拟化就出非法指令,然后蓝屏。
核心代码:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课