-
-
[求助][求助]关于 VMX int 1
-
发表于:
2010-8-12 20:42
7704
-
看了一篇文章,关于 VT 的 试验了以下,感觉很是迷茫,下载了 ROOTKIT 上的代码 自己改了下
发现能断在 程序调用int 1 中断之前:
if( IntrNo==1 /*|| IntrNo==3*/ )//是INT1或者INT3
{
if( IntrNo==1 )
{
InjectIrqInfo = 0x80000300 | 0xEE ;
WriteVMCS( VMX_VMCS_CTRL_ENTRY_INSTR_LENGTH, ExitInstructionLength);
WriteVMCS( VMX_VMCS_CTRL_ENTRY_IRQ_INFO, InjectIrqInfo);
DbgPrint("VMX int 1\n");
goto Resume;
}
这时候 EAX 的值是 1 应该就是 int 1 的序号
InjectIrqInfo = 0x80000300 | 0xEE ;
WriteVMCS( VMX_VMCS_CTRL_ENTRY_INSTR_LENGTH, ExitInstructionLength);
WriteVMCS( VMX_VMCS_CTRL_ENTRY_IRQ_INFO, InjectIrqInfo);
这段代码是我在网上抄写别人的,意思是向Guest注入一个异常,让Guest的中断处理程序能够继续处理,其中 0x80000300 | 0x1;就是int 1,我没找到 写入 int 1 地址的方法,我就想了另外一个办法,就是HOOK int 0xee 这个改为0x80000300 | 0xEE ; 但是还是蓝屏 。
弄二胡了,请大家帮忙,提示下 这种情况 int 1 地址 应该从那里写入。。。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)