-
-
[分享]VT那些事续集:中断重定向的那些事儿
-
发表于:
2012-1-7 05:02
12228
-
谈谈中断重定向
只谈3个中断int1,int3,int0E
首先int3,这个简单这货是软的
直接改个idt号,设置valid=1,Error=0,type=6,write进去event,write进去len
其次是int1,这个比较复杂
要读出来dr7,dr6然后改一下dr6,然后改idt号,设置valid=1,error=0,type=3,event写进去,len不写~(如果觉得不保险可以多此一举把rip保持原始状态就是把guest_rip写成读出来的guest_rip)
最后是int0E,这个跟int1差不多,不过不大一样
首先要读exit_qualification,把exit_qualification写入cr2
接着读INTR_ERROR_CODE,把INTR_ERROR_CODE写入EXCEPTION_ERROR_CODE
然后改idt号,valid=1,error=1,type=3,event写进去,len不写~(如果觉得不保险可以多此一举把rip保持原始状态)
PS:
VMExit进入Exception部分的时,Valid会被设置成0,如果直接照抄INTR_INFO原始Valid会很操蛋~
严重声明:本帖给出的任何东西仅供研究学习之用,如果用在他途,各种后果与本人无关。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!